CloudSQLのコピー
test1環境のCloudSQLのデータをtest2環境のCloudSQLにコピーする方法です
GCP環境間のやり取りだけで済む方法です
gcloudログインされていない場合は先にログインしておいてください
https://cloud.google.com/sdk/gcloud/reference/auth/login?hl=ja
1. コピー元の環境をセット
コピー元の環境をセット
$ gcloud config set project test1
2. storageの作成
- GCPコンソールからexportファイル用のstorageを作成
3. storage権限を付与
- GCPコンソールのSQLからサービスアカウントをコピー
exportするSQLのサービスアカウントの場所は以下の画像を参照
-
権限付与のコマンドを叩く
-
gs://*****
はstorageのリンク
-
$ gsutil iam ch serviceAccount:hogehoge@gcp-sa-cloud-sql.iam.gserviceaccount.com:admin gs://*****
4. Export
- コピー先のstorageは出力するファイル名も記載する
- もしregionでエラーが出るのであれば、エラーメッセージに記載されているregionでstorageを作り直す
$ gcloud sql export sql [コピー元のSQLインスタンス名] [コピー先のstorage/ファイル名] -d [コピー元のデータベース名]
5. コピー先の環境をセット
コピー先の環境をセット
$ gcloud config set project test2
6. Import先(test2)の権限設定
test2のSQLのサービスアカウントにコピー先(test1)のstorageに対する権限を付与する
$ gsutil iam ch serviceAccount:hugahuga@gcp-sa-cloud-sql.iam.gserviceaccount.com:admin gs://*****
7. Import
データベース名は指定しなくても問題ないです
gcloud sql import sql [コピー先のSQLインスタンス名] --async [コピー先のstorage/ファイル名]
以上です