reponの勉強メモ

主に勉強したことのメモです。

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名 < ダンプファイル