インプレース復元を実行する

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

インプレース復元

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

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

インプレース復元を実行する

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

  1. 復元オペレーションに使用するバックアップを特定します。
  2. 既存のデータベースを削除します。
  3. 削除したデータベースのバックアップとデータベース ID を使用して、復元オペレーションを完了します。

始める前に

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

  1. 削除するデータベースのデータをエクスポートします。

    削除したデータベースを復元する必要がある場合は、エクスポート オペレーションからデータをインポートします。 削除したデータベースを同じデータベース ID に復元するには、実行中の復元オペレーションがすべて完了するのを待ってから、次の操作を行います。

    1. データベース ID を持つ既存のデータベースを削除し、5 分以上待ちます。
    2. データベース ID を持つ新しいデータベースを作成する
    3. インポート オペレーションを開始する
  2. データベースのインデックス構成を取得してコピーします。エクスポート オペレーションでは、インデックスの定義はキャプチャされません。インプレース復元オペレーションの完了後に、インデックス構成を使用してインデックスを再作成します。次のコマンドを使用して、データベースのインデックス構成を取得します。

    • 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 alpha 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 alpha firestore databases restore コマンドを使用して、復元オペレーションを開始します。

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

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

次のステップ