本页面介绍了如何在 Spanner 中移动实例。
您可以将 Spanner 实例从任何实例配置迁移到任何其他实例配置,包括单区域配置和多区域配置。移动实例不会导致停机,并且 Spanner 在移动期间继续提供常见的事务保证,包括强一致性。
为何移动 Spanner 实例?
移动实例的好处包括:
- 提高可用性:执行区域到多区域迁移后,可实现 99.999% 的可用性,且无需停机。
- 缩短延迟时间:通过单区域到多区域或者多区域到多区域的迁移,通过额外的只读副本缩短延迟时间并扩大地理覆盖范围。
- 降低费用:从多区域配置迁移到单区域配置,以降低每小时费用。
- 共置数据库:通过将实例移至更优化的位置,将 Spanner 数据库与客户端应用共置。
价格
移动实例时,源实例和目标实例配置都会产生每小时计算和存储费用。移动完成后,您需要支付目标配置下的实例存储费用。
如果您将实例迁移到新的单区域或多区域实例配置,则可能需要支付出站数据传输费用。如需了解详情,请参阅 Spanner 价格。
限制
- 如需移动实例,该实例必须至少有 1 个节点(1000 个处理单元)。
- 您无法在项目和 Google Cloud 帐号之间移动实例。
- 您无法移动 Spanner 免费试用实例。您可以在升级到付费实例后移动实例。
- 如果您对任何实例资源使用区域服务端点的有效请求,则实例移动会影响使用区域端点的所有请求,因为区域强制执行会阻止访问跨区域实例。使用全球端点的请求不受影响。
- Spanner 备份特定于实例配置,在移动实例时不包括在内。如需了解详情,请参阅源实例配置中的备份。
- 以下 API 在实例移动期间停用:
InstanceAdmin.DeleteInstance
InstanceAdmin.UpdateInstance
DatabaseAdmin.CreateDatabase
DatabaseAdmin.UpdateDatabaseDdl
(如果在请求中指定default_leader
,则此政策已停用。)DatabaseAdmin.RestoreDatabase
DatabaseAdmin.CreateBackup
DatabaseAdmin.CopyBackup
- 您无法移动包含任何启用了 CMEK 的数据库的实例。
- 如果数据库具有已修改的默认主要副本,且该数据库在目标实例配置中指定了读写区域,并且该配置是多区域,则系统会保留该选择。如果目标配置是区域性的,或者不包含指定的读写区域,则系统会清除默认主要区域选择。
- 移动实例会更改实例的实例配置属性。如果您通过自动化管理 Spanner 资源,请务必准备好并解决可能出现的任何不一致问题。
- 例如,如果您使用 Terraform 管理 Spanner 实例和数据库,并且启用了
terraform apply --auto-approve
以使资源保持同步,则当我们移动实例时,所有实例和子资源都会被删除。相应地更新配置,以免被删除和数据丢失。如需详细了解apply
命令,请参阅 Terraform 应用选项。
- 例如,如果您使用 Terraform 管理 Spanner 实例和数据库,并且启用了
- 在移动实例时,Spanner 监控指标和图表可能会同时在源实例和目标实例配置中显示数据,或者可能仅反映一种实例配置的性能。
- 如果您已配置开源自动扩缩器工具,则无需将其停用。失败的原因是 InstanceAdmin.UpdateInstance(用于节点和处理单元更改)已停用。
- 如果对实例启用了 Spanner 管理的自动扩缩器功能,则无法移动该实例。如需移动实例,您需要停用代管式自动扩缩器,移动实例,然后重新启用代管式自动扩缩器。
性能考虑因素
移动实例时,该实例会经历更高的读写延迟时间和更高的事务中止率。移动过程中的 CPU 利用率可能高达 100%,因为实例移动是使用用户预配的备用 CPU 执行的。但是,移动实例不会导致任何停机。移动实例所需的时间取决于各种因素,包括数据库的大小、节点数和移动类型(例如,从单区域位置到多区域位置)。
移动实例后,实例的性能会因实例配置的详细信息而异。例如,与单区域配置相比,多区域配置通常具有更长的写入延迟时间和更低的读取延迟时间。
如何移动实例
您可以使用 Google Cloud 控制台移动实例配置。首先,系统会要求您填写实例移动请求表单。然后,Spanner 团队会跟进实例移动的开始日期。 请注意,移动实例不会更改实例的名称、ID 或项目 ID。
前提条件
在发出移动实例配置的请求之前,请确保您已阅读限制和性能注意事项部分。然后,请按以下步骤操作:
- 检查您是否对源实例具有
spanner.instances.update
IAM 权限。 - 为要移动的实例添加资源标签。此标签的键是“move-to”,值为目标实例配置的名称(例如“us-east4”)。如需了解详情,请参阅为实例添加标签。
- 如果适用,请在移动生产实例之前请求移动非生产实例(例如,测试和预演),以帮助评估和了解实例移动期间对工作负载的性能影响。
- 移动 Spanner 实例时,移动过程会删除您在 Data Catalog 中创建的实例标记。要保留代码,您需要在移动之前导出代码,并在移动后导入代码。如需了解详情,请参阅导出和导入代码。
有关最佳实践,还请遵循以下准则:
- 移动生产实例之前,请先使用目标实例配置在非生产实例中测试性能工作负载。
- 使用 Key Visualizer 检查数据库中是否存在热点。
- 查看以确保目标实例配置中有足够的节点配额来支持实例的预期峰值使用量。如需了解详情,请参阅 Spanner 配额和限制。
确保实例的 CPU 利用率峰值未超出您要将源实例配置移至的实例配置类型对应的建议上限阈值。
此外,如果您要使用自动扩缩,则必须根据记录的最大建议数预配足够的节点来应对峰值 CPU 使用率,然后在移动实例之前停用自动扩缩。
请勿在迁移过程中更改实例。这包括更改实例节点数、更改数据库架构、创建或删除数据库或者创建或删除备份。
移动实例
控制台
转到 Google Cloud 控制台中的 Spanner 实例页面。
点击要移动的实例的名称。
Google Cloud 控制台会显示该实例的概览页面。
点击修改实例。
如需安排迁移到新实例配置,请点击与 Google 联系,然后填写 Spanner 实例移动请求表单。
提交表单后,Google 会与您联系,告知您实例移动的开始日期。
源实例配置中的备份
移动 Spanner 实例配置时,源实例中的备份不会自动移动到新的目标配置。在移动实例配置之前,请务必复制备份并考虑数据恢复方案。
如果源实例中有需要的备份,则必须先将备份复制到与要移动的源实例具有相同实例配置的另一个实例。将备份复制到另一个实例后,必须先删除源实例中的所有现有备份,然后才能将实例配置移至新实例配置。如果在安排实例移动时源实例配置中存在备份,则 Google 不会移动您的实例。建议您在尽可能接近移动日期(由 Google 发出通知)时复制备份。
如需详细了解如何复制备份和相关费用,请参阅复制备份。
提交迁移请求后该怎么做
发出实例移动请求后,Google 会与您联系,告知您实例配置移动的开始日期。一般来说,我们预计会在两个工作日内回复所有迁移请求。
收到我们确认的迁移日期后,请将迁移日期告知所有相关方,并准备好复制您想要保留的任何备份。
后续步骤
- 详细了解 Spanner 的单区域和多区域配置。
- 详细了解 Google Cloud 区域和可用区。