kawabatas技術ブログ

試してみたことを書いていきます

CloudSQLの日時バックアップを復元

本番 DB のデータで SQL 実行を試したいとき、

特定のテーブルを mysqldump して、ローカルの DB に入れたりするより、

インスタンスを作成して、日時バックアップをそちらにリストアするのが最速だと感じているので、メモしておきます。

cloud.google.com

Step1. 別インスタンスを作成する

GCP コンソールでポチポチで良い

Step2. バックアップの id を取得する

例えば、GCP プロジェクト「abc_prod」、CloudSQL インスタンス「abc_prod_instance」の場合

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://www.googleapis.com/sql/v1beta4/projects/abc_prod/instances/abc_prod_instance/backupRuns

f:id:kawabatas:20201023120356p:plain

Step3. 別インスタンスにバックアップをリストアする

request.json を用意する

{
  "restoreBackupContext":
  {
    "backupRunId": "1603342800000",
    "project": "abc_prod",
    "instanceId": "abc_prod_instance"
  }
}

例えば、GCP プロジェクト「def_test」、CloudSQL インスタンス「def_test_instance」にリストアする場合

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://www.googleapis.com/sql/v1beta4/projects/def_test/instances/def_test_instance/restoreBackup