本頁面提供 Spanner 備份作業的相關資訊。如要進一步瞭解備份功能,請參閱「備份總覽」。
事前準備
-
如要取得管理備份所需的權限,請要求管理員為您授予執行個體的以下 IAM 角色:
-
建立、查看、更新及刪除備份:
Cloud Spanner 備份管理員 (
roles/spanner.backupAdmin
) -
建立及查看備份:
Cloud Spanner 備份寫入者 (
roles/spanner.backupWriter
)
-
建立、查看、更新及刪除備份:
Cloud Spanner 備份管理員 (
本頁的 gcloud CLI 範例假設如下:
- 您已設定 gcloud CLI 以搭配 Spanner 使用。如果您是第一次使用 gcloud CLI 搭配 Spanner,請參閱「使用 gcloud CLI 開始使用 Spanner」。
您已為專案設定 gcloud CLI。例如:
gcloud config set core/project PROJECT_ID
複製備份
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含要複製資料庫的執行個體。
按一下資料庫。
在導覽窗格中,按一下「Backup/Restore」。
在「備份」表格中,選取備份的「動作」,然後按一下「複製」。
填寫表單:選擇目的地執行個體、提供名稱,然後選取備份副本的到期日。
按一下「複製」。
如要查看複製作業的進度,請參閱「檢查作業進度」。
如果作業時間過長,您可以取消作業。詳情請參閱「取消長時間執行的執行個體作業」。
gcloud
您可以將備份複製到同一專案中的其他執行個體,或複製到不同專案中的其他執行個體。
複製同一專案中的備份
如果您選擇將備份複製到同一專案中的其他執行個體,則必須為複製的備份建立新的執行個體 (或已準備好備份)。您無法在備份副本作業中建立新的執行個體。此外,備份的到期時間必須在目前複製要求處理時間後的六小時後,且最晚不得超過來源備份的 create_time
後 366 天。
使用下列任何指令資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- SOURCE_INSTANCE_ID:來源 Spanner 執行個體 ID。
- SOURCE_DATABASE_ID:來源 Spanner 資料庫 ID。
- SOURCE_BACKUP_NAME:Spanner 備份名稱。
- DESTINATION_INSTANCE_ID:目標 Spanner 執行個體 ID。
- DESTINATION_BACKUP_NAME:目的地 Spanner 備份名稱。
- EXPIRATION_DATE:到期日時間戳記。
-
ENCRYPTION_TYPE:建立備份的加密類型。有效值為
USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups copy \ --source-instance=SOURCE_INSTANCE_ID \ --source-backup=SOURCE_BACKUP_NAME \ --destination-instance=DESTINATION_INSTANCE_ID \ --destination-backup=DESTINATION_BACKUP_NAME \ --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
Windows (PowerShell)
gcloud spanner backups copy ` --source-instance=SOURCE_INSTANCE_ID ` --source-backup=SOURCE_BACKUP_NAME ` --destination-instance=DESTINATION_INSTANCE_ID ` --destination-backup=DESTINATION_BACKUP_NAME ` --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
Windows (cmd.exe)
gcloud spanner backups copy ^ --source-instance=SOURCE_INSTANCE_ID ^ --source-backup=SOURCE_BACKUP_NAME ^ --destination-instance=DESTINATION_INSTANCE_ID ^ --destination-backup=DESTINATION_BACKUP_NAME ^ --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
您應該會收到類似以下的回應:
createTime: '2022-03-29T22:06:05.905823Z' database: projects/PROJECT_ID/instances/SOURCE_INSTANCE_ID/databases/SOURCE_DATABASE_ID databaseDialect: GOOGLE_STANDARD_SQL encryptionInfo: encryptionType: GOOGLE_DEFAULT_ENCRYPTION expireTime: '2022-03-30T10:49:41Z' maxExpireTime: '2023-03-17T20:46:33.479336Z' name: projects/PROJECT_ID/instances/DESTINATION_INSTANCE_ID/backups/DESTINATION_BACKUP_NAME sizeBytes: '7957667' state: READY versionTime: '2022-03-16T20:46:33.479336Z'
複製其他專案中的備份
如果您選擇將備份資料複製到其他專案,則必須有另一個專案,並準備好備份資料的專屬執行個體。您無法在備份副本作業中建立新專案。此外,備份的到期時間必須在目前複製要求處理時間後至少六小時,且最晚在來源備份 create_time
後 366 天。
使用下列任何指令資料之前,請先替換以下項目:
- SOURCE_PROJECT_ID:來源專案 ID。
- SOURCE_INSTANCE_ID:來源 Spanner 執行個體 ID。
- SOURCE_DATABASE_ID:來源 Spanner 資料庫 ID。
- SOURCE_BACKUP_NAME:Spanner 備份名稱。
- DESTINATION_PROJECT_ID:目的地專案 ID。
- DESTINATION_INSTANCE_ID:目標 Spanner 執行個體 ID。
- DESTINATION_BACKUP_NAME:目的地 Spanner 備份名稱。
- EXPIRATION_DATE:到期日時間戳記。
-
ENCRYPTION_TYPE:建立備份的加密類型。有效值為
USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups copy \ --source-backup=projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_ID/backups/SOURCE_BACKUP_NAME \ --destination-backup=projects/DESTINATION_PROJECT_ID/instances/DESTINATION_INSTANCE_ID/backups/DESTINATION_BACKUP_NAME \ --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
Windows (PowerShell)
gcloud spanner backups copy ` --source-backup=projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_ID/backups/SOURCE_BACKUP_NAME ` --destination-backup=projects/DESTINATION_PROJECT_ID/instances/DESTINATION_INSTANCE_ID/backups/DESTINATION_BACKUP_NAME ` --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
Windows (cmd.exe)
gcloud spanner backups copy ^ --source-backup=projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_ID/backups/SOURCE_BACKUP_NAME ^ --destination-backup=projects/DESTINATION_PROJECT_ID/instances/DESTINATION_INSTANCE_ID/backups/DESTINATION_BACKUP_NAME ^ --expiration-date=EXPIRATION_DATE --encryption-type=ENCRYPTION_TYPE
您應該會收到類似以下的回應:
createTime: '2022-03-29T22:06:05.905823Z' database: projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_ID/databases/SOURCE_DATABASE_ID databaseDialect: GOOGLE_STANDARD_SQL encryptionInfo: encryptionType: GOOGLE_DEFAULT_ENCRYPTION expireTime: '2022-03-30T10:49:41Z' maxExpireTime: '2023-03-17T20:46:33.479336Z' name: projects/DESTINATION_PROJECT_ID/instances/DESTINATION_INSTANCE_ID/backups/DESTINATION_BACKUP_NAME sizeBytes: '7957667' state: READY versionTime: '2022-03-16T20:46:33.479336Z'
如要查看複製作業的進度,請參閱「檢查作業進度」。
用戶端程式庫
以下程式碼範例會複製現有的備份。您可以將備份複製到不同區域或專案中的執行個體。完成後,範例會擷取並列印新建立的複製備份的部分資訊,例如名稱、大小、備份狀態和 version_time
。
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
查看作業進度
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下要查看備份作業的資料庫所在執行個體。
按一下資料庫。
在導覽窗格中,按一下「操作」。「Operations」頁面會顯示執行中的作業清單。
gcloud
使用 gcloud spanner operations describe
查看作業進度。
取得作業 ID:
使用下列任何指令資料之前,請先替換以下項目:
- INSTANCE_NAME:Spanner 執行個體名稱。
- DATABASE_NAME:Spanner 資料庫名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner operations list --instance=INSTANCE_NAME \ --database=DATABASE_NAME --type=backup
Windows (PowerShell)
gcloud spanner operations list --instance=INSTANCE_NAME ` --database=DATABASE_NAME --type=backup
Windows (cmd.exe)
gcloud spanner operations list --instance=INSTANCE_NAME ^ --database=DATABASE_NAME --type=backup
您應該會收到類似以下的回應:
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z
使用須知:
如要限制清單,請指定
--filter
標記。例如:--filter="metadata.name:example-db"
只會列出特定資料庫的作業。--filter="error:*"
只會列出失敗的備份作業。
如需篩選器語法的相關資訊,請參閱
gcloud topic filters
。如要瞭解如何篩選備份作業,請參閱ListBackupOperationsRequest
中的filter
欄位。--type
標記不會區分大小寫。
執行
gcloud spanner operations describe
:使用下列任何指令資料之前,請先替換以下項目:
- OPERATION_ID:作業 ID。
- INSTANCE_NAME:Spanner 執行個體名稱。
- DATABASE_NAME:Spanner 資料庫名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner operations describe OPERATION_ID \ --instance=INSTANCE_NAME \ --backup=BACKUP_NAME \
Windows (PowerShell)
gcloud spanner operations describe OPERATION_ID ` --instance=INSTANCE_NAME ` --backup=BACKUP_NAME `
Windows (cmd.exe)
gcloud spanner operations describe OPERATION_ID ^ --instance=INSTANCE_NAME ^ --backup=BACKUP_NAME ^
您應該會收到類似以下的回應:
done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
progress
部分會顯示已完成的作業百分比。如果作業時間過長,您可以取消作業。詳情請參閱「取消長時間執行的備份作業」。
用戶端程式庫
以下程式碼範例會列出所有正在執行的作業,包括建立備份 (使用 CreateBackupMetadata
的作業) 和複製備份 (使用 CopyBackupMetadata
的作業),並根據特定資料庫進行篩選。
如需篩選語法的相關資訊,請參閱 backupOperations.list
中的 filter
參數。
C++
C#
如要列出所有建立備份作業,請按照下列步驟操作:
如要列出所有備份複製作業:
Go
Java
Node.js
PHP
Python
Ruby
如要列出所有建立備份作業,請按照下列步驟操作:
如要列出所有備份複製作業:
取消備份作業
控制台
Google Cloud 控制台不支援取消備份作業。不過,您可以使用 Google Cloud CLI、REST 或 RPC API 取消耗時過長的作業。詳情請參閱「取消長時間執行的執行個體作業」。
gcloud
取得作業 ID:
使用下列任何指令資料之前,請先替換以下項目:
- INSTANCE_NAME:Spanner 執行個體名稱。
- DATABASE_NAME:Spanner 資料庫名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner operations list --instance=INSTANCE_NAME \ --database=DATABASE_NAME --type=backup
Windows (PowerShell)
gcloud spanner operations list --instance=INSTANCE_NAME ` --database=DATABASE_NAME --type=backup
Windows (cmd.exe)
gcloud spanner operations list --instance=INSTANCE_NAME ^ --database=DATABASE_NAME --type=backup
您應該會收到類似以下的回應:
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z
使用須知:
如要限制清單,請指定
--filter
標記。例如:--filter="metadata.name:example-db"
只會列出特定資料庫的作業。--filter="error:*"
只會列出失敗的備份作業。
如需篩選器語法的相關資訊,請參閱
gcloud topic filters
。如要瞭解如何篩選備份作業,請參閱ListBackupOperationsRequest
中的filter
欄位。--type
標記不會區分大小寫。
使用
gcloud spanner operations cancel
取消備份作業。使用下列任何指令資料之前,請先替換以下項目:
- OPERATION_ID:作業 ID。
- INSTANCE_NAME:Spanner 執行個體名稱。
- DATABASE_NAME:Spanner 資料庫名稱。
- BACKUP_NAME:Spanner 備份名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner operations cancel OPERATION_ID --instance=INSTANCE_NAME \ --database=DATABASE_NAME --backup=BACKUP_NAME
Windows (PowerShell)
gcloud spanner operations cancel OPERATION_ID --instance=INSTANCE_NAME ` --database=DATABASE_NAME --backup=BACKUP_NAME
Windows (cmd.exe)
gcloud spanner operations cancel OPERATION_ID --instance=INSTANCE_NAME ^ --database=DATABASE_NAME --backup=BACKUP_NAME
用戶端程式庫
以下程式碼範例會建立備份、取消備份作業,然後等待備份作業完成。done
如果作業已成功取消,則會傳回 cancelTime
和錯誤訊息。如果備份作業在取消前已完成,備份就會存在,您可以刪除該備份。
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
取得備份資訊
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含要查看備份資訊的資料庫所在的執行個體。
按一下資料庫,開啟資料庫的「總覽」頁面。
在導覽窗格中,按一下「Backup/Restore」。您可以在資料庫中查看所選備份的備份資訊。
gcloud
如要取得備份資訊,請使用 gcloud spanner backups describe
。
使用下列任何指令資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:Spanner 執行個體 ID。
- DATABASE_ID:Spanner 資料庫 ID。
- BACKUP_NAME:Spanner 備份名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups describe BACKUP_NAME --instance=INSTANCE_ID
Windows (PowerShell)
gcloud spanner backups describe BACKUP_NAME --instance=INSTANCE_ID
Windows (cmd.exe)
gcloud spanner backups describe BACKUP_NAME --instance=INSTANCE_ID
您應該會收到類似以下的回應:
createTime: '2020-02-04T02:05:43.920377Z' database: projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID expireTime: '2021-02-04T02:05:43.268327Z' name: projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_NAME sizeBytes: '1000000000' state: READY
用戶端程式庫
用戶端程式庫不支援取得單一備份的備份資訊。不過,您可以列出執行個體中的所有備份和相關資訊。詳情請參閱「列出執行個體中的備份」。
列出執行個體中的備份
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下執行個體,即可查看所有可用的備份和相關資訊。
在導覽窗格中,按一下「Backup/Restore」。
gcloud
如要列出執行個體中的所有備份,請使用 gcloud spanner backups list
。
使用下列任何指令資料之前,請先替換以下項目:
- INSTANCE_ID:Spanner 執行個體 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups list --instance=INSTANCE_ID
Windows (PowerShell)
gcloud spanner backups list --instance=INSTANCE_ID
Windows (cmd.exe)
gcloud spanner backups list --instance=INSTANCE_ID
您應該會收到類似以下的回應:
BACKUP SOURCE_DATABASE CREATION_TIME EXPIRATION_TIME STATE BACKUP_SIZE_IN_BYTES IN_USE_BY example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2021-02-04T02:05:43.268327Z CREATING example-db-backup-4 example-db 2020-02-04T01:21:20.873839Z 2021-02-04T01:21:20.530151Z READY 32 example-db-backup-3 example-db 2020-02-03T23:59:18.936433Z 2021-02-03T23:59:18.203083Z READY 32 example-db-backup-5 example-db 2020-02-03T23:48:06.259296Z 2021-02-03T23:48:05.830937Z READY 32 example-db-backup-2 example-db 2020-01-30T19:49:00.616338Z 2021-01-30T19:49:00.283917Z READY 32 example-db-backup-1 example-db 2020-01-30T19:47:09.492551Z 2021-01-30T19:47:09.097804Z READY 32
如要限制清單,請指定 --filter
標記。舉例來說,如要篩選清單,只保留仍在建立中的備份,請新增 --filter="state:creating"
。如需篩選器語法的相關資訊,請參閱 gcloud topic filters
。如要瞭解如何篩選備份,請參閱 ListBackupsRequest
中的 filter
欄位。
用戶端程式庫
以下程式碼範例會列出指定執行個體中的備份。
您可以提供篩選條件運算式,篩選傳回的備份清單 (例如依名稱、版本時間或備份到期時間篩選)。如要瞭解篩選語法,請參閱 列出備份 中的 filter
參數。
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
更新備份到期期限
控制台
前往 Google Cloud 控制台的 Spanner 執行個體頁面。
按一下包含資料庫的執行個體,開啟其「總覽」頁面。
按一下資料庫,開啟資料庫的「總覽」頁面。
在導覽窗格中,按一下「Backup/Restore」。
按一下所選備份的「動作」按鈕,然後選取「更新中繼資料」。
選取新的到期日。
按一下 [Update]。
gcloud
如要更新備份的到期期限日期,請使用 gcloud spanner backups update-metadata
:
使用下列任何指令資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- BACKUP_ID:Spanner 備份 ID。
- INSTANCE_ID:Spanner 執行個體 ID。
- EXPIRATION_DATE:到期日時間戳記。
- DATABASE_ID:Spanner 資料庫 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups update-metadata BACKUP_ID \ --instance=INSTANCE_ID \ --expiration-date=EXPIRATION_DATE
Windows (PowerShell)
gcloud spanner backups update-metadata BACKUP_ID ` --instance=INSTANCE_ID ` --expiration-date=EXPIRATION_DATE
Windows (cmd.exe)
gcloud spanner backups update-metadata BACKUP_ID ^ --instance=INSTANCE_ID ^ --expiration-date=EXPIRATION_DATE
您應該會收到類似以下的回應:
createTime: '2020-02-04T02:05:43.920377Z' database: projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID expireTime: '2020-05-05T00:00:00Z' name: projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_ID sizeBytes: '1000000000' state: READY
用戶端程式庫
以下程式碼範例會擷取備份的到期時間,並延長該時間。
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
刪除備份
刪除備份時,Spanner 會釋出儲存空間,以及與該備份相關聯的所有其他資源。
如果您刪除仍在建立中的備份,Spanner 也會取消長期執行的備份作業。
如果較新的增量備份依賴舊的增量備份,刪除舊的增量備份可能無法釋出儲存空間。詳情請參閱「備份總覽」。
控制台
前往 Google Cloud 控制台的 Spanner 執行個體頁面。
按一下包含資料庫的執行個體,開啟其「總覽」頁面。
按一下資料庫,開啟資料庫的「總覽」頁面。
在導覽窗格中,按一下「Backup/Restore」。
按一下所選備份的「動作」按鈕,然後選取「刪除」。
輸入備份 ID。
點選「刪除」。
gcloud
如要刪除備份,請使用 gcloud spanner backups delete
。
使用下列任何指令資料之前,請先替換以下項目:
- INSTANCE_ID:Spanner 執行個體 ID。
- BACKUP_NAME:Spanner 備份名稱。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backups delete BACKUP_NAME --instance=INSTANCE_ID
Windows (PowerShell)
gcloud spanner backups delete BACKUP_NAME --instance=INSTANCE_ID
Windows (cmd.exe)
gcloud spanner backups delete BACKUP_NAME --instance=INSTANCE_ID
您應該會收到類似以下的回應:
You are about to delete backup BACKUP_NAME Do you want to continue (Y/n)? Y Deleted backup BACKUP_NAME.
用戶端程式庫
以下程式碼範例會刪除備份,並驗證備份是否已刪除。
C++
C#
Go
Java
Node.js
PHP
Python
Ruby