【GCP】GCE上のdockerに構築したMySQLのバックアップをGCS上にアップロードする


【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

コメントを残す

メールアドレスが公開されることはありません。

thirteen − two =

%d人のブロガーが「いいね」をつけました。