現在業務委託でRailsアプリを使ってスクレイピングでデータ収集のお手伝いをさせていただいてるのですが、Docker環境を使っているため何かの拍子にうっかりvolume等を削除してしまったら大変なので、処理が終わるたびにデータのバックアップを取ってます。(レコード数33万件ほどある)
その方法をご紹介します!
バックアップ手順
バックアップデータを突っ込みたいファイルをRailsのrootディレクトリにつくり以下のコマンドを実行する。
$ docker exec -it CONTAINER_NAME(例:myapp_db_1) mysqldump DATABASE_NAME(例:myapp_developmentなど) > backup.sql
リストア(インポート)手順
取り込みたいバックアップファイル(dump.sql)をRailsのrootディレクトリにつくり以下のコマンドを実行する。
$ docker cp dump.sql mydocker_db_1:/tmp/dump.sql
$ docker exec -it myapp_db_1 bash
$ mysql -u USER_NAME -p -h HOST_NAME(database.ymlのhost名,dbとか) DB_NAME(myapp_developmentなど) < /tmp/dump.sql
docker exec -it myapp_db_1 bashでコンテナ内に入り、mysqlコマンドでインポートできます!
今後はデータのバックアップも自動化できればなおいいと思うので挑戦していきたいです!
以上です!
読んでいただきありがとうございます!
ご指摘などあればコメントいただけると嬉しいです!