サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

バックアップ/復元、コピー、データ削除



アプリケーションのデータストアを有効にする

データストア管理タブのこの機能を使用するには、管理コンソールのアプリケーション設定のページであなたのアプリケーションのデータストア管理(Datastore Admin)を有効にする必要があります。 画面左側のナビゲーションメニューにあるデータ(Data)という見出しの配下、データストア管理(Datastore Admin)をクリックし、その後表示されたページのデータストア管理を有効にする(Enable Datastore Admin)をクリックします。



データ管理機能を使う際の注意事項

  • 複製、削除、バックアップをした場合、最新の更新が反映されていない場合があります。
  • 全てのデータストア管理操作はアプリケーション内で発生するので、割り当て量としてカウントされます。
  • バックアップや復元をする間は、あなたのアプリケーションを読み取り専用モードに設定することを強く推奨します。
  • エンティティをリモート対象にコピーしたりバックアップから復元したりする場合、同じキーを持つ全てのエンティティは上書きされます。 重複が作成される危険もなく、操作を複数回実行できます。コピー/復元操作では余分なデータの削除は行われないので注意してください。
  • If a non-default queue is chosen for backup/restore, it must not have any target other than ah-builtin-python-bundle specified in queue.yaml.

非常に頻繁にバックアップを行うと、費用が高くなります。 あなたがデータストア管理ジョブを実行する時、実際にはその下で動くMapReduce ジョブを実行しています。 MapReduce jobs cause frontend instance hours to increase on top of Storage operations and Storage usage. リソース使用状況を常に把握するには、:

  1. 管理コンソールのページから、画面左にあるナビゲーションの メイン(Main) 配下にある ダッシュボート(Dashboard)をクリックしてください。
  2. ページ上部にあるバージョン(Version)と書かれたドロップダウンメニュから ah-builtin-python-bundleを選んでください。


データのバックアップと復元

全てのエンティティ、もしくは指定した種類のテンティティのみをバックアップすることができ、必要な時にその中のどれかを復元することができます。 バックアップと復元の機能は、不慮のデータ削除からの復旧を助けたり、データをエクスポートできるようにするためのものです。

また、Cloud Storageに保存されたバックアップデータを使ってBigQueryのような他のクラウドプラットフォームにデータをエクスポートすることもできます。

縛アップから復元をした時、バックアップ以降に新しく追加されたエンティティはそのまま保持され、バックアップ時に存在してバックアップ後に変更されたエンティティは、バックアップの値で上書きされます。 バックアップから全てでのデータを復元することも、指定した種類のエンティティだけを復元することもできます。 さらに、この機能を使ってあるアプリデータのバックアップを他のアプリ(バックアップにCloud Storageを使用していることが条件)に復元することもできます。



バックアップと復元に関する制限

既定では、一日につきバックアップは100GB、復元は100 GBまで制限されます。



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

To create a back up file for future data restores for exporting:

  1. まだ準備ができていない場合は、バックアップ用の Cloud Storage bucket を設定する必要があります。 あなたのアプリの既定bucketは既に設定が全てされており、無料割り当て量を持ち、 課金設定をする必要がありません。そのため、この既定bucket を使ってバックアップをするのが最も簡単な方法です。
    1. 管理コンソールApplication Settings > Basics配下で、 Determine whether you have a default bucket set up by locating the bucket . 既定の bucket が設定されている場合は、Google Cloud Storage Bucketの下にその名前が一覧表示されています。 名前は通常 <App ID>.appspot.comの形式になっています。
    2. 既定の bucketが表示されていない場合、Application Settings > Cloud Integrations > Createを使ってそれを作成してください; その処理が完了するまで数分かかります。
    3. 既定のbucketを使用したくない場合、Google 開発者コンソールでCloud Storage とあなたのアプリの課金を有効にした後で、独自のbucket を作成することができます。
  2. 管理コンソールData項目にあるDatastore Admin 画面を開きます。
  3. バックアップしたいエンティティの種類を選んでください。
  4. Backup Entities をクリックしてバックアップフォームを表示してください。
  5. 既定のキューがバックアップジョブに使用されるので注意してください; ほとんどの場合はこれを使用することになります。 これを他のキューに変更する必要がある場合は、 make sure the queue used does not have any target specified in queue.yaml other than ah-builtin-python-bundle.
  6. バックアプ名が設定されて、それには日付スタンプが含まれることに注意してください。 既に同じ名前のバックアップが存在する場合はバックアップが作成されないので、一日で複数回バックアップを作成する場合はこの値を変えなければなりません。
  7. バックアップの保存先には Google Cloud Storage を選びます。
  8. Cloud Storageを選ぶと、バックアップが保存されるbucket 名(/my_bucket_name形式)を求められます。 任意で、bucket 名にディレクトリ構造を付けて設定することができます。(例えば、 /bucket_name/backups/backup1): これらのフォルダが既に存在しない場合、フォルダの作成が行われます。 注意: 古いバージョンの App Engineでは、ユーザーは /gs/bucket_name形式を使用する必要があります。頭に /gs/を付けてもこれまでどおり動作しますが、もうそれは必須ではなくなりました。
  9. Backup Entitiesをクリックしてバックアップジョブを開始してください。ジョブステータスのページが表示されるので注意してください。
  10. 書き込みを無効にしていた場合は、アプリケーションの データストアの書き込みを再度有効にしてください。


