nouhau icon indicating copy to clipboard operation
nouhau copied to clipboard

Cloud Datastore Import/Export Example

Open sinmetal opened this issue 6 years ago • 1 comments

Exportした内容を別のGCP ProjectにImportしようとすると、地味にハマる

IAM

https://cloud.google.com/datastore/docs/export-import-entities?hl=en#permissions

だいたいドキュメントに書いてあるとおりだが、Importを実行しているのは {projectid}@appspot.gserviceaccount.com のようなので、こいつをRoleを割り当ててやる必要がある。

Kind指定

うまいやり方があるのかもしれないが、 sinmetalが試した限りでは、全Kind Importするか、指定した1つのkindしかImportすることができなかった。 また、kindを指定する場合、Exportする側も1つのkindだけ指定してExportしておく必要があった。

以下はHoge Kindのみを持っていきたい時の gcloud datastore のサンプル。 Export時に overall_export_metadata を末尾に持つファイルが複数できあがるが、指定するのは最もrootにいる overall_export_metadata を指定する。

Export

gcloud datastore export --async --kinds='Hoge' gs://datastore-backup/hoge

Import

gcloud datastore import --kinds='Hoge' gs://datastore-backup/hoge/hoge.overall_export_metadata

sinmetal avatar Mar 13 '18 08:03 sinmetal

私が試したところExport時に --kinds を複数指定しておけばImport時に個別指定ができました。Kind未指定でExportした場合は一括復元しかできません。

Export

gcloud datastore export gs://datastore-backup/hoge --kinds='hoge,fuga,piyo,gero' --async

Import

Kind未指定・全指定でバックアップ内容を全て復元

gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --async

gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --kinds='hoge,fuga,piyo,gero' --async

Export時に指定したKindの一部だけの復元も可

gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --kinds='hoge' --async

ryo-yamaoka avatar Jan 21 '19 09:01 ryo-yamaoka