インプレース復元を行う

Cloud Firestore Standard エディションと Cloud Firestore Enterprise エディションに関連します。

このページでは、バックアップ内のデータを、バックアップのソース データベースと同じ名前のデータベースに復元する方法について説明します。 このページを読む前に、データのバックアップと復元について理解しておく必要があります。

インプレース復元

インプレース復元では、元のデータベースがまだ存在している間に、バックアップからバックアップを作成したソース データベースにデータベースを復元できます。インプレース復元を行うと、トラフィックの再ルーティングや、別の名前のデータベースの作成を回避できます。

復元オペレーションでは、まだ存在しない宛先データベースを使用する必要があります。ただし、インプレース復元をシミュレートするには、ソース データベースを削除してから、ソース データベースと同じ名前の新しいデータベースにバックアップから復元します。

インプレース復元を行う

インプレース復元を行う手順は以下のとおりです。

  1. 復元オペレーションに使用するバックアップを特定します。
  2. 既存のデータベースを削除します。
  3. 削除されたデータベースのバックアップとデータベース ID を使用して、復元オペレーションを完了します。
注意: アプリがネイティブ モードの Cloud Firestore のクライアント ライブラリを使用し、クライアントがオフライン キャッシュを使用する場合、書き込みを破棄する代わりに、インプレース復元によって、復元したデータベースへの書き込みをフラッシュします。このような状況は、削除されたデータベースに接続されているクライアントがオフラインになり、オフラインの間、インプレース復元を行う時点での書き込みがキャッシュに累積されます。

始める前に

インプレース復元プロセスを開始する前に、次の手順を行うことをおすすめします。

データベースのインデックス構成を取得してコピーします。インプレース復元オペレーションの完了後に、インデックス構成を使用してインデックスを再作成します。次のコマンドを使用して、データベースのインデックス構成を取得します。

  • gcloud firestore indexes composite list を使用して、複合インデックスのリストを取得します。

        gcloud firestore indexes composite list --database=DATABASE_ID
    

    DATABASE_ID は、データベースの ID に置き換えます。

  • gcloud firestore indexes fields list を使用して、単一フィールド(組み込み)インデックス除外のリストを取得します。

        gcloud firestore indexes fields list --database=DATABASE_ID
    

インプレース復元を行う

インプレース復元オペレーションを実行するには、次の手順を行います。このプロセスでは、データベースを削除する瞬間から復元オペレーションが完了するまでの間に、ダウンタイムが必要となります。

復元オペレーションの開始後は、そのオペレーションをキャンセルできず、オペレーションが完了するまで待つ必要があります。復元オペレーションは、オペレーションで使用されるデータベース ID を直ちに占有します。

  1. gcloud firestore backups list コマンドを使用して、復元オペレーションに使用するバックアップを特定します。リソース名をメモしてください。リソース名には次の形式を使用します。

        projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
    
  2. gcloud firestore databases delete コマンドを使用して、既存のデータベースを削除します。

        gcloud firestore databases delete --database='DATABASE_ID'
    

    DATABASE_ID をデータベース ID に置き換えます。

  3. データベースを削除してから、データベース ID が再び使用可能になるまで、少なくとも 5 分間待ちます。gcloud firestore databases restore コマンドを使用して、復元オペレーションを開始します。

    gcloud firestore databases restore \
    --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
    --destination-database='DATABASE_ID'
    

    DATABASE_ID をデータベース ID に置き換えます。

次のステップ