LoginSignup
3

More than 5 years have passed since last update.

Datastoreのスケジュールバックアップを新方式へ移行

Posted at

Cloud Datastore Admin バックアップが2019/2/28に廃止となってしまうので新方式に移行してみました。

Cloud Datastore : フルマネージドのエクスポートとインポート機能を正式リリース

エクスポートのスケジューリングを参考にして進めていきます。

バックアップ用GCSバケット作成

gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] gs://[BUCKET_NAME]/

Cloud Storage バケットと Cloud Datastore で同じロケーションを使用する必要があります。
Datastoreのロケーションの確認方法

権限をApp Engineのデフォルトサービスアカウントに割り当てる

Cloud Datastore Import Export Admin

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member serviceAccount:YOUR_PROJECT_ID@appspot.gserviceaccount.com \
--role roles/datastore.importExportAdmin

Cloud Storage バケットの書き込み権限

gsutil iam ch serviceAccount:YOUR_PROJECT_ID@appspot.gserviceaccount.com:objectCreator \
gs://BUCKET_NAME

アプリケーションファイル

Application files

基本は参考URLのままですが、 cron.yaml を修正しました。
※これを書いている時点では、日本語ドキュメントがベータ版のままで cloud_datastore_admin.py のコードが古いため英語ページからコードをコピーしました。

  • kind パラメータを追加しエクスポート対象のKindを指定する
  • schedule を時間指定にする
  • timezone を日本時間にする
cron.yaml
cron:
  - description: "Daily Cloud Datastore Export"
    url: "/cloud-datastore-export?namespace_id=&\
        kind=Kind1&\
        kind=Kind2&\
        output_url_prefix=gs://BUCKET_NAME[/NAMESPACE_PATH]"
    target: cloud-datastore-admin
    schedule: 'every day 00:00'
    timezone: Asia/Tokyo

デプロイ

gcloud app deploy app.yaml cron.yaml --project YOUR_PROJECT_ID

テスト

  1. Cron ジョブページを開いて、Daily Cloud Datastore Exportジョブの[今すぐ実行] をクリックする
  2. ジョブが完了するのを確認したら、Cloud Storage ブラウザを開いて、作成したバケットにエクスポートがあるのを確認する

インポート

default namespaceに、 Kind1 , Kind2 Kindをインポートする場合

gcloud datastore import gs://[BUCKET_NAME]/[PATH]/[FILE].overall_export_metadata --namespaces='(default)' --kinds='Kind1','Kind2' --project=YOUR_PROJECT_ID

エクスポート時と同様にCloud Storage バケットと Cloud Datastore で同じロケーションを使用する必要がありました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3