バックアップを中止する

バックアップが現在実行中の場合、そのジョブはデータストア管理画面の Pending Backups一覧に表示されます。 一覧からバックアップを選んでAbortをクリックすることで、実行中のバックアップを停止することができます。 バックアップジョブを中止した時、 App Engineはその時点までに保存されたデータを削除しようとします。 しかし、場合によっては中止後にいくつかのファイルが残ることもあります。 バックアップに選んだ場所でそういったファイルを見つけたら、中止が完了した後でそれらを安全に削除できます。 それらのファイルの名前は、次のようなパターンから始まります:datastore_backup__your_backup_name_



バックアップについての情報を調べる

どういった種類のエンティティが保存されているか、保存場所、開始時間と終了時間といったバックアップについての詳細情報を知りたいことでしょう。 バックアップの情報を表示するには:

  1. Backups もしくは Pending Backups の一覧上で一つ以上のバックアップを選びます。
  2. これらのバックアップの情報を表示するには Info をクリックします。
  3. メインのデータストア管理画面に戻るには Back をクリックします。


定期バックアップ

App Engine Cron サービスを使って、バックアップを定期的に実行することができます。詳細については定期バックアップを参照してください。



データを復元する

データから復元をするには:

  1. 必要に応じて、あなたのアプリでデータストアの書き込みを無効にします。 (復元用データと新たにデータストアに書き込まれたデータの衝突を避けるために、通常はこれを行ったほうが良いでしょう。)
  2. 管理コンソールのData項目にあるデータストア管理画面を開きます。
  3. 使用可能なバックアップ一覧の中で、復元したいバックアップを選びます。
  4. Restoreをクリックします。
  5. 表示された アドバイザリーページには、チェックボックスの付いたエンティティの一覧があるでしょう。既定では、エンティティは全て復元されます。 復元したくないエンティティは横のチェックボックスのチェックをはずしてください。
  6. また、アドバイザリーページでは、あらかじめ設定されたパフォーマンス設定の既定キュー,が復元ジョブに使用されているのが分かるでしょう。 Change this to another queue that you have configured differently if you need different queue performance characteristics, making sure the queue chosen does not have any target specified in queue.yaml other than ah-builtin-python-bundle.
  7. Restoreをクリックして復元を開始してください。 ジョブステータスページが表示されるでしょう。
  8. 書き込みを無効にしていた場合は、アプリケーションの データストアの書き込みを再度有効にしてください。


データを別のアプリに復元する

アックアップを作成するのに使用したアプリ以外にも、バックアップを復元することができます。

あるアプリから別のアプリにバックアップデータを復元するには:

  1. Google 開発者コンソールでバックアップに使用するbucket を持つプロジェクトを探し、 対象のアプリ(the app you are restoring to)を編集権限を付けてプロジェクトチームに加えます。
  2. データを複製するアプリケーションで新しくバックアップを作成します。 前の手順で設定した権限は遡って既存のバックアップに適用はされることはないので、対象アプリはこれら以前のバックアップにアクセスすることはできません。 対象アプリは、権限を与えられた後に作成されたバックアップにのみアクセスできます。
  3. 必要に応じて、対象アプリのために データストア書き込みを無効にしてください (復元用データと新たにデータストアに書き込まれたデータの衝突を避けるために、通常はこれを行ったほうが良いでしょう。)
  4. 対象アプリについては、管理コンソールのData項目のDatastore Admin画面を開きます。
  5. Import Backup Informationと書かれたボタンの隣にあるテキストボックスで、バックアップを格納したbucketを/my_bucket_nameの形式で指定します。 その結果、bucket内の全てのバックアップの一覧が表示されます。 または、バックアップを指定するためのファイルハンドル を設定します; このハンドル は、バックアップを選んで Infoをクリックすることで、復元元アプリケーションから取得することができます。; ファイルハンドル はHandleラベルの隣に表示されます。
  6. Import Backup Informationをクリックします。
  7. 選択ページでは、ハンドルでバックアップを指定しなければ、あなたが指定したbucket で使用できるバックアップが表示されます。 希望のバックアップを選んで、以下のうち一つをクリックしてください。:
    • このバックアップをアプリで使用可能なバックアップ一覧に残しておきたい場合はAdd to Backup List
    • このバックアップから復元したいがアプリで使用可能なバックアップ一覧に表示したくない場合はRestore From Backup
  8. 表示された アドバイザリーページには、チェックボックスの付いたエンティティの一覧があるでしょう。既定では、エンティティは全て復元されます。 復元したくないエンティティは横のチェックボックスのチェックをはずしてください。
  9. また、アドバイザリーページでは、あらかじめ設定されたパフォーマンス設定の既定のキューが復元ジョブに使用されているのが分かるでしょう。 別のキューパフォーマンス特性が必要な場合は、このキューを異なる設定がされた別のキューに変更してください。
  10. Restoreをクリックして復元を開始してください。 ジョブステータスページが表示されるでしょう。
  11. 書き込みを無効にしていた場合は、アプリケーションの データストアの書き込みを再度有効にしてください。 書き込みを無効にしていた場合は、アプリケーションの データストアの書き込みを再度有効にしてください。


