PHP LaravelでMySQLのdumpを定期的に作ってバックアップを取る
やりたいこと
サービスの操作履歴をテーブルで保存しているのですが、これは1日にえらい数になるので、できるだけ定期的にdumpを作ってどこか別の場所に保存するようにしたい。
CSVかTSVで吐き出す
Apacheのログを保存しておくとか、監査ログを取っておく専用のツール(Auditというらしい)があったりするらしい。 だが、一番わかりやすいのはテーブルに操作履歴テーブルを作っておいて保存するやり方だったので、それでやることにした。
dumpは、sqlファイルで持つのかな? と思っていたが、csvかtsv形式でやることもよくあるらしい。 となると、csvで吐き出すバッチを作る必要がある。
こちらが簡便にやり方を書いてくれているので、メモ。
Laravel側で便利な chunk()
メソッド
さらに、Laravel側では、chunk()
というメソッドがあるらしい。
何かと言うと、200件ずつ取ってきてくる、と言ったことができる。
foreachだけだと、一件一件DBにみに言ってしまうので、とても時間がかかるところ、200件まとめて取ってきてからforeachにかけてくれるので、メモリの利用量が減るのだとか。
自分用メモ。