本頁面介紹如何使用 Cloud Firestore 規劃備份功能。使用備份來保護您的資料免於應用程式級資料損壞或意外資料刪除。
備份可讓您配置備份計畫以對指定資料庫進行每日或每週備份。然後,您可以使用這些備份將資料還原到新資料庫。
關於備份
備份是資料庫在某個時間點的一致副本。備份包含該時間點的所有資料和索引配置。備份不包含資料庫生存時間策略。備份與來源資料庫位於相同位置。
備份具有可設定的保留期,並且會儲存到保留期到期或刪除備份為止。刪除來源資料庫不會自動刪除相關備份。
Cloud Firestore 儲存與資料庫相關的備份和備份計畫相關的元資料。 Cloud Firestore 會保留此元數據,直到資料庫的所有備份過期或被刪除。
建立或保留備份不會影響即時資料庫中的讀取或寫入效能。
成本
當您使用備份時,您需要支付以下費用:
- 每個備份使用的儲存量。
- 對於還原操作,您需要根據備份的大小付費。
如需更多詳細資訊和確切費率,請參閱定價頁面。
在你開始之前
此功能需要Blaze 定價方案。所需角色
若要取得管理備份和備份計畫所需的權限,請要求管理員授予您以下一個或多個身分和存取管理角色:
-
roles/datastore.owner
:對 Cloud Firestore 資料庫的完全存取權限 以下角色也可用,但在 Google Cloud Platform Console 中不可見。使用 Google Cloud CLI來指派這些角色:
-
roles/datastore.backupsAdmin
:備份的讀寫存取權限 roles/datastore.backupsViewer
:備份的讀取存取權限roles/datastore.backupSchedulesAdmin
:備份計畫的讀寫存取權限roles/datastore.backupSchedulesViewer
:對備份計畫的讀取存取權限roles/datastore.restoreAdmin
:啟動復原作業的權限
-
建立和管理備份計劃
以下範例示範如何設定備份計畫。對於每個資料庫,您最多可以設定一個每日備份計畫和一個每週備份計畫。您無法為一週中的不同日期配置多個每週備份計畫。
您無法配置備份的確切時間。每天在不同時間進行備份。對於每週備份計劃,您可以設定一週中的哪一天進行備份。
建立備份計劃
若要為資料庫建立備份計劃,請使用gcloud alpha firestore backups schedules create
指令。
建立每日備份計劃
若要建立每日備份計劃,請將--recurrence
標誌設為daily
:
gcloud alpha firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
替換以下內容:
-
DATABASE_ID
:要備份的資料庫的 ID。預設資料庫設定為(default)
。 -
RETENTION_PERIOD
:對於daily
備份重複週期,請將其設定為最長 7 天 (7d
) 的值。如果您設定weekly
備份週期,請將其設定為最長 14 週 (14w
) 的值。
建立每週備份計劃
若要建立每週備份計劃,請將--recurrence
標誌設為weekly
:
gcloud alpha firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
替換以下內容:
-
DATABASE_ID
:要備份的資料庫的 ID。預設資料庫設定為(default)
。 -
RETENTION_PERIOD
:對於weekly
備份重複週期,請將其設定為最長 14 週 (14w
) 的值。 -
DAY
:一週中進行備份的那一天。設定為以下之一:-
SUN
週日 MON
表示星期一TUE
週二WED
週三THU
週四FRI
週五- 週六
SAT
-
列出備份計劃
要列出資料庫的所有備份計劃,請使用gcloud alpha firestore backups schedules list
命令。此命令傳回有關所有備份計劃的資訊。
gcloud alpha firestore backups schedules list \ --database='DATABASE_ID'
將DATABASE_ID
替換為資料庫的 ID。使用(default)
作為預設資料庫。
描述備份計劃
要檢索有關備份計劃的信息,請使用gcloud alpha firestore backups schedules describe
命令:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
替換以下內容:
-
DATABASE_ID
:要備份的資料庫的 ID。預設資料庫設定為(default)
。 -
BACKUP_SCHEDULE_ID
:備份計畫的 ID。列出所有備份計畫時,您可以查看每個備份計畫的 ID。
更新備份計劃
若要更新備份計畫的保留期,請使用gcloud alpha firestore backups schedules update
指令:
gcloud alpha 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
:如果設定daily
備份重複週期,請將其設定為最多 7 天 (7d
) 的值。如果您設定weekly
備份週期,請將其設定為最長 14 週 (14w
) 的值。
刪除備份計劃
若要刪除備份計劃,請使用gcloud alpha firestore backups schedules delete
指令:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
替換以下內容:
-
DATABASE_ID
:要備份的資料庫的 ID。預設資料庫設定為(default)
。 -
BACKUP_SCHEDULE_ID
:備份計畫的 ID。列出所有備份計畫時,您可以查看每個備份計畫的 ID。
請注意,刪除備份計畫不會刪除該計畫已建立的備份。您可以等待它們在保留期過後到期,或手動刪除備份,請參閱刪除備份。
管理備份
列出備份
若要列出可用備份,請使用gcloud alpha firestore backups list
指令:
gcloud alpha firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
標誌將輸出格式化為更易讀的格式。
若要僅列出特定位置的備份,請使用--location
標誌:
gcloud alpha firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
將LOCATION
替換為 Cloud Firestore 位置的名稱。
描述備份
要查看有關備份的詳細信息,請使用gcloud alpha firestore backups describe
命令:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
-
LOCATION
:資料庫的位置。 -
BACKUP_ID
:備份的 ID。列出所有備份時,您可以查看每個備份的 ID。
刪除備份
若要刪除備份,請使用gcloud alpha firestore backups delete
指令:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
-
LOCATION
:資料庫的位置。 -
BACKUP_ID
:備份的 ID。列出所有備份時,您可以查看每個備份的 ID。
從資料庫備份還原數據
復原作業會將備份中的資料寫入新的 Cloud Firestore 資料庫。若要開始復原操作,請使用gcloud alpha firestore databases restore
指令:
gcloud alpha 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。
輸出將包括metadata
、 name
和response
元件:
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