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

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

このページでは、MongoDB 互換の Cloud Firestore のスケジュール バックアップ機能を使用する方法について説明します。バックアップを使用して、アプリケーション レベルのデータ破損や偶発的なデータ削除からデータを保護します。

バックアップによって、指定したデータベースのバックアップを毎日、または毎週行うようにバックアップ スケジュールを構成できます。その後、これらのバックアップを使用して新しいデータベースにデータを復元できます。

バックアップについて

バックアップは、ある時点でのデータベースの一貫性のあるたコピーです。バックアップには、その時点でのすべてのデータとインデックス構成が含まれています。

バックアップにデータベースの有効期間(TTL)ポリシーは含まれません。バックアップはソース データベースと同じロケーションに存在します。

バックアップは保持期間を構成でき、保持期間が終了するまで、またはバックアップを削除するまで保存されます。ソース データベースを削除しても、関連するバックアップは自動的に削除されません。

Cloud Firestore は、バックアップに関連するメタデータと、データベースに関連するバックアップ スケジュールを保存します。Cloud Firestore は、データベースのすべてのバックアップが期限切れになるか削除されるまで、このメタデータを保持します。

バックアップを作成または保持しても、ライブ データベースでの読み書きのパフォーマンスに影響はありません。

費用

バックアップを使用すると、以下の内容に対して課金されます。

  • 各バックアップで使用されるストレージの容量。
  • 復元オペレーションの場合は、バックアップのサイズに基づいて課金されます。

詳細と正確な料金については、料金のページをご覧ください。

準備

この機能を使用するには、Blaze 料金プランが必要です。

必要なロール

バックアップとバックアップ スケジュールを管理するために必要な権限を取得するには、次の Identity and Access Management ロールの 1 つ以上を付与するよう管理者に依頼します。

  • roles/datastore.owner: Cloud Firestore データベースに対する完全アクセス権
  • roles/datastore.backupsAdmin: バックアップに対する読み取り / 書き込みアクセス権
  • roles/datastore.backupsViewer: バックアップに対する読み取りアクセス権
  • roles/datastore.backupSchedulesAdmin: バックアップ スケジュールに対する読み取り / 書き込みアクセス権
  • roles/datastore.backupSchedulesViewer: バックアップ スケジュールに対する読み取りアクセス権
  • roles/datastore.restoreAdmin: 復元オペレーションを開始する権限

バックアップ スケジュールを作成、管理する

次の例は、バックアップ スケジュールを設定する方法を示しています。データベースごとに、最大 1 つの日次バックアップ スケジュールと、最大 1 つの週次バックアップ スケジュールを構成できます。異なる曜日について複数の週次バックアップ スケジュールを構成できません。

バックアップの日の正確な時刻は構成できません。バックアップは毎日異なる時刻に行われます。週次バックアップ スケジュールでは、バックアップを作成する曜日を構成できます。

バックアップ スケジュールを作成する

バックアップ スケジュールを作成するには、次のいずれかのツールを使用します。

日次バックアップ スケジュールを作成する

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [編集] をクリックして、障害復旧の設定を編集します。
  4. [日次] チェックボックスをオンにして、保持期間を設定し、[保存] をクリックします。
Firebase CLI
データベースのバックアップ スケジュールを作成するには、firebase firestore:databases:backups:schedules コマンドを使用します。日次バックアップ スケジュールを作成するには、--recurrence フラグを DAILY に設定します。
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

以下を置き換えます。

  • DATABASE_ID: バックアップするデータベースの ID。デフォルト データベースの場合は '(default)' に設定します。
  • RETENTION_PERIOD: これを最大 14 週間(14w)の値に設定します。
