備份及還原資料

適用於 Firestore Standard 版和 Firestore Enterprise 版。

本頁面說明如何使用 Cloud Firestore 排定備份功能。使用備份功能,保護資料免於應用程式層級的資料損毀,或意外刪除資料。

您可以設定備份排程,每天或每週備份指定資料庫。接著,您可以使用這些備份將資料還原至新資料庫。

備份功能簡介

備份是資料庫在某個時間點的一致副本。備份內容包含該時間點的所有資料和索引設定。

備份不含資料庫存留時間政策。 備份與來源資料庫位於相同位置。

您可以設定備份的保留期限,將備份儲存至保留期限屆滿或您刪除為止。刪除來源資料庫時,相關備份不會自動刪除。

Cloud Firestore 會儲存與資料庫相關的備份和備份排程中繼資料。Cloud Firestore會保留這項中繼資料,直到資料庫的「所有」備份都過期或刪除為止。

建立或保留備份不會影響即時資料庫的讀取或寫入效能。

費用

使用備份時,您必須支付下列費用:

  • 每個備份使用的儲存空間量。
  • 系統會依據備份大小,向您收取還原作業的費用。

如要瞭解詳情和確切費率,請參閱定價頁面。

事前準備

這項功能必須搭配 Blaze 定價方案。

必要的角色

如要取得管理備份和備份排程所需的權限,請要求管理員授予您下列一或多項 Identity and Access Management 角色:

  • roles/datastore.owner:Cloud Firestore 資料庫的完整存取權
  • roles/datastore.backupsAdmin:備份的讀取和寫入權限
  • roles/datastore.backupsViewer:備份的讀取權限
  • roles/datastore.backupSchedulesAdmin:備份排程的讀取和寫入權限
  • roles/datastore.backupSchedulesViewer:備份排程的讀取權限
  • roles/datastore.restoreAdmin:啟動還原作業的權限

建立及管理備份排程

以下範例說明如何設定備份排程。每個資料庫最多可設定一個每日備份排程和一個每週備份排程。您無法為一週中的不同日期設定多個每週備份排程。

您無法設定備份的確切時間。每天會在不同時間建立備份。如果是每週備份排程,您可以設定星期幾要備份。

建立備份排程

使用下列其中一項工具建立備份排程。

建立每日備份排程

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於是否存在備份排程。
  3. 按一下「編輯」,編輯災難復原設定。
  4. 勾選「每日」核取方塊,設定保留期限,然後按一下「儲存」。
Firebase CLI
如要建立資料庫的備份排程,請使用 firebase firestore:databases:backups:schedules:create 指令。 如要建立每日備份排程,請將 --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 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找出資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於是否存在備份排程。
  3. 按一下「編輯」,編輯災難復原設定。
  4. 勾選「每週」核取方塊、選取備份日期、設定保留期限,然後按一下「儲存」。
Firebase CLI
如要建立每週備份排程,請將 --recurrence 旗標設為 WEEKLY,並選擇 --day-of-week:
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 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找出資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於備份排程是否存在。
  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 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於是否存在備份排程。
  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 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定)。
  3. 按一下「編輯」,編輯災難復原設定。
  4. 編輯備份排程設定,然後按一下「Save」(儲存)。
Firebase CLI
使用 firebase firestore:backups:schedules:update 指令:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
更改下列內容:
  • BACKUP_SCHEDULE:備份排程的完整資源名稱。列出所有備份排程時,可以查看各個備份排程的名稱。
  • RETENTION_PERIOD:這個值最多可設為 14 週 (14w)。

您可以更新備份排程的保留期限,但無法更新週期。如需不同週期設定的備份排程,請刪除不再需要的舊備份排程,並建立具有偏好週期設定的新備份排程。

刪除備份排程

如要刪除備份排程,請使用下列其中一種方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於是否存在備份排程。
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 編輯備份排程設定,然後按一下「Save」(儲存)。
Firebase CLI
使用 firebase firestore:backups:schedules:delete 指令:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
更改下列內容:
  • BACKUP_SCHEDULE:備份排程的完整資源名稱。列出所有備份排程時,可以查看各個備份排程的名稱。

請注意,刪除備份排程不會刪除已由該排程建立的備份。您可以等待保留期限結束,或手動刪除備份,詳情請參閱「刪除備份」。

管理備份

列出備份

如要列出可用的備份,請使用下列其中一種方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於備份排程是否存在。
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 編輯備份排程設定,然後按一下「Save」(儲存)。
Firebase CLI
使用 firebase firestore:backups:list 指令:
firebase firestore:backups:list
如要只列出特定位置的備份,請使用 --location 旗標:
firebase firestore:backups:list \
--location=LOCATION
將 LOCATION 替換為 Cloud Firestore 位置名稱。

描述備份

如要查看備份詳細資料,請使用下列其中一種方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找出資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於備份排程是否存在。
  3. 「災難復原」頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
Firebase CLI
使用 firebase firestore:backups:get 指令:
firebase firestore:backups:get BACKUP
更改下列內容:
  • BACKUP:備份的完整資源名稱。列出所有備份時,可以查看各個備份的名稱。

刪除備份

如要刪除備份,請使用下列其中一種方法。

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於備份排程是否存在。「災難復原」頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
  3. 在「Backups」(備份) 表格中,找到備份所在的資料列,然後按一下「Actions」(動作) 欄中的「View more」(查看更多) ()。按一下「Delete」(刪除)。
  4. 使用文字欄位確認動作,然後點按「刪除」。
Firebase CLI
使用 firebase firestore:backups:delete 指令:
firebase firestore:backups:delete \
BACKUP
更改下列內容:
  • BACKUP::備份的完整資源名稱。列出所有備份時,可以查看每個備份的名稱。

從資料庫備份還原資料

如果還原,備份中的資料就會寫入新的 Cloud Firestore 資料庫。

如要開始還原作業,請使用下列其中一種方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫所在的資料列。在「Scheduled backups」(排定的備份) 欄中,按一下「View backups」(查看備份) 或「Edit settings」(編輯設定),具體取決於備份排程是否存在。「災難復原」頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
  3. 在「Backups」(備份) 表格中,找到備份所在的資料列,然後按一下「Actions」(動作) 欄中的「View more」(查看更多) ()。按一下「Restore with Cloud Shell」(使用 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。

限制

還原作業不會從 (default) 資料庫還原 App Engine 搜尋資料或 blob 實體。這項資料僅適用於 (default) 資料庫,如果從 (default) 還原至不支援這類資料的資料庫,則不會有任何作用,因此會從備份中排除。

還原後應採取的行動

完成還原後,請執行下列操作:

  • 確認新的資料庫已套用適當的 IAM 控制項。

  • 如果您先前使用 TTL 政策,請將這些政策重新套用至新資料庫。備份不含存留時間政策,也不會自動重新套用至還原的資料庫。