本页面介绍了如何在 Spanner 中移动实例。
您可以从任何实例迁移 Spanner 实例 任何其他实例配置, 包括单区域、双区域和多区域配置之间的连接。正在移动 实例不会导致停机,而 Spanner 会继续 提供常规的交易保证, 包括在迁移过程中的强一致性
您也可以从来源实例配置迁移实例
自定义实例配置(例如 nam3
基本配置)
具有 us-west2
只读副本)。因为您无法更新拓扑
您需要创建新的自定义实例
配置。创建新的自定义
您可以移动实例,使其从源实例
复制到新的自定义实例配置
为什么要迁移 Spanner 实例?
移动实例的好处包括:
- 提高可用性:实现 99.999% 的可用性,且无需停机 执行单区域到双区域或多区域迁移后。
- 缩短延迟时间:缩短延迟时间并扩大地理覆盖范围 通过单区域位置到双区域位置或多区域位置,增加更多只读副本 或多区域间迁移
- 降低费用:通过从双区域或多区域迁移来降低每小时费用 配置为区域级配置
- 共置数据库:将 Spanner 数据库与 将实例移到更优化的位置。
价格
移动实例时,来源实例和目标实例的配置 需支付每小时的计算和存储费用。 移动完成后,您需要为 Cloud Storage 存储分区中 目标位置配置。
如果您要将实例迁移到新的单区域、双区域或多区域 实例配置,您可能需要支付出站数据传输费用。 如需了解详情,请参阅 Spanner 价格。
限制
- 要移动实例,它必须至少 1 个节点(1000 个处理单元)。
- 您无法跨项目和 Google Cloud 账号迁移实例。
- 您无法迁移 Spanner 免费试用实例。 您可以在升级到付费实例后迁移实例。
- 如果您有使用区域级服务端点的有效请求 任何实例资源上,则实例迁移会影响所有请求 使用区域级端点,因为区域级强制执行会阻止 对跨区域实例的访问权限。使用全球端点的请求包括 不受影响。
- Spanner backups专用于 实例配置,移动实例时不包括在内。对于 如需了解详情,请参阅备份。
- 实例移动期间会停用以下 API:
InstanceAdmin.DeleteInstance
InstanceAdmin.UpdateInstance
DatabaseAdmin.CreateDatabase
DatabaseAdmin.UpdateDatabaseDdl
(如果default_leader
为已停用,则会停用 。)DatabaseAdmin.RestoreDatabase
DatabaseAdmin.CreateBackup
DatabaseAdmin.CopyBackup
- 您无法移动包含任何已启用 CMEK 的实例 数据库。
- 如果数据库有修改后的默认主要副本, 选择在 目标实例配置,并且该配置是 多区域位置如果目标配置是区域级的,或者不是区域级配置 包含已命名的读写区域,默认主要区域为 已清除。
- 移动实例会更改
实例。如果您通过
自动化,请确保做好准备,并解决任何可能
出现了。
- 例如,如果您使用 Terraform 来
管理 Spanner 实例和数据库,
启用
terraform apply --auto-approve
以保持资源同步, 移动实例时,所有实例和子资源都会被删除。 相应地更新配置,以免被删除和数据丢失。请参阅 Terraform Apply 选项 ,详细了解apply
命令。
- 例如,如果您使用 Terraform 来
管理 Spanner 实例和数据库,
启用
- 在移动实例时,Spanner 会监控 指标和图表可能同时显示来源和目标中的数据 也可能仅反映一个实例的性能 配置。
- 如果您已经配置了开源自动扩缩器工具,则无需
您需要将其停用请求失败,原因是
InstanceAdmin.UpdateInstance
(用于 节点和处理单元更改)停用。 如果存在以下情况,您将无法移动实例: Spanner 代管式自动扩缩器 功能如需移动实例,您需要停用 移动实例,然后重新启用托管式 自动扩缩器。
此外,如果您使用自动扩缩, 您必须根据 记录的最大建议数量,然后停用自动扩缩功能, 您需要移动实例
性能考虑因素
移动实例时,读写延迟时间会更长, 事务中止率较高。迁移过程中的 CPU 利用率可能会上升 因为实例移动是使用 用户。但是,移动实例不会导致任何停机。时间 迁移实例所需的时间取决于各种因素,包括 数据库、节点数量和迁移类型(例如,从区域迁移到 多区域)。
移动实例后,实例的性能取决于 实例配置的详细信息例如: 双区域和 多区域配置 相较于 单区域配置。
备份
移动实例时,源实例中的备份不会移至 自动创建新的目标位置配置。如果出现以下情况,实例移动将取消: 启动实例时,源实例配置中存在备份 移动。请务必复制您的备份,并考虑 数据恢复方案,然后再转移 实例。
如果需要保留源实例中的备份,我们建议您 您需要将备份复制到 目标实例配置和具有相同实例的另一个实例 配置为要移动的源实例。如此一来:
- 您可以将备份复制到目标实例配置 实例移动完成后立即启动
- 如果您需要取消实例移动,也可以快速恢复 包含与来源配置相同的实例的备份 实例配置。
将备份复制到另一个实例后,您必须删除所有现有的 先备份源实例,然后才能移动实例。然后, 实例移动完成后,目标位置中有一个备份的副本 配置。您也可以创建新的备份。
如需详细了解如何复制备份和相关费用,请参阅复制备份。
如何移动实例
您可以使用 Google Cloud 控制台 Cloud Shell 来移动实例,
通过 gcloud
命令访问 gcloud CLI。
前提条件
在迁移实例配置之前,请确保您已 请参阅使用限制 和性能注意事项 部分。然后,请按以下步骤操作:
- 检查您是否具有
spanner.instances.update
IAM 权限 来源实例上的节点 - 如果适用,请迁移非生产实例 (例如测试和预演),然后再迁移生产实例, 评估并了解实例运行期间对工作负载的性能影响 移动。
- 移动 Spanner 实例时, 移动进程会删除您在 Data Catalog 的数据。为了保留您的 您需要导出自己的代码 并在移动后导入这些文件如需了解详情,请参阅 导出和导入代码。
对于最佳实践,还应遵循以下准则:
- 在目标中的非生产实例中测试性能工作负载 实例配置。试试看 移动与生产实例类似的预演实例 了解迁移生产实例需要多长时间。
- 使用 Key Visualizer 检查您的数据库中是否存在热点。
- 请检查以确保您有足够的节点配额 ,以支持预期的峰值使用量 实例。如需了解详情,请参阅 Spanner 配额和限制。
- 确保集群上的峰值 CPU 利用率 对于您已移动的实例配置,您的实例的比例小于 40%, 每个节点的存储空间小于 1 TB (TiB)。
- 请勿在移动期间对实例进行更改。这个 包括更改实例节点数、更改数据库架构 创建或删除数据库,以及创建或删除备份。
如果您根据这些建议迁移实例, 通常会在 24 小时内完成。不过,根据具体应用 完成时间可能更长或更短
移动实例
Google Cloud 控制台
点击 在 Google Cloud 控制台顶部激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台底部,并显示命令行提示。 该会话可能需要几秒钟来完成初始化。
使用
gcloud spanner instances move
命令来移动实例。gcloud spanner instances move INSTANCE_ID \ --target-config=TARGET_CONFIG
替换以下内容:
- INSTANCE_ID:需要关联的实例的永久性标识符 您想要移动的位置。
- TARGET_CONFIG:实例的永久性标识符
将实例移动到的目标配置。新的地理位置
实例的位置可以是单区域、双区域
多区域位置或自定义实例配置(例如
nam3
、us-central1
或custom-nam3-us-west2
)。
例如,如需将实例 test-instance
从当前状态
实例配置为 nam3
,请运行以下命令:
gcloud spanner instances move test-instance --target-config=nam3
可选:如果要将只读副本 us-west2
添加到基本副本
实例配置 nam3
,请执行以下操作:
克隆基本配置并添加只读副本:
gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
将您的实例
test-instance
从其当前实例中移出 更改为这个新的custom-nam3-us-west2
实例配置:gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
gcloud CLI
使用 gcloud spanner instances move
命令来移动实例。
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG
替换以下内容:
- INSTANCE_ID:需要关联的实例的永久性标识符 您想要移动的位置。
- TARGET_CONFIG:实例的永久性标识符
将实例移动到的目标配置。新的地理位置
实例的位置可以是单区域、双区域或
多区域实例配置(例如
nam3
、us-central1
、 或custom-nam3-us-west2
)。
例如,如需将实例 test-instance
从当前状态
实例配置为 nam3
,请运行以下命令:
gcloud spanner instances move test-instance --target-config=nam3
可选:如果要将只读副本 us-west2
添加到基本副本
实例配置 nam3
,请执行以下操作:
克隆基本配置并添加只读副本:
gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
将您的实例
test-instance
从其当前实例中移出 更改为这个新的custom-nam3-us-west2
实例配置:gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
如何监控实例迁移和取消进度
您可以使用 gcloud spanner operations describe
,也可以创建自定义
Cloud Monitoring 信息中心,用于监控实例迁移的进度。
查看移动和取消操作进度
跟踪实例移动或取消实例移动的进度
操作,请使用 gcloud spanner operations describe
命令。此命令需要正在进行实例移动的操作 ID
操作。
通过运行以下命令获取实例移动操作的操作 ID:
gcloud spanner operations list --instance="INSTANCE_ID"
替换以下内容:
- INSTANCE-ID:您要创建的实例的永久性标识符 想要移动的对象
输出会显示长时间运行的操作的列表,包括实例移动 操作。
运行
gcloud spanner operations describe
命令以查看进度 百分比和状态:gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
替换以下内容:
- OPERATION_ID:实例移动操作的操作 ID 您想要检查的内容。
- INSTANCE_ID:您要访问的实例的 ID 检查。
监控实例移动操作
您可以创建自定义 Cloud Monitoring 信息中心以显示和监控 指标、实例迁移期间的长时间运行的操作、 服务影响
总存储空间和总数据库存储空间(按数据库)图表 信息中心可帮助您监控迁移进度。您可以看到 来源配置中的存储空间会逐渐减少,而 目的地配置增加。
Google Cloud 控制台
- 下载
move-instance-dashboard.json
文件。此文件包含填充自定义信息中心所需的信息 。 -
在 Google Cloud 控制台中,转到 信息中心页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 在信息中心概览页面中,点击创建信息中心。
- 在信息中心工具栏中,点击信息中心设置下拉菜单。然后 依次选择 JSON 和 JSON 编辑器。
- 在 JSON 编辑器窗格中,复制
move-instance-dashboard.json
文件并将其粘贴到 编辑器。 - 要将更改应用到信息中心,请点击应用更改。如果您 不想使用此信息中心,请返回到“信息中心” “概览”页。
- 创建信息中心后,点击添加过滤条件。然后选择
project_id
或instance_id
,用于监控实例的进度 移动。
gcloud CLI
- 下载
move-instance-dashboard.json
文件。此文件包含填充自定义信息中心所需的信息 。 如需在项目中创建信息中心,请使用
gcloud monitoring dashboards create
命令:gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
如需了解详情,请参阅
gcloud monitoring dashboards create
参考文档。
如何取消实例移动
您只能取消仍在进行中的实例移动。如果您想 要还原已完成的实例移动,则必须开始新的移动。
您可以使用 gcloud spanner operations cancel
来取消实例移动操作。无法即时取消
所用的时间与
移动的起点这是因为数据必须移回源实例
配置。
此命令需要正在进行实例移动的操作 ID 操作。
通过运行以下命令获取操作 ID:
gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID" --filter="done:False AND metadata.@type:MoveInstanceMetadata
替换以下内容:
- INSTANCE_ID:您要创建的实例的永久性标识符 想要移动的对象
输出会显示进行中的实例移动操作的列表。
运行
gcloud spanner operations cancel
命令以取消实例 移动:gcloud spanner operations cancel OPERATION_ID
替换以下内容:
- OPERATION_ID:要执行的实例移动操作的操作 ID 。
后续步骤
- 详细了解 Spanner 单区域、双区域和多区域配置。
- 详细了解 Google Cloud 区域和可用区。