本頁面說明 Spanner 備份排程作業,並說明如何設定資料庫的備份排程。
事前準備
-
如要取得建立及管理備份時間表所需的權限,請要求管理員在執行個體上授予下列 IAM 角色:
-
建立、查看、更新及刪除備份時間表:
Cloud Spanner 備份管理員 (
roles/spanner.backupAdmin
) -
建立及查看備份時間表:
Cloud Spanner 備份寫入器 (
roles/spanner.backupWriter
)
-
建立、查看、更新及刪除備份時間表:
Cloud Spanner 備份管理員 (
建立備份時間表
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含資料庫的執行個體。
按一下資料庫。
在導覽選單中,按一下「Backup/Restore」。
按一下「建立備份時間表」。
填寫表單,然後按一下「建立」。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要建立備份時間表的執行個體 ID。
- DATABASE_ID:您要建立備份時間表的資料庫 ID。
-
RETENTION_DURATION:依排程建立的備份保留期限。舉例來說,如果您希望保留時間為一天,可以使用
86400s
。 -
CRONTAB_EXPRESSION:備份排程頻率的 crontab 運算式。舉例來說,如果您希望備份時間表的頻率為每 12 小時,可以使用
0 12 * * *
。 -
BACKUP_TYPE:備份時間表是全備份時間表還是增量備份時間表。可能的值為
full-backup
或incremental-backup
。 -
ENCRYPTION_TYPE:備份時間表建立的備份加密類型。有效值為
USE_DATABASE_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。如果備份類型為incremental-backup
,則加密類型必須為GOOGLE_DEFAULT_ENCRYPTION
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules create SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID \ --retention-duration=RETENTION_DURATION \ --cron="CRONTAB_EXPRESSION" \ --backup-type=BACKUP_TYPE \ --encryption-type=ENCRYPTION_TYPE
Windows (PowerShell)
gcloud spanner backup-schedules create SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID ` --retention-duration=RETENTION_DURATION ` --cron="CRONTAB_EXPRESSION" ` --backup-type=BACKUP_TYPE ` --encryption-type=ENCRYPTION_TYPE
Windows (cmd.exe)
gcloud spanner backup-schedules create SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID ^ --retention-duration=RETENTION_DURATION ^ --cron="CRONTAB_EXPRESSION" ^ --backup-type=BACKUP_TYPE ^ --encryption-type=ENCRYPTION_TYPE
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要建立備份時間表的執行個體 ID。
- DATABASE_ID:您要建立備份時間表的資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
-
BACKUP_TYPE:備份時間表是全備份時間表還是增量備份時間表。可能的值為
fullBackupSpec
或incrementalBackupSpec
。 -
ENCRYPTION_TYPE:備份排程建立的備份加密類型。可能的值為
USE_DATABASE_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。如果備份類型為incremental-backup
,加密類型必須為GOOGLE_DEFAULT_ENCRYPTION
。 - RETENTION_DURATION:排程建立的備份保留期限。
HTTP 方法和網址:
POST https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules?backup_schedule_id=SCHEDULE_ID
JSON 要求主體:
{ "retentionDuration": "RETENTION_DURATION", "spec": { "cronSpec": { "text": "0 2 * * *" } }, "encryptionConfig": { "encryptionType": "ENCRYPTION_TYPE" }, "BACKUP_TYPE": {} }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID", "retentionDuration": "86400s", "encryptionConfig": { "encryptionType": "USE_DATABASE_ENCRYPTION" }, "spec": { "cronSpec": { "text": "0 2 * * *", "timeZone": "UTC", "creationWindow": "14400s" } }, "BACKUP_TYPE": {}, "updateTime": "2024-05-22T11:13:51.835590Z" }
用戶端程式庫
C#
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:C++
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:Go
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:Java
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:Node.js
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:PHP
如要建立完整備份時間表,請參閱下列程式碼範例:
Python
如要建立完整備份時間表,請參閱下列程式碼範例:
如要建立增量備份時間表,請參閱下列程式碼範例:取得備份排程
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含資料庫的執行個體。
按一下資料庫。
在導覽選單中,按一下「Backup/Restore」。
按一下「排程」分頁標籤,即可查看所有備份時程和相關資訊。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules describe SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID
Windows (PowerShell)
gcloud spanner backup-schedules describe SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID
Windows (cmd.exe)
gcloud spanner backup-schedules describe SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID
您應該會收到類似以下的回應:
{ encryptionConfig: encryptionType: USE_DATABASE_ENCRYPTION incrementalBackupSpec: {} name: projects/my-project/instances/my-instance/databases/my-database/backupSchedules/my-schedule retentionDuration: 2592000s spec: cronSpec: creationWindow: 14400s text: 0 */4 * * * timeZone: UTC updateTime: '2024-09-13T10:24:18.754839Z' }
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
HTTP 方法和網址:
GET https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID", "retentionDuration": "100000s", "encryptionConfig": { "encryptionType": "USE_DATABASE_ENCRYPTION" }, "spec": { "cronSpec": { "text": "0 2 * * *", "timeZone": "UTC", "creationWindow": "14400s" } }, "fullBackupSpec": {}, "updateTime": "2024-05-22T11:13:51.835590Z" }
用戶端程式庫
C#
C++
Go
Java
Node.js
PHP
Python
列出備份排程
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含資料庫的執行個體。
按一下資料庫。
在導覽選單中,按一下「Backup/Restore」。
按一下「排程」分頁標籤,即可查看所有備份時程和相關資訊。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules list \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID
Windows (PowerShell)
gcloud spanner backup-schedules list ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID
Windows (cmd.exe)
gcloud spanner backup-schedules list ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID
您應該會收到類似以下的回應:
Name | Backup type | Cron | Retention duration | Encryption type |
---|---|---|---|---|
my-full-schedule | FULL | 30 12 * * * | 2592000s | USE_DATABASE_ENCRYPTION |
my-incr-schedule | INCREMENTAL | 0 */4 * * * | 2592000s | USE_DATABASE_ENCRYPTION |
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
HTTP 方法和網址:
GET https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "backupSchedules": [ { "name": "projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID", "retentionDuration": "172800s", "encryptionConfig": { "encryptionType": "USE_DATABASE_ENCRYPTION" }, "spec": { "cronSpec": { "text": "0 */12 * * *", "timeZone": "UTC", "creationWindow": "14400s" } }, "fullBackupSpec": {}, "updateTime": "2024-09-09T07:21:43.946180Z" }, { "name": "projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID", "retentionDuration": "2592000s", "encryptionConfig": { "encryptionType": "CUSTOMER_MANAGED_ENCRYPTION", "kmsKeyName": "projects/PROJECT_ID/locations/us-central1/keyRings/cmek-demo/cryptoKeys/test-key" }, "spec": { "cronSpec": { "text": "30 12 * * *", "timeZone": "UTC", "creationWindow": "14400s" } }, "fullBackupSpec": {}, "updateTime": "2024-09-17T18:27:53.868741Z" } ] }
用戶端程式庫
C#
C++
Go
Java
Node.js
PHP
Python
更新備份排程
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含資料庫的執行個體。
按一下資料庫。
在導覽選單中,按一下「Backup/Restore」。
按一下「時程」分頁標籤。
選取備份時間表的「更多動作」,然後按一下「更新」。
您可以更新備份時間表的頻率和保留時間。如果是完整備份時間表,您也可以更新加密類型。
按一下 [儲存]。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要修改備份時程的執行個體 ID。
- DATABASE_ID:您要修改備份時間表的資料庫 ID。
- RETENTION_DURATION:排程建立的備份保留期限。
-
CRONTAB_EXPRESSION:備份排程頻率的 crontab 運算式。舉例來說,如果您希望備份時間表的頻率為每 12 小時,可以使用
0 12 * * *
。 -
ENCRYPTION_TYPE:備份時間表建立的備份加密類型。有效值為
USE_DATABASE_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。如果備份類型為incremental-backup
,則加密類型必須為GOOGLE_DEFAULT_ENCRYPTION
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules update SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID \ --retention-duration=RETENTION_DURATION \ --cron="CRONTAB_EXPRESSION" \ --encryption-type=ENCRYPTION_TYPE
Windows (PowerShell)
gcloud spanner backup-schedules update SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID ` --retention-duration=RETENTION_DURATION ` --cron="CRONTAB_EXPRESSION" ` --encryption-type=ENCRYPTION_TYPE
Windows (cmd.exe)
gcloud spanner backup-schedules update SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID ^ --retention-duration=RETENTION_DURATION ^ --cron="CRONTAB_EXPRESSION" ^ --encryption-type=ENCRYPTION_TYPE
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要修改備份時程的執行個體 ID。
- DATABASE_ID:您要修改備份時間表的資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
-
RETENTION_DURATION:依排程建立的備份保留期限。舉例來說,如果您想要保留期限為一天,請指定
86400s
。 -
ENCRYPTION_TYPE:備份時間表建立的備份加密類型。可能的值為
USE_DATABASE_ENCRYPTION
、GOOGLE_DEFAULT_ENCRYPTION
或CUSTOMER_MANAGED_ENCRYPTION
。如果您使用CUSTOMER_MANAGED_ENCRYPTION
,則必須指定kmsKeyName
。如果備份類型為incremental-backup
,則加密類型必須為GOOGLE_DEFAULT_ENCRYPTION
。
HTTP 方法和網址:
PATCH https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID?updateMask=retention_duration,encryption_config,spec.cron_spec.text
JSON 要求主體:
{ "retentionDuration": "RETENTION_DURATION", "spec": { "cronSpec": { "text": "0 2 * * *" } "encryptionConfig": { "encryptionType": "ENCRYPTION_TYPE" }, }, }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID", "retentionDuration": "86400s", "encryptionConfig": { "encryptionType": "USE_DATABASE_ENCRYPTION" }, "spec": { "cronSpec": { "text": "0 2 * * *", "timeZone": "UTC", "creationWindow": "14400s" } }, "fullBackupSpec": {}, "updateTime": "2024-05-22T11:13:51.835590Z" }
用戶端程式庫
C#
C++
Go
Java
Node.js
PHP
Python
刪除備份排程
控制台
前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。
按一下包含資料庫的執行個體。
按一下資料庫。
在導覽選單中,按一下「Backup/Restore」。
選取備份時間表的「更多動作」,然後按一下「刪除」。
輸入備份排程名稱。
按一下「確認」。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要刪除備份時間表的執行個體 ID。
- DATABASE_ID:要刪除備份時間表的資料庫 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules delete SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID
Windows (PowerShell)
gcloud spanner backup-schedules delete SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID
Windows (cmd.exe)
gcloud spanner backup-schedules delete SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:您要刪除備份時間表的執行個體 ID。
- DATABASE_ID:要刪除備份時間表的資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
HTTP 方法和網址:
DELETE https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
用戶端程式庫
C#
C++
Go
Java
Node.js
PHP
Python
設定 IAM 存取權控管政策
您可以設定 IAM 存取權政策,指定哪些使用者可以存取備份排程。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules set-iam-policy SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID \ policy.json
Windows (PowerShell)
gcloud spanner backup-schedules set-iam-policy SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID ` policy.json
Windows (cmd.exe)
gcloud spanner backup-schedules set-iam-policy SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID ^ policy.json
您應該會收到類似以下的回應:
Updated IAM policy for backupSchedule [SCHEDULE_ID]. bindings: - members: - user:test@google.com role: roles/editor etag: BwYi82k-fho= version: 1
policy.json
檔案範例:{ "version": 1, "etag": "BwYi8ypICC0=", "bindings": [ { "role": "roles/editor", "members": [ "user:test@gmail.com" ] } ] }
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
HTTP 方法和網址:
POST https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID:setIamPolicy?alt=json
JSON 要求主體:
{ "policy": { "version": 1, "etag": "BwYi8ypICC0=", "bindings": [ { "role": "roles/editor", "members": [ "user:test@gmail.com" ] } ] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ { "version": 1, "etag": "etag", "bindings": [ { "role": "roles/non-primitive", "members": [ "user:test@gmail.com" ] } ] } }
取得身分與存取權管理政策
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud spanner backup-schedules get-iam-policy SCHEDULE_ID \ --project=PROJECT_ID \ --instance=INSTANCE_ID \ --database=DATABASE_ID
Windows (PowerShell)
gcloud spanner backup-schedules get-iam-policy SCHEDULE_ID ` --project=PROJECT_ID ` --instance=INSTANCE_ID ` --database=DATABASE_ID
Windows (cmd.exe)
gcloud spanner backup-schedules get-iam-policy SCHEDULE_ID ^ --project=PROJECT_ID ^ --instance=INSTANCE_ID ^ --database=DATABASE_ID
您應該會收到類似以下的回應:
bindings: - members: - user:test@gmail.com role: roles/editor etag: BwYi82k-fho= version: 1
REST v1
使用任何要求資料之前,請先替換以下項目:
- INSTANCE_ID:執行個體 ID。
- DATABASE_ID:資料庫 ID。
- SCHEDULE_ID:備份時間表 ID。
- PROJECT_ID:專案 ID。
HTTP 方法和網址:
POST https://spanner.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID/backupSchedules/SCHEDULE_ID:getIamPolicy?alt=json
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ { "version": 1, "etag": "BwYbyZ9pc4o=", "bindings": [ { "role": "roles/editor", "members": [ "user:test@gmail.com" ] } ] } }