laravel8で、s3に大量のファイルをアップロードしてるとs3keyを保持しつつmigrateしてテーブルを作り直したかったので、backup用DBインスタンスを作って避難場所にしてみた。php artisan migrate:fresh –seedした時にinsertするコードも書いてみた。同じMySQLサーバ内なら、だいたい10万レコード/秒くらいでコピーしてくれた。

laravel8で、s3に大量のファイルをアップロードしてるとs3keyを保持しつつmigrateしてテーブルを作り直したかったので、backup用DBインスタンスを作って避難場所にしてみた。php artisan migrate:fresh –seedした時にinsertするコードも書いてみた。同じMySQLサーバ内なら、だいたい10万レコード/秒くらいでコピーしてくれた。

既存のlaravelテーブルから、backupデータベースに同じテーブルを作成する

backupデータベースからlaravelテーブルに戻す

バックアップしたいテーブルの分だけSQLを書く。
何十万レコードもあると、seederで毎回作るも大変なので、こうやってbackup用DBインスタンスに避難して置くと、良いと思う。

実際にやってみると、手動でSQL文を実行するのがめんどい。
php artisan migrate:fresh –seed した時に、このSQLを自動実行させたいので
database/seeders/DatabaseSeeder.phpにバックアップからレコードコピーする記述を書いておく

同じMySQLサーバ内なら、だいたい10万レコード/秒くらいでコピーしてくれた。