鶏口牛後な日々

魔法使い(なんでも作れるエンジニア)を目指してます。ブログは発散中

PHP LaravelでMySQLのdumpを定期的に作ってバックアップを取る

やりたいこと

サービスの操作履歴をテーブルで保存しているのですが、これは1日にえらい数になるので、できるだけ定期的にdumpを作ってどこか別の場所に保存するようにしたい。

CSVかTSVで吐き出す

Apacheのログを保存しておくとか、監査ログを取っておく専用のツール(Auditというらしい)があったりするらしい。 だが、一番わかりやすいのはテーブルに操作履歴テーブルを作っておいて保存するやり方だったので、それでやることにした。

dumpは、sqlファイルで持つのかな? と思っていたが、csvかtsv形式でやることもよくあるらしい。 となると、csvで吐き出すバッチを作る必要がある。

こちらが簡便にやり方を書いてくれているので、メモ。

Laravel側で便利な chunk() メソッド

さらに、Laravel側では、chunk() というメソッドがあるらしい。 何かと言うと、200件ずつ取ってきてくる、と言ったことができる。 foreachだけだと、一件一件DBにみに言ってしまうので、とても時間がかかるところ、200件まとめて取ってきてからforeachにかけてくれるので、メモリの利用量が減るのだとか。

自分用メモ。