バックアップと復元

ここでは、アプリケーションが Google Cloud Datastore に保存するデータのバックアップ方法と復元方法について説明します。

始める前に

  1. プロジェクトにストレージ バケットを作成します(まだ行っていない場合)。必要に応じて、プロジェクトの App Engine デフォルト サービス アカウントにこのバケットへのアクセス権があることをアクセス制御リストで確認します。これはすでにデフォルトで設定されていることがあり、必要に応じてこれに優先する設定を指定できます。
  2. Cloud Datastore 管理アクセスを有効にします(まだ行っていない場合)。

データをバックアップする

データの復元またはエクスポートに使用するバックアップ ファイルを作成するには:

  1. (推奨)Cloud Datastore への書き込みを無効にします
  2. [管理] ページに移動します。

    [管理] ページに移動

  3. [データストア管理を開く] をクリックします。

  4. バックアップを作成するエンティティの種類を選択します。
  5. [Backup Entities] をクリックして、バックアップ フォームを表示します。
  6. 日付スタンプを含むバックアップ名が表示されます。

    1 日に複数のバックアップを作成する場合には、この値を変更してください。同じ名前のバックアップが存在すると、バックアップは作成されません。

  7. バックアップ ジョブではデフォルトのキューが使用されます。ほとんどの場合、キューを変更する必要はありません。

    バックアップと復元にデフォルト以外のキューを使用する場合には、queue.yaml で対象として ah-builtin-python-bundle のみを指定できます。その他の対象は使用できません。

  8. バックアップ ストレージの場所として Google Cloud Storage を選択します。

  9. Cloud Storage を選択すると、バックアップを保存するバケット名を [BUCKET_NAME] の形式で入力するように求めるプロンプトが表示されます。[BUCKET_NAME]/backups/foo のようにディレクトリ構造を後に付けたバケット名を指定することもできます。指定したフォルダがない場合には作成されます。

    注: /gs/[BUCKET_NAME] のようにバケット名の前に /gs/ を追加することもできます。

  10. [Backup Entities] をクリックして、バックアップ ジョブを開始します。ジョブのステータス ページが表示されます。 ジョブ ステータスをバックアップする

  11. [Back to Datastore Admin] をクリックして、バックアップのステータスを確認します。
  12. バックアップが完了したら、無効になっている Cloud Datastore への書き込みを有効に戻します

バックアップを中止する

バックアップ ジョブの実行中は、Cloud Datastore 管理画面の [Pending Backups] リストにジョブが表示されます。

実行中のバックアップを停止するには:

  1. [管理] ページに移動します。

    [管理] ページに移動

  2. [データストア管理を開く] をクリックします。

  3. [Pending Backups] 画面で、リストからバックアップを選択して [Abort] をクリックします。

バックアップ ジョブを中止すると、App Engine はその時点までに保存されていたバックアップ データを削除します。ただし、中止後に一部のファイルが残る場合があります。中止オペレーションの完了後に、Google Cloud Storage でバックアップに選択した場所に移動して、これらのファイルを削除してください。このようなファイルの名前は、datastore_backup_[BUCKET_NAME] というパターンで始まっています。

バックアップに関する情報を検索する

エンティティの種類、Google Cloud Storage 内での保存場所、開始時間と終了時間などのバックアップ情報の確認が必要になる場合があります。バックアップの情報を表示する手順は次のとおりです。

  1. [管理] ページに移動します。

    [管理] ページに移動

  2. [データストア管理を開く] をクリックします。

  3. [Backups] または [Pending Backups] リストで、1 つ以上のバックアップを選択します。
  4. [Info] をクリックすると、これらのバックアップの情報が表示されます。
  5. [Back] をクリックして、メインの Cloud Datastore 管理画面に戻ります。

データを復元する

バックアップから復元するには:

  1. (推奨)アプリケーションで Cloud Datastore への書き込みを無効にします。復元したデータと Cloud Datastore に新しく書き込まれるデータとの間で矛盾が生じないように、この操作を行ってください。
  2. [管理] ページに移動します。

    [管理] ページに移動

  3. [データストア管理を開く] をクリックします。

  4. 利用可能なバックアップのリストで、復元するバックアップを選択します。
  5. [Restore] をクリックします。
  6. 確認のページが開き、チェックボックス付きのエンティティが表示されます。デフォルトでは、すべてのエンティティが復元されます。復元しないエンティティのチェックボックスをオフにします。
  7. このページには、復元に使用されるデフォルトのキューも表示され、事前に定義されたパフォーマンス特性が設定されています。別のパフォーマンス特性のキューが必要な場合には、異なる設定のキューに変更します。ただし、選択したキューの queue.yaml で対象に ah-builtin-python-bundle が指定されている必要があります。
  8. [Restore] をクリックして、復元を開始します。ジョブ ステータス ページが表示されます。
  9. [Back to Datastore Admin] をクリックして、復元のステータスを表示します。 ステータスを復元する
  10. 復元の完了後、書き込みが無効になっている場合には、アプリケーションからの Cloud Datastore への書き込みを有効に戻します

