本頁面說明如何使用 Cloud Firestore 排定的備份 而不是每個特徵的分數使用備份功能保護資料不受應用程式層級資料的影響 毀損或意外刪除的資料。
備份功能可將備份排程設為每天或每週執行 指定資料庫的備份您可以運用這些備份 將資料寫入新的資料庫
備份功能簡介
備份是特定時間點的資料庫副本。 備份會包含屆時的所有資料和索引設定 讓影片從頭到尾備份不含資料庫存留時間政策。 備份與來源資料庫位於相同位置。
備份有可設定的保留期限,而且會儲存至保留期限 到期,或直到您刪除備份為止。刪除來源資料庫 不會自動刪除相關備份
Cloud Firestore 會儲存與備份和備份相關的中繼資料 與資料庫相關的排程「Cloud Firestore」會保留這項中繼資料 直到資料庫「所有」備份到期或遭到刪除為止。
建立或保留備份不會影響讀取或快取的效能 即時資料庫中寫入
費用
使用備份功能時,系統會根據下列項目向您收費:
- 各項備份使用的儲存空間容量。
- 系統會依據備份大小向您收取還原作業的費用。
如要進一步瞭解確切的費率,請參閱定價頁面。
事前準備
必須採用 Blaze 定價方案,才能使用這項功能。必要的角色
如要取得管理備份和備份排程所需的權限, 請要求管理員授予您下列一或多個 Identity and Access Management 授權 角色:
roles/datastore.owner
:Cloud Firestore 資料庫的完整存取權Google Cloud 控制台也會顯示以下角色,但不會顯示這些角色。 使用 Google Cloud CLI 指派這些角色:
roles/datastore.backupsAdmin
:備份的讀取及寫入權限roles/datastore.backupsViewer
:具備備份的讀取權限roles/datastore.backupSchedulesAdmin
:具備備份排程的讀取和寫入權限roles/datastore.backupSchedulesViewer
:具備備份排程的讀取權限roles/datastore.restoreAdmin
:啟動還原作業的權限
建立及管理備份排程
以下範例說明如何設定備份排程。對於每項 資料庫,您最多可以設定一個每日備份排程 備份排程無法為下列執行個體設定多個每週備份排程: 每週的不同日。
您無法設定備份的確切時間。備份作業時間 每天都有不同時間每週備份 您可以設定系統在星期幾執行備份作業。
建立備份排程
如要為資料庫建立備份排程,請使用
gcloud firestore backups schedules create
指令或 firebase firestore:databases:backups:schedules
指令。
建立每日備份排程
gcloud
如要建立每日備份排程,請將--recurrence
標記設為 daily
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
更改下列內容:
- DATABASE_ID:要備份的資料庫 ID。設為
'(default)'
為預設資料庫。 - RETENTION_PERIOD:設為最多 14 週 (
14w
) 的值。
Firebase CLI
如要建立每日備份排程,請將--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)'
為預設資料庫。
您也可以使用資源參照
- RETENTION_PERIOD_SECONDS:設為秒數的值,並在後面加上「s」。最大值為
8467200s
(14 週)。
google_firestore_database
類型的 Terraform 資源。
建立每週備份排程
gcloud
如要建立每週備份排程,請將--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
(星期六)
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)'
為預設資料庫。
您也可以使用資源參照
- RETENTION_PERIOD_SECONDS:設為秒數的值,並在後面加上「s」。最大值為
8467200s
(14 週)。 - DAY:星期幾。設為
下列其中一項:
SUNDAY
代表週日MONDAY
(週一)TUESDAY
(星期二)WEDNESDAY
代表星期三THURSDAY
代表星期四FRIDAY
代表星期五SATURDAY
(星期六)
google_firestore_database
類型的 Terraform 資源。
列出備份排程
如要列出資料庫的所有備份排程,請使用下列其中一種方法:
gcloud
使用gcloud firestore backups schedules list
指令。
gcloud firestore backups schedules list \ --database='DATABASE_ID'請將 DATABASE_ID 替換為資料庫的 ID。使用
'(default)'
為預設資料庫。
Firebase CLI
使用firebase firestore:backups:schedules:list
指令。
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'請將 DATABASE_ID 替換為資料庫的 ID。使用
'(default)'
為預設資料庫。
說明備份排程
如要擷取備份排程的相關資訊,請使用下列其中一種方法:
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 列出所有備份排程。
更新備份排程
如要更新備份排程的保留期限,請使用下列其中一種方法:
gcloud
使用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
) 的值。
Firebase CLI
使用firebase firestore:backups:schedules:update
指令:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD更改下列內容:
- BACKUP_SCHEDULE:備份排程的完整資源名稱。個人中心 您可以查看每個備份排程的名稱 列出所有備份排程。
- RETENTION_PERIOD:設為最多 14 週 (
14w
) 的值。
您可以更新備份排程的保留期限,但無法更新週期的保留期限。如果您需要建立不同週期的備份排程,請刪除不再需要的舊備份排程,並使用所需的週期建立新的備份排程。
刪除備份排程
如要刪除備份排程,請使用下列其中一種方法:
gcloud
使用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 列出所有備份排程。
Firebase CLI
使用firebase firestore:backups:schedules:delete
指令:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE更改下列內容:
- BACKUP_SCHEDULE:備份排程的完整資源名稱。個人中心 您可以查看每個備份排程的名稱 列出所有備份排程。
請注意,刪除備份排程並不會刪除先前建立的備份 查看排程您可以等到保留期限屆滿之後, 如要手動刪除備份,請參閱刪除備份。
管理備份
列出備份
如要列出可用的備份,請使用下列其中一種方法:
gcloud
使用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
替換為 Cloud Firestore 的名稱
或 HTTP/HTTPS 位置
Firebase CLI
使用firebase firestore:backups:list
指令:
firebase firestore:backups:list如果只要列出特定位置的備份,請使用
--location
標記:
firebase firestore:backups:list \ --location=LOCATION將
LOCATION
替換為 Cloud Firestore 的名稱
或 HTTP/HTTPS 位置
說明備份
如要查看備份的詳細資料,請使用下列其中一種方法:
gcloud
使用gcloud firestore backups describe
指令:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID更改下列內容:
- LOCATION:資料庫的位置。
- BACKUP_ID:備份的 ID。個人中心 您可以在列出所有備份時查看個別備份的 ID。
Firebase CLI
使用firebase firestore:backups:get
指令:
firebase firestore:backups:get BACKUP更改下列內容:
- BACKUP:備份的完整資源名稱。您可以在列出所有備份時查看個別備份的名稱。
刪除備份
gcloud
使用gcloud firestore backups delete
指令:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID更改下列內容:
- LOCATION:資料庫的位置。
- BACKUP_ID:備份的 ID。個人中心 您可以在列出所有備份時查看個別備份的 ID。
Firebase CLI
使用firebase firestore:backups:delete
指令:
firebase firestore:backups:delete \ BACKUP更改下列內容:
- BACKUP:備份的完整資源名稱。您可以查看各項備份的名稱 列出所有備份
從資料庫備份還原資料
如果執行還原作業,系統就會將備份中的資料寫入新的 Cloud Firestore 資料庫
如要開始進行還原作業,請使用下列其中一種方法:
gcloud
使用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。
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
Firebase CLI
使用firebase firestore:databases:restore
指令:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'更改下列內容:
- BACKUP:備份的完整資源名稱。 您可以在列出所有備份時查看個別備份的名稱。
- DATABASE_ID:新資料庫的 ID 資料庫無法使用已在使用中的資料庫 ID。