備份及還原資料

本頁面說明如何使用與 MongoDB 相容的 Firestore 排程備份功能。使用備份功能,避免應用程式層級的資料損毀或意外刪除資料。

備份功能可讓您設定備份時間表,每天或每週備份指定資料庫。然後使用這些備份將資料還原至新資料庫。

備份功能簡介

備份是資料庫在特定時間點的一致副本。備份內容包含當時的所有資料和索引設定。備份不包含資料庫 存留時間政策。備份檔與來源資料庫位於相同位置。

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

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

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

費用

使用備份時,系統會根據下列項目向您收費:

  • 每個備份使用的儲存空間量。
  • 還原作業的費用則會根據備份大小計算。

如需更多詳細資料和確切費率,請參閱「定價」頁面。

事前準備

請確認您已為 Google Cloud 專案啟用計費功能。瞭解如何檢查專案是否已啟用計費功能

必要的角色

如要取得管理備份和備份排程所需的權限,請管理員授予您下列一或多個身分與存取權管理角色:

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

建立及管理備份排程

本節範例說明如何設定備份時間表。每個資料庫最多可設定一個每日備份排程和一個每週備份排程。你無法為一週內的不同天設定多個每週備份排程。

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

建立備份時間表

使用下列其中一種工具建立備份時間表。

建立每日備份排程

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 勾選「每日」核取方塊,設定保留期限,然後按一下「儲存」
gcloud CLI
如要為資料庫建立備份排程,請使用 gcloud firestore backups schedules create 指令。如要建立每日備份排程,請將 --recurrence 旗標設為 daily
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

更改下列內容:

  • DATABASE_ID:要備份的資料庫 ID。設為預設資料庫的 '(default)'
  • RETENTION_PERIOD:請將這個值設為最多 14 週 (14w)。

建立每週備份排程

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 選取「每週」核取方塊,選取備份日期,設定保留期限,然後按一下「儲存」
gcloud CLI
如要建立每週備份排程,請將 --recurrence 標記設為 weekly
gcloud 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:要備份的星期幾。設為下列其中一項:
    • SUN 代表星期日
    • MON 代表星期一
    • TUE 代表星期二
    • WED 代表星期三
    • THU 代表星期四
    • FRI 代表星期五
    • SAT 代表星期六

列出備份排程

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
gcloud CLI
使用 gcloud firestore backups schedules list 指令。
gcloud firestore backups schedules list \
--database='DATABASE_ID'
DATABASE_ID 替換為資料庫的 ID。使用 '(default)' 做為預設資料庫。

說明備份排程

如要擷取備份排程的相關資訊,請使用下列其中一種方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
gcloud CLI
使用 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. 在資料庫清單中,找到資料庫的資料列。在「排程備份」欄中,按一下「查看備份」或「編輯設定」
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 編輯備份時間表設定,然後按一下「儲存」
gcloud CLI
使用 gcloud firestore backups schedules update 指令:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
請替換下列項目:
  • DATABASE_ID:要備份的資料庫 ID。設為預設資料庫的 '(default)'
  • BACKUP_SCHEDULE_ID:備份時間表的 ID。列出所有備份排程時,您會看到每個備份排程的 ID。
  • RETENTION_PERIOD:請將這個值設為最多 14 週 (14w)。

您可以更新備份時間表的保留期限,但無法更新其週期。如需使用不同週期性的備份排程,請刪除舊的備份排程 (如果不再需要),然後建立新的備份排程並選擇所需週期。

刪除備份排程

如要刪除備份時間表,請使用下列其中一種做法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 編輯備份時間表設定,然後按一下「儲存」
gcloud CLI
使用 gcloud firestore backups schedules delete 指令:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
請替換下列項目:
  • DATABASE_ID:要備份的資料庫 ID。設為預設資料庫的 '(default)'
  • BACKUP_SCHEDULE_ID:備份時間表的 ID。列出所有備份排程時,您會看到每個備份排程的 ID。

請注意,刪除備份排程不會刪除已透過該排程建立的備份。您可以等待備份在保留期限過後到期,也可以手動刪除備份,詳情請參閱「刪除備份」。

管理備份

本節說明如何管理備份。

列出備份

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

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 按一下「編輯」,即可編輯災難復原設定。
  4. 編輯備份時間表設定,然後按一下「儲存」
gcloud CLI
使用 gcloud firestore backups list 指令:
gcloud firestore backups list \
--format="table(name, database, state)"
--format="table(name, database, state)" 標記會將輸出內容格式化為更易於閱讀的格式。 如要只列出特定位置的備份,請使用 --location 旗標:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
LOCATION 替換為與 MongoDB 相容的 Firestore 位置名稱。

描述備份

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

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」
  3. 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
gcloud CLI
使用 gcloud firestore backups describe 指令:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
請替換下列項目:
  • LOCATION:資料庫位置。
  • BACKUP_ID:備份 ID。列出所有備份時,即可查看每個備份的 ID。

刪除備份

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

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
  3. 在「備份」表格中找到備份的資料列,然後在「動作」欄中點選「查看更多」()。按一下「刪除」
  4. 在文字欄位中確認這項操作,然後按一下「刪除」
gcloud CLI
使用 gcloud firestore backups delete 指令:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
請替換下列項目:
  • LOCATION:資料庫位置。
  • BACKUP_ID:備份 ID。列出所有備份時,即可查看每個備份的 ID。

從資料庫備份還原資料

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

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

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
  3. 在「備份」表格中,找到備份的資料列,然後在「動作」欄中,按一下「查看更多」()。按一下「透過 Cloud Shell 還原」
  4. Cloud Shell 面板隨即開啟,並顯示從所選備份還原的 gcloud CLI 指令。將 ID_OF_NEW_DATABASE 替換為資料庫的 ID,然後執行指令。

    執行指令會傳回回應,其中包含作業的詳細資訊。資料庫很快就會顯示在資料庫清單中。還原作業需要一些時間,且必須完成後才能存取資料庫。

gcloud CLI
使用 gcloud firestore databases restore 指令:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
請替換下列項目:
  • PROJECT_ID:您的專案 ID。
  • LOCATION:資料庫備份的所在位置,以及為還原資料建立的新資料庫所在位置。
  • BACKUP_ID:備份的 ID。 列出所有備份時,即可查看每個備份的 ID。
  • DATABASE_ID:新資料庫的資料庫 ID。您無法使用已在使用的資料庫 ID。
資料庫模式會與備份資料的模式一致。 輸出內容會包含 metadatanameresponse 元件:
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
metadata 欄位包含 progressPercentage 元件,詳細說明目前為止的還原預估進度,以及指定還原整體狀態的 operationState。 如要再次擷取這項資訊,請使用 gcloud firestore operations list
gcloud firestore operations list --database=DATABASE_ID
或使用輸出內容中的 name 欄位,並加上 gcloud firestore operations describe
gcloud firestore operations describe OPERATION_NAME