インプレース復元オペレーションを実行する

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

インプレース復元

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

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

インプレース復元を行う

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

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

始める前に

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

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

    削除したデータベースを復元する必要がある場合は、エクスポート オペレーションからデータをimportします。 削除したデータベースを同じデータベース 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 に置き換えます。

次のステップ