【GCP】Google Compute Engine (GCE)上のdockerに構築したMySQLのバックアップをGoogle Cloud Storage (GCS)上にアップロードするやり方です。
GCE→GCSへの書き込み権限設定
まずはGCEからGCSへの書き込み権限を設定します。
GCEを編集モードにし(つまりGCEを一度停止しなければなりません)、『アクセス スコープ』から『ストレージ』のアクセス権を”読み取り/書き込み”に設定します。
Docker上のMySQLのバックアップを行う
下記のコマンドで実現できます。必要に応じてsudoで実行して下さい。
username、password、dbname、dbname_backupはご自身の環境に応じて書き換えて下さい。
$ docker exec mysql mysqldump -uusername -p'password' dbname > dbname_backup.sql
ファイルをGCSへバックアップする
GCSへ事前にbucketを作成しておいて下さい。
下記のコマンドを実行します。
gsutilがインストールされていない場合には、インストールして下さい。
dbname_backup.sql、bucket_nameは自分の環境で置き換えて下さい。
/snap/bin/gsutil cp dbname_backup.sql gs://bucket_name/dbname_backup.sql
参考)シェルスクリプトでバックアップを自動化
下記のようなシェルスクリプトを組んでcronに設定すると、バックアップ→GCSへのアップロードを自動化することができます。(7日分のバックアップを取得するようにしています。)
#!/bin/bash
#カレントディレクトリの設定
cd `dirname $0`
#既存ファイルの削除
rm backup.zip
#バックアップの実行
docker exec mysql mysqldump -uusernae -p'password' dbname > dbname_backup.sql
#zip化
zip backup.zip dbname_backup.sql
#sqlファイルを消す
rm dbname_backup.sql
#バックアップファイルは7日分保存する
/snap/bin/gsutil cp gs://bucket_name/6.zip gs://bucket_name/7.zip
/snap/bin/gsutil cp gs://bucket_name/5.zip gs://bucket_name/6.zip
/snap/bin/gsutil cp gs://bucket_name/4.zip gs://bucket_name/5.zip
/snap/bin/gsutil cp gs://bucket_name/3.zip gs://bucket_name/4.zip
/snap/bin/gsutil cp gs://bucket_name/2.zip gs://bucket_name/3.zip
/snap/bin/gsutil cp gs://bucket_name/1.zip gs://bucket_name/2.zip
/snap/bin/gsutil cp backup.zip gs://bucket_name/1.zip