タイトルのとおり、Docker-Compose上に動いているMysql(またはMariadb)のバックアップを取る手順について備忘録も兼ねて書き残しておきます。ちなみに、主の環境はubuntu+docker+mariadbです。mysqlかmariadbかは好みによって好きな方を選んで構いません。
# 1 docker-compose.ymlの記述と起動
特別な記述は一切無い最低限のシンプルなサンプルコードです。実際の運用は用途や状況に合わせて書き換えて下さい。公開するポートも3306からは変えても良いかもしれません。
上記の設定でdocker-compose up -d
したと仮定します。
# ダンプファイルの保存
通常、mysqlの保存はダンプファイルという形でバックアップが取られます。ここではdocker-compose内で動いているmysqlに対し、ホスト側からバックアップを取るシェルスクリプトを用意します。
ファイルパスやファイル名の命名規則、ユーザー名パスワードなどは自分の環境や状況に合わせて書き換えて下さい。バックアップは最新の5件を残すようにしているので6件目以降を削除するようにしています。仮に10件残すのであれば11件目以降を削除するように適宜書き換えて下さい。
シェルスクリプトが出来上がったら一度テストして問題ないようであればcrontab
で毎日0時0分に実行とすれば一日一回バックアップが取られるようになります。時間は0時0分でなくとも構いませんが。
# 出来れば他のストレージに
今回はお試しなので同じサーバ(またはPC)上に保存ですが、可能な人はAWS S3などの別の場所に保存するようにした方が良いでしょう。
# 保存されたダンプファイルからデータベースを復元する
万が一、データベースが致命的なダメージを受けた時はバックアップデータの出番です(一生に一回あるかどうかって話だと思いますが)。バックアップされたダンプファイルからデータベースとして復元するまでの手順も書き残しておきます。
子のスクリプトでdocker-compose上に動くmysqlを復元する事が出来るでしょう。こちらもファイルパス、ファイル名やユーザー名パスワード等は環境に合わせて書き換えて下さい。バックアップを使う機会はほとんど無いと思いますがお守り代わりに覚えておくといいでしょう。