備份功能可讓您設定備份時間表,每天或每週備份指定資料庫。然後使用這些備份檔將資料還原至新資料庫。
備份功能簡介
備份是資料庫在特定時間點的一致副本。 備份內容包含當時的所有資料和索引設定。備份不包含資料庫的存留時間政策。 備份檔與來源資料庫位於相同位置。
備份資料的保留期限可供設定,且會一直儲存到保留期限屆滿或您刪除備份資料為止。刪除來源資料庫時,系統不會自動刪除相關備份。
Firestore 會儲存與資料庫相關的備份和備份排程中繼資料。Firestore 會保留這項中繼資料,直到資料庫的所有備份過期或遭到刪除為止。
建立或保留備份不會影響即時資料庫的讀取或寫入效能。
費用
使用備份時,系統會根據下列項目向您收費:
- 每個備份使用的儲存空間量。
- 還原作業的費用則會根據備份大小計算。
如需更多詳細資料和確切費率,請參閱「定價」頁面。
事前準備
請確認您已為 Google Cloud 專案啟用計費功能。 瞭解如何檢查專案是否已啟用計費功能。必要的角色
如要取得管理備份和備份時間表的必要權限,請要求管理員授予您下列一或多個身分與存取權管理角色:
roles/datastore.owner
:Firestore 資料庫的完整存取權roles/datastore.backupsAdmin
:備份的讀取和寫入權限roles/datastore.backupsViewer
:備份資料的讀取權限roles/datastore.backupSchedulesAdmin
:備份排程的讀取和寫入權限roles/datastore.backupSchedulesViewer
:備份排程的讀取權限roles/datastore.restoreAdmin
:啟動還原作業的權限
建立及管理備份排程
下方範例說明如何設定備份時間表。每個資料庫最多可設定一個每日備份排程和一個每週備份排程。您無法為不同日子設定多個每週備份排程。
您無法設定備份的確切時間。系統每天會在不同時間執行備份。如果是每週備份排程,您可以設定要備份的星期幾。
建立備份時間表
使用下列其中一種工具建立備份時間表。
建立每日備份排程
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 按一下「編輯」,即可編輯災難復原設定。
- 勾選「每日」核取方塊,設定保留期限,然後按一下「儲存」。
gcloud
如要為資料庫建立備份排程,請使用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
)。
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)'
。
您也可以使用 資源參照,參照 - RETENTION_PERIOD_SECONDS:將此值設為秒數,並在後面加上「s」。最大值為
8467200s
(14 週)。
google_firestore_database
類型的 Terraform 資源。建立每週備份排程
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 按一下「編輯」,即可編輯災難復原設定。
- 選取「每週」核取方塊,選取備份日期,設定保留期限,然後按一下「儲存」。
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 資源。列出備份排程
如要列出資料庫的所有備份排程,請使用下列其中一種方法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
gcloud
使用gcloud firestore backups schedules list
指令。
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
做為預設資料庫。Firebase CLI
使用firebase firestore:backups:schedules:list
指令。
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
做為預設資料庫。說明備份排程
如要擷取備份排程的相關資訊,請使用下列其中一種方法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
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 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排程備份」欄中,按一下「查看備份」或「編輯設定」。
- 按一下「編輯」,即可編輯災難復原設定。
- 編輯備份時間表設定,然後按一下「儲存」。
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
)。
您可以更新備份時間表的保留期限,但無法更新其週期。如需使用其他重複頻率的備份排程,請刪除舊備份排程 (如果不再需要),然後建立所需重複頻率的新備份排程。
刪除備份排程
如要刪除備份時間表,請使用下列其中一種做法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 按一下「編輯」,即可編輯災難復原設定。
- 編輯備份時間表設定,然後按一下「儲存」。
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:備份排程的完整資源名稱。列出所有備份時間表時,即可查看每個備份時間表的名稱。
請注意,刪除備份排程不會刪除該排程已建立的備份。您可以等待備份在保留期限過後到期,也可以手動刪除備份,詳情請參閱「刪除備份」。
管理備份
列出備份
如要列出可用的備份,請使用下列其中一種做法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 按一下「編輯」,即可編輯災難復原設定。
- 編輯備份時間表設定,然後按一下「儲存」。
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
替換為 Datastore 模式位置的名稱。
Firebase CLI
使用firebase firestore:backups:list
指令:
firebase firestore:backups:list
--location
旗標:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
替換為 Datastore 模式位置的名稱。
描述備份
如要查看備份詳細資料,請使用下列其中一種做法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。
- 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
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:備份的完整資源名稱。列出所有備份時,即可查看每個備份的名稱。
刪除備份
如要刪除備份資料,請使用下列其中一種做法。
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
- 在「備份」表格中找到備份的資料列,然後在「動作」欄中點選「查看更多」( )。按一下「刪除」。
- 使用文字欄位確認動作,然後按一下「刪除」。
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:備份的完整資源名稱。列出所有備份時,即可查看每個備份的名稱。
從資料庫備份還原資料
如果還原,備份中的資料就會寫入新的 Datastore 模式資料庫。
如要開始還原作業,請使用下列其中一種方法:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」頁面。
- 在資料庫清單中,找到資料庫的資料列。在「排定的備份作業」欄中,視備份排程是否存在,按一下「查看備份」或「編輯設定」。 「Disaster recovery」(災難復原) 頁面隨即開啟。本頁面說明備份排程,並列出可用的備份。
- 在「備份」表格中,找到備份的資料列,然後在「動作」欄中,按一下「查看更多」( )。按一下「透過 Cloud Shell 還原」。
-
Cloud Shell 面板隨即開啟,並顯示從所選備份還原的 gcloud CLI 指令。將 ID_OF_NEW_DATABASE 替換為資料庫的 ID,然後執行指令。
執行指令會傳回回應,其中包含作業的詳細資訊。資料庫很快就會顯示在資料庫清單中。還原作業需要一些時間,且必須完成後才能存取資料庫。
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。