Terraform
日次バックアップ スケジュールを作成するには、google_firestore_backup_schedule リソースを作成します。
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • DATABASE_ID: バックアップするデータベースの ID。デフォルト データベースの場合は '(default)' に設定します。
  • また、タイプ google_firestore_database の Terraform リソースに対するリソース リファレンスを使用することもできます。
  • RETENTION_PERIOD_SECONDS: 秒単位の値に設定し、後に「s」をつけます。最大値は 8467200s(14 週間)です。

週次バックアップ スケジュールを作成する

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [編集] をクリックして、障害復旧の設定を編集します。
  4. [週次] チェックボックスをオンにして、バックアップ日を選択し、保持期間を設定してから、[保存] をクリックします。
Firebase CLI
週次バックアップ スケジュールを作成するには、--recurrence フラグを WEEKLY に設定します。
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
次のように置き換えます。
  • DATABASE_ID: バックアップするデータベースの ID。デフォルト データベースの場合は '(default)' に設定します。
  • RETENTION_PERIOD: これを最大 14 週間(14w)の値に設定します。
  • DAY: バックアップを行う曜日。次のいずれかに設定します。
    • SUNDAY(日曜日)
    • MONDAY(月曜日)
    • TUESDAY(火曜日)
    • WEDNESDAY(水曜日)
    • THURSDAY(木曜日)
    • FRIDAY(金曜日)
    • SATURDAY(土曜日)
Terraform
週次バックアップ スケジュールを作成するには、google_firestore_backup_schedule リソースを作成します。
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • DATABASE_ID: バックアップするデータベースの ID。デフォルト データベースの場合は '(default)' に設定します。
  • また、タイプ google_firestore_database の Terraform リソースに対するリソース リファレンスを使用することもできます。
  • RETENTION_PERIOD_SECONDS: 秒単位の値に設定し、後に「s」をつけます。最大値は 8467200s(14 週間)です。
  • DAY: バックアップを行う曜日。次のいずれかに設定します。
    • SUNDAY(日曜日)
    • MONDAY(月曜日)
    • TUESDAY(火曜日)
    • WEDNESDAY(水曜日)
    • THURSDAY(木曜日)
    • FRIDAY(金曜日)
    • SATURDAY(土曜日)

バックアップ スケジュールを一覧表示する

データベースのすべてのバックアップ スケジュールを一覧表示するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [障害復旧] ページが開きます。このページでは、バックアップ スケジュールについて説明し、使用可能なバックアップをリストアップします。
Firebase CLI
firebase firestore:backups:schedules:list コマンドを使用します。
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
DATABASE_ID はデータベースの ID に置き換えます。デフォルトのデータベースには '(default)' を使用します。

バックアップ スケジュールを記述する

バックアップ スケジュールに関する情報を取得するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [障害復旧] ページが開きます。このページでは、バックアップ スケジュールについて説明し、使用可能なバックアップをリストアップします。
gcloud
gcloud firestore backups schedules describe コマンドを使用します。
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
次のように置き換えます。
  • DATABASE_ID: バックアップするデータベースの ID。デフォルト データベースの場合は '(default)' に設定します。
  • BACKUP_SCHEDULE_ID: バックアップ スケジュールの ID。すべてのバックアップ スケジュールを一覧表示すると、各バックアップ スケジュールの ID を表示できます。

バックアップ スケジュールを更新する

バックアップ スケジュールの保持期間を更新するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、[バックアップを表示] または [設定を編集] をクリックします。
  3. [編集] をクリックして、障害復旧の設定を編集します。
  4. バックアップ スケジュールの設定を編集し、[保存] をクリックします。
Firebase CLI
firebase firestore:backups:schedules:update コマンドを使用します。
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
次のように置き換えます。

バックアップ スケジュールの保持期間は更新できますが、繰り返しの設定は更新できません。繰り返し期間の異なるバックアップ スケジュールが必要な場合は、古いバックアップ スケジュールを削除し(今後は不要となる場合)、必要な繰り返し期間のバックアップ スケジュールを作成します。

バックアップ スケジュールを削除する

