本页面介绍了 Spanner 备份时间表操作,并说明了如何 为您的数据库设置备份计划。
准备工作
-
如需获得创建和管理备份时间表所需的权限,请让管理员向您授予实例的以下 IAM 角色:
-
创建、查看、更新和删除备份时间表:Cloud Spanner Backup Admin (
roles/spanner.backupAdmin
) -
创建和查看备份时间表:Cloud Spanner Backup Writer (
roles/spanner.backupWriter
)
-
创建、查看、更新和删除备份时间表:Cloud Spanner Backup Admin (
创建备份时间表
控制台
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击包含数据库的实例。
点击数据库。
在导航菜单中,点击备份/恢复。
点击创建备份时间表。
填写表单,然后点击创建。
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
如需创建完整备份时间表,请参阅以下示例代码:
如需创建增量备份时间表,请参阅以下示例代码:Python
如需创建完整备份时间表,请参阅以下示例代码:
如需创建增量备份时间表,请参阅以下示例代码:获取备份时间表
控制台
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击包含数据库的实例。
点击数据库。
在导航菜单中,点击备份/恢复。
点击时间表标签页可查看所有备份时间表及其信息。
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
Python
列出备份时间表
控制台
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击包含数据库的实例。
点击数据库。
在导航菜单中,点击备份/恢复。
点击时间表标签页可查看所有备份时间表及其信息。
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
Python
更新备份时间表
控制台
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击包含数据库的实例。
点击数据库。
在导航菜单中,点击备份/恢复。
点击时间安排标签页。
选择备份时间表对应的更多操作,然后点击更新。
您可以更新备份时间表的频率和保留时间。如果是完整备份时间表,您还可以更新加密类型。
点击保存。
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:由时间表创建的备份的保留时长。例如,如果您希望将保留期限设为 1 天
指定
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
Python
删除备份时间表
控制台
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击包含数据库的实例。
点击数据库。
在导航菜单中,点击备份/恢复。
针对备份时间表选择更多操作,然后点击删除。
输入备份时间表名称。
点击确认。
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
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" ] } ] } }
获取 IAM 访问权限控制政策
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" ] } ] } }