本页面提供了有关 Spanner 备份操作的信息。 如需详细了解备份,请参阅备份概览。
准备工作
-
如需获得管理备份所需的权限,请让管理员向您授予实例的以下 IAM 角色:
-
创建、查看、更新和删除备份:Cloud Spanner Backup Admin (
roles/spanner.backupAdmin
) -
创建和查看备份:Cloud Spanner Backup Writer (
roles/spanner.backupWriter
)
-
创建、查看、更新和删除备份:Cloud Spanner Backup Admin (
此页面上的 gcloud CLI 示例做出了以下假设:
- 您已设置 gcloud CLI 来搭配使用 Spanner。如果您是第一次将 gcloud CLI 与 Spanner 搭配使用,请参阅 使用 gcloud CLI 开始使用 Spanner。
您已为项目配置了 gcloud CLI。例如:
gcloud config set core/project PROJECT_ID
复制备份
控制台
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击包含您要复制的数据库的实例。
点击数据库。
在导航窗格中,点击备份/恢复。
在备份表中,选择备份的操作,然后点击复制。
填写表单,选择目标实例,提供名称,然后 选择备份副本的失效日期。
点击复制。
如需检查复制操作的进度,请参阅检查操作进度。
如果操作耗时过长,您可以取消操作。如需了解详情,请参阅 取消长时间运行的实例操作。
gcloud
您可以将备份复制到同一项目中的不同实例,也可以 不同项目中的不同实例。
在同一项目中复制备份
如果您选择将备份复制到同一项目中的其他实例,则必须为复制的备份创建一个新实例(或已准备好一个新实例)。您
在备份复制操作过程中无法创建新实例。此外,
备份的到期时间必须至少为自备份之日起 6 小时
当前复制请求已得到处理,最多在 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=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=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=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/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'
将备份复制到其他项目
如果您选择将备份复制到其他项目,您必须拥有另一个
项目,并且拥有自己的实例以用于复制的备份。您不能创建
在备份复制操作中启动新项目。此外,
备份的到期时间必须至少为自备份之日起 6 小时
当前复制请求已得到处理,最多在来源 366 天后
备份 create_time
。
在使用下面的命令数据之前,请先进行以下替换:
- 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/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/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/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/INSTANCE_ID/databases/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 实例页面。
点击包含要查看其备份操作的数据库的实例。
点击相应数据库。
在导航窗格中,点击操作。操作页面会显示 正在运行的操作
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 实例页面。
点击包含要查看其备份信息的数据库的实例。
点击数据库打开其概览页面。
在导航窗格中,点击备份/恢复。您可以查看备份 数据库所选备份的信息。
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 实例页面。
点击您的实例可查看所有可用备份及其信息。
在导航窗格中,点击备份/恢复。
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 实例页面。
点击包含数据库的实例,打开其概览页面。
点击数据库打开其概览页面。
在导航窗格中,点击备份/恢复。
点击所选备份的操作按钮,然后选择 更新元数据。
选择新的过期日期。
点击更新。
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 实例页面。
点击包含数据库的实例,打开其概览页面。
点击数据库打开其概览页面。
在导航窗格中,点击备份/恢复。
点击所选备份的操作按钮,然后选择 删除。
输入备份 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