エンティティを別のアプリケーションにコピーする

管理コンソールのデータストア管理タブを使用して、一種類のエンティティ全てや全種類のエンティティ全てを別のアプリケーションにコピーできます。 データストアのコピー機能は、コピー元アプリケーションの管理コンソールのData項目にある Datastore Admin画面を使用します。 あらかじめパフォーマンス設定がされた既定キューが、コピージョブに使用されます。 別のキューパフォーマンス特性が必要な場合は、このキューを異なる設定がされた別のキューに変更してください。

データストア管理画面から、ボタンをクリックしてエンティティの種類を選び、コピーすることができます:

Java開発者向けメモ

データストアのコピー機能は現在 Pythonアプリケーションのみで使用できます。 あなたの対象アプリがJavaで作られている場合は、アプリ用にデフォルトでないPython ランタイムを作成してそれを対象アプリケーションとして使用する必要があります。 以下の手順では、Datastore_adminと呼ばれるシンプルなアプリケーションを使用して、対象アプリケーション用のnon-default Pythoランタイムを作成する方法を説明します。:

  1. Python 2.7をダウンロードします
  2. データストア管理アプリをダウンロードします
  3. Python SDKをダウンロードします。
  4. データストアをコピーする手順の手順3で説明したように、 コピー元アプリケーションに対象アプリケーションへ対する書き込み権限を与えます。
  5. appcfg.py -A <your_app_id> update <directory-of-demo-app>を実行します。

データストアをコピーする手順

データストアをコピーするには:

  1. あなたのアプリケーションでDatastore Adminが有効になっているか確認します。
  2. コピー元からデータを取得できるようにするため、対象アプリケーションで remote_api builtinを有効にしてください。 有効にするには、以下を app.yamlに追加します:

    builtins:
    - remote_api: on
  3. 以下を実施することで、コピー元アプリケーションに対象アプリケーションへ対する書き込み権限を与えます。:

    1. アプリケーションのルートディレクトリにあるappengine_config.py ファイルに以下を追加します。:

      remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = ('HTTP_X_APPENGINE_INBOUND_APPID',['source appid here'])

      appengine_config.py ファイルがない場合は、新しく作成するか以下にあるサンプルをコピーすることができます。 google/appengine/ext/appstats/sample_appengine_config.py.

    2. appcfg.py updateを使って編集したバージョンをアプリケーションをアップロードします。

  4. コピー元アプリケーションを読み取り専用モードに設定します.

    この手順は必須ではありませんが、強く推奨します。 エンティティを新しいデータストアへコピーするのは時間がかかり、コピー中に発生した書き込みはコピーされません。 コピー元アプリケーションが読み取り専用モードでない場合、コピーはできますが管理コンソール上にnotreadonly警告が表示されます。 書き込みを無効にしないと、コピー先データストアが新しいデータのコピーを完全に取得できる保証がされません。

  5. Select the entity kind(s) to copy individually or in bulk, and copy them using Copy To Other App. 確認画面では、対象アプリのリモートエンドポイントを入力してください:

    • 通常のリモートエンドポイントは http://_your_target_app_id_.appspot.com/_ah/remote_api です。
    • サンプルアプリを使ってデータをコピーする場合、リモートエンドポイントはhttp://datastore-admin._your_target_app_id_.appspot.com/_ah/remote_apiです。
    • 代わりのメジャーバージョンを使用した場合、あなたのアプリケーションのリモートエンドポイントはhttp://app_version._your_target_app_id_.appspot.com/_ah/remote_apiです。

    確認後、システムはリクエストの有効性を検証します。 remote_api 接続を確立できる場合は、一つ以上の mapreduce 処理がデータのコピーを開始します。 あなたはリンクをたどって mapreduce 処理の初期設定の状態を見ることができます。 アプリケーションが名前空間機能を使用している場合、 mapreduce は各エンティティの種類の名前空間ごとに実行されます。

    データストア管理ページからコピー状態の概要を見ることができます。 個別のmapreduce の状態を見るに、http://_your_target_app_id_.appspot.com/_ah/mapreduce/へ行くことができます。

  6. 推奨されているように、コピー前にデータストアの書き込みを無効にしている場合は、書き込みを有効にしてください。



エンティティをまとめて削除する

管理コンソールのデータストア管理タブを使用して、全ての名前空間で、一つの種類の全エンティティや全ての種類の全エンティティを削除することができます。 管理コンソール上で、アプリケーション用にDatastore Adminを有効にする必要があることがあります。