laravel-db-snapshotsを使用すると、Laravel で DBの構造とデータをまとめてバックアップ / リストア することができます。 (データのみの取得はできないようです。)
composer コマンドでインストールします
composer require spatie/laravel-db-snapshots
インストールを確認します。
php artisan
snapshot
snapshot:create Create a new snapshot.
snapshot:delete Delete a snapshot.
snapshot:list List all the snapshots.
snapshot:load Load up a snapshot.
config/filesystems.php:56
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
// ここから追加
'snapshots' => [
'driver' => 'local',
'root' => database_path('snapshots'),
],
// ここまで追加
(実際のディレクトリはバックアップを取るときに自動作成されます)
テストで database/snapshots/my-first-dump.sql を作成します
php artisan snapshot:create my-first-dump
ファイル名を日付にしてもいいと思います。
php artisan snapshot:create 2019_03_12
何度もとるなら時刻も入れておくといいと思います。
php artisan snapshot:create 2019_04_16__03_19_00
なお 同名のファイルの場合は上書き されますので注意してください。
php artisan snapshot:create
Creating new snapshot...
Snapshot `2019-06-04_08-06-49` created (size: 1.37 MB)
2019-06-04_08-06-49 というフォーマットで自動的にファイル名を命名してバックアップを取ってくれます。
バックアップファイル一覧の確認
php artisan snapshot:list
一覧の Name を指定してリストアを実行します。
リストアの実行
php artisan snapshot:load <バックアップName>
本番環境 (.env に APP_ENV=production が設定されている場合)ではリストアはエラーとなります。
一時的に戻します
.env
APP_ENV=production
↓
APP_ENV=local
これで実行できます。 .env ファイルの中身は戻しておきましょう
参考: FTPにバックアップを取る場合は
http://bit.ly/35EXQwg
http://bit.ly/34BWLUT
mysqldumpコマンドを使ってバックアップを作成するのでこちらのコマンドを実行できるようにすればdocker環境でも使用することができます