本頁面提供 Spanner 備份作業的相關資訊。如要進一步瞭解備份功能,請參閱「備份總覽」。
事前準備
-
如要取得管理備份所需的權限,請要求管理員在執行個體上授予下列 IAM 角色:
-
建立、查看、更新及刪除備份:
Cloud Spanner 備份管理員 (
roles/spanner.backupAdmin
) -
建立及查看備份:
Cloud Spanner 備份寫入者 (
roles/spanner.backupWriter
)
-
建立、查看、更新及刪除備份:
Cloud Spanner 備份管理員 (
本頁面的 gcloud CLI 範例具有以下假設:
- 您已設定 gcloud CLI,可搭配 Spanner 使用。如果您是第一次使用 gcloud CLI 搭配 Spanner,請參閱這篇文章。
您已使用專案設定 gcloud CLI。例如:
gcloud config set core/project PROJECT_ID
複製備份
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含要複製資料庫的執行個體。
按一下資料庫。
在導覽窗格中,按一下「備份/還原」。
在「備份」表格中,選取備份的「動作」,然後按一下「複製」。
填寫表單,選擇目的地執行個體、提供名稱,並選取備份副本的到期日。
按一下「複製」。
如要查看複製作業的進度,請參閱「查看作業進度」。
如果作業時間過長,可以取消作業。詳情請參閱「取消長時間執行的執行個體作業」。
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」(作業)。「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#
如要列出所有建立備份作業: <0x0A
如要列出所有備份複製作業: <0x0A
Go
Java
Node.js
PHP
Python
Ruby
如要列出所有建立備份作業: <0x0A
如要列出所有備份複製作業: <0x0A
取消備份作業
控制台
控制台不支援取消備份作業。 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」(執行個體) 頁面。
按一下包含要查看備份資訊的資料庫的執行個體。
按一下資料庫,開啟「總覽」頁面。
在導覽窗格中,按一下「備份/還原」。您可以在資料庫中查看所選備份的備份資訊。
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」(執行個體) 頁面。
按一下執行個體,即可查看所有可用的備份及其資訊。
在導覽窗格中,按一下「備份/還原」。
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 執行個體頁面。
按一下包含資料庫的執行個體,開啟「Overview」(總覽) 頁面。
按一下資料庫,開啟「總覽」頁面。
在導覽窗格中,按一下「備份/還原」。
按一下所選備份的「動作」按鈕,然後選取「更新中繼資料」。
選取新的到期日。
按一下「更新」。
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 執行個體頁面。
按一下包含資料庫的執行個體,開啟「Overview」(總覽) 頁面。
按一下資料庫,開啟「總覽」頁面。
在導覽窗格中,按一下「備份/還原」。
按一下所選備份的「動作」按鈕,然後選取「刪除」。
輸入備份 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