dockerコンテナ上のmariadbのバックアップとリストア
バックアップ
docker-compose
を使っていて、docker-compose ps
コマンドで確認できるコンテナの名前が db_1
だとすると、起動中のコンテナに対して
$ docker-compose exec db_1 mysqldump -u ユーザー名 -p -P ポート番号 -h ホスト(127.0.0.1) DB名 > DB名.dump_$(date +%Y%m%d%H%M%S).sql
で、日付時間をファイル名としたダンプファイルが生成される。パスワードを要求されるのでデータベースのパスワードを入力すること。
作成したら必ず ls -alh
でサイズを見る。小さければ失敗している。エディタで開いて確認。
リストア
まずコンテナにダンプファイルをコピーする。
docker ps
コマンドで確認できるコンテナの名前がdb_1
だとすると、起動中のコンテナに対して
docker cp ダンプファイル名 db_1:/
で、コンテナのルートディレクトリにコピーされる。
次に、コンテナに入ってリストア
$ docker-compose exec db_1 /bin/bash
% mysql -u ユーザー名 -p -D DB名 < ダンプファイル