バックアップ スケジュールを削除するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [編集] をクリックして、障害復旧の設定を編集します。
  4. バックアップ スケジュールの設定を編集し、[保存] をクリックします。
Firebase CLI
firebase firestore:backups:schedules:delete コマンドを使用します。
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
次のように置き換えます。

バックアップ スケジュールを削除しても、このスケジュールによってすでに作成されているバックアップは削除されないためご注意ください。保持期間が終了して期限切れになるのを待つか、バックアップの削除を参照して手動でバックアップを削除してください。

バックアップを管理する

バックアップを一覧表示する

利用可能なバックアップを一覧表示するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [編集] をクリックして、障害復旧の設定を編集します。
  4. バックアップ スケジュールの設定を編集し、[保存] をクリックします。
Firebase CLI
firebase firestore:backups:list コマンドを使用します。
firebase firestore:backups:list
特定のロケーションのバックアップのみを一覧表示するには、--location フラグを使用します。
firebase firestore:backups:list \
--location=LOCATION
LOCATION は、MongoDB 互換の Cloud Firestore のロケーションの名前に置き換えます。

バックアップを記述する

バックアップの詳細を表示するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。
  3. [障害復旧] ページが開きます。このページでは、バックアップ スケジュールについて説明し、使用可能なバックアップをリストアップします。
Firebase CLI
firebase firestore:backups:get コマンドを使用します。
firebase firestore:backups:get BACKUP
次のように置き換えます。

バックアップを削除

バックアップを削除するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。 [障害復旧] ページが開きます。このページでは、バックアップ スケジュールについて説明し、使用可能なバックアップをリストアップします。
  3. [バックアップ] 表で、バックアップの行を見つけて、[アクション] 列で [さらに表示]()をクリックします。[削除] をクリックします。
  4. テキスト フィールドを使用して操作を確認し、[削除] をクリックします。
Firebase CLI
firebase firestore:backups:delete コマンドを使用します。
firebase firestore:backups:delete \
BACKUP
次のように置き換えます。

データベースのバックアップからデータを復元する

復元オペレーションでは、バックアップからのデータが MongoDB 互換の新しい Cloud Firestore データベースに書き込まれます。

復元オペレーションを開始するには、次のいずれかの方法を使用します。

Google Cloud コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. データベースのリストで、データベースの行を見つけます。[スケジュール バックアップ] 列で、バックアップ スケジュールが存在するかどうかに応じて、[バックアップを表示] または [設定を編集] をクリックします。 [障害復旧] ページが開きます。このページでは、バックアップ スケジュールについて説明し、使用可能なバックアップをリストアップします。
  3. [バックアップ] 表で、バックアップの行を見つけて、[アクション] 列で [さらに表示]()をクリックします。[Cloud Shell を使用して復元] をクリックします。
  4. Cloud Shell パネルが開き、選択したバックアップから復元するための gcloud CLI コマンドが表示されます。ID_OF_NEW_DATABASE をデータベースの ID に置き換えて、コマンドを実行します。

    コマンドを実行すると、オペレーションの詳細を含むレスポンスが返されます。データベースがデータベースのリストに直ちに表示されます。復元オペレーションには時間がかかり、完了するまではデータベースにアクセスできません。

Firebase CLI
firebase firestore:databases:restore コマンドを使用します。
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
次のように置き換えます。
  • BACKUP: バックアップの完全なリソース名。 すべてのバックアップを一覧表示すると、各バックアップの名前を確認できます。
  • DATABASE_ID: 新しいデータベースのデータベース ID。すでに使用中のデータベース ID は使用できません。

復元後にすべきこと

復元が完了したら、次の操作を行います。

  • 適切な IAM 制御が新しいデータベースに適用されていることを確認します。

  • 以前に TTL ポリシーを使用していた場合は、新しいデータベースに再適用します。TTL ポリシーはバックアップに含まれず、復元されたデータベースに自動的に再適用されることもありません。