別のアプリケーションにデータを復元する

Google Cloud Storage でデータをバックアップすると、バックアップの作成で使用したアプリケーションと異なるアプリケーションにバックアップを復元できます。

別のアプリケーションにバックアップ データを復元するには:

  1. 次の権限を使用して、ソース アプリケーションのストレージ バケットで、Identity and Access Management(IAM)ポリシーを作成します

    • メンバー: [PROJECT_ID]@appspot.gserviceaccount.com
    • 役割: Storage Legacy Bucket ReaderStorage Legacy Object Reader

    [PROJECT_ID] は、復元先のアプリケーションのプロジェクト ID です。

  2. 元のアプリケーションで新しいバックアップを作成します。

  3. (推奨)復元したデータと Cloud Datastore に新しく書き込まれたデータの間で矛盾が発生しないように、復元先のアプリケーションで Cloud Datastore の書き込みを無効にします

  4. 復元先のアプリケーションの [管理] ページに移動します。

    [管理] ページに移動

  5. [データストア管理を開く] をクリックします。

  6. [Import Backup Information] というラベルが付いたボタンの横のテキストボックスに、バックアップが存在する元のアプリケーションのバケットを /gs/[BUCKET_NAME] という形式で指定します。 ストレージ バケットをバックアップする
    または、特定のバックアップのファイル ハンドルを指定します。バックアップのファイル ハンドルを表示するには、元のアプリケーションの [管理] ページを開いてバックアップを選択し、[情報] をクリックします。[Handle] の横にファイル ハンドルが表示されます。
  7. [Import Backup Information] をクリックします。
    バックアップをハンドルで指定しなければ、指定したバケットで利用可能なバックアップが表示されます。必要なバックアップを選択して、次のいずれかをクリックします。
    • Add to backup list: アプリケーションで利用可能なバックアップのリストにバックアップを残す場合。
    • Restore from backup: このバックアップを復元し、アプリケーションで利用可能なバックアップのリストに残さない場合。
  8. 確認のページが開き、チェックボックス付きのエンティティが表示されます。デフォルトでは、すべてのエンティティが復元されます。復元しないエンティティのチェックボックスをオフにします。
  9. このページには、復元に使用されるデフォルトのキューも表示され、事前に定義されたパフォーマンス特性が設定されています。別のパフォーマンス特性のキューが必要な場合には、異なる設定のキューに変更します。
  10. [Restore] をクリックして、復元を開始します。ジョブ ステータス ページが表示されます。
  11. 復元の完了後、無効になっている Cloud Datastore への書き込みを有効に戻します

リソースの使用状況を確認する

頻繁にバックアップを実行すると、コストが高くなる可能性があります。データストアの管理ジョブを実行すると、実際には基盤となる MapReduce ジョブを実行することになります。MapReduce ジョブによって、ストレージ オペレーションとストレージの使用率に加えて、フロントエンド インスタンス時間が増加します。

リソースの使用状況を確認するには:

  1. Cloud Platform Console の [App Engine] ページを表示します。

    [App Engine] ページに移動

  2. ページの先頭にあるプルダウン メニューで default サービスを選択して、ah-builtin-python-bundle バージョンを選択します。

バックアップと復元に関する考慮事項

バックアップと復元機能を使用すると、誤って削除したデータの復元やデータのエクスポートを行うことができます。バックアップするエンティティの種類を選択することも、必要なバックアップだけを復元することもできます。

バックアップは Google Cloud Storage に保存されます。

バックアップにインデックスは含まれません。復元後、アプリケーションと一緒にアップロードされたインデックス定義を使用して、必要なインデックスが自動的に再構築されます。

バックアップ ファイルを使用して、Google BigQuery などの他の Google Cloud Platform サービスにデータをエクスポートすることもできます。

復元では、エンティティに新しい ID は割り当てられません。復元では、バックアップ作成時の ID が使用されます。同じ ID のエンティティはすべて上書きされます。エンティティの復元が完了するまで ID は保持されます。これにより、復元の実行中に書き込みが有効になっても、新しいエンティティと ID が競合することはありません。バックアップ後に追加された新しいエンティティは維持されます。

バックアップからすべてのデータを復元することも、特定の種類のエンティティだけを復元することもできます。また、Cloud Storage でバックアップを作成している場合、バックアップ元と異なるアプリケーションにデータを復元することもできます。

次のステップ

外出先でもリソースをモニタリング

Google Cloud Console アプリを入手して、プロジェクトの管理にお役立てください。

フィードバックを送信...

Cloud Datastore のドキュメント