移动实例

本页面介绍了如何在 Spanner 中移动实例。

您可以从任何实例迁移 Spanner 实例 任何其他实例配置, 包括单区域、双区域和多区域配置之间的连接。正在移动 实例不会导致停机,而 Spanner 会继续 提供常规的交易保证, 包括在迁移过程中的强一致性

您也可以从来源实例配置迁移实例 自定义实例配置(例如 nam3 基本配置) 具有 us-west2 只读副本)。因为您无法更新拓扑 您需要创建新的自定义实例 配置。创建新的自定义 您可以移动实例,使其从源实例 复制到新的自定义实例配置

为什么要迁移 Spanner 实例?

移动实例的好处包括:

  • 提高可用性:实现 99.999% 的可用性,且无需停机 执行单区域到双区域或多区域迁移后。
  • 缩短延迟时间:缩短延迟时间并扩大地理覆盖范围 通过单区域位置到双区域位置或多区域位置,增加更多只读副本 或多区域间迁移
  • 降低费用:通过从双区域或多区域迁移来降低每小时费用 配置为区域级配置
  • 共置数据库:将 Spanner 数据库与 将实例移到更优化的位置。

价格

移动实例时,来源实例和目标实例的配置 需支付每小时的计算和存储费用。 移动完成后,您需要为 Cloud Storage 存储分区中 目标位置配置。

如果您要将实例迁移到新的单区域、双区域或多区域 实例配置,您可能需要支付出站数据传输费用。 如需了解详情,请参阅 Spanner 价格

限制

  • 要移动实例,它必须至少 1 个节点(1000 个处理单元)
  • 您无法跨项目和 Google Cloud 账号迁移实例。
  • 您无法迁移 Spanner 免费试用实例。 您可以在升级到付费实例后迁移实例。
  • 如果您有使用区域级服务端点的有效请求 任何实例资源上,则实例迁移会影响所有请求 使用区域级端点,因为区域级强制执行会阻止 对跨区域实例的访问权限。使用全球端点的请求包括 不受影响。
  • Spanner 备份专用于 实例配置,移动实例时不包括在内。对于 如需了解详情,请参阅备份
  • 实例移动期间会停用以下 API: <ph type="x-smartling-placeholder">
      </ph>
    • 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 命令。
  • 在移动实例时,Spanner 会监控 指标和图表可能同时显示来源和目标中的数据 也可能仅反映一个实例的性能 配置。
  • 如果您已经配置了开源自动扩缩器工具,则无需 您需要将其停用请求失败,原因是 InstanceAdmin.UpdateInstance(用于 节点和处理单元更改)停用。
  • 如果存在以下情况,您将无法移动实例: Spanner 代管式自动扩缩器 功能如需移动实例,您需要停用 移动实例,然后重新启用托管式 自动扩缩器。

    此外,如果您使用自动扩缩, 您必须根据 记录的最大建议数量,然后停用自动扩缩功能, 您需要移动实例

性能考虑因素

移动实例时,读写延迟时间会更长, 事务中止率较高。迁移过程中的 CPU 利用率可能会上升 因为实例移动是使用 用户。但是,移动实例不会导致任何停机。时间 迁移实例所需的时间取决于各种因素,包括 数据库、节点数量和迁移类型(例如,从区域迁移到 多区域)。

移动实例后,实例的性能取决于 实例配置的详细信息例如: 双区域多区域配置 相较于 单区域配置

备份

移动实例时,源实例中的备份不会移至 自动创建新的目标位置配置。如果出现以下情况,实例移动将取消: 启动实例时,源实例配置中存在备份 移动。请务必复制您的备份,并考虑 数据恢复方案,然后再转移 实例。

如果需要保留源实例中的备份,我们建议您 您需要将备份复制到 目标实例配置和具有相同实例的另一个实例 配置为要移动的源实例。如此一来:

  • 您可以将备份复制到目标实例配置 实例移动完成后立即启动
  • 如果您需要取消实例移动,也可以快速恢复 包含与来源配置相同的实例的备份 实例配置。

将备份复制到另一个实例后,您必须删除所有现有的 先备份源实例,然后才能移动实例。然后, 实例移动完成后,目标位置中有一个备份的副本 配置。您也可以创建新的备份

如需详细了解如何复制备份和相关费用,请参阅复制备份

如何移动实例

您可以使用 Google Cloud 控制台 Cloud Shell 来移动实例, 通过 gcloud 命令访问 gcloud CLI。

前提条件

在迁移实例配置之前,请确保您已 请参阅使用限制性能注意事项 部分。然后,请按以下步骤操作:

  1. 检查您是否具有 spanner.instances.update IAM 权限 来源实例上的节点
  2. 如果适用,请迁移非生产实例 (例如测试和预演),然后再迁移生产实例, 评估并了解实例运行期间对工作负载的性能影响 移动。
  3. 移动 Spanner 实例时, 移动进程会删除您在 Data Catalog 的数据。为了保留您的 您需要导出自己的代码 并在移动后导入这些文件如需了解详情,请参阅 导出和导入代码

对于最佳实践,还应遵循以下准则:

  • 在目标中的非生产实例中测试性能工作负载 实例配置。试试看 移动与生产实例类似的预演实例 了解迁移生产实例需要多长时间。
  • 使用 Key Visualizer 检查您的数据库中是否存在热点。
  • 请检查以确保您有足够的节点配额 ,以支持预期的峰值使用量 实例。如需了解详情,请参阅 Spanner 配额和限制
  • 确保集群上的峰值 CPU 利用率 对于您已移动的实例配置,您的实例的比例小于 40%, 每个节点的存储空间小于 1 TB (TiB)。
  • 请勿在移动期间对实例进行更改。这个 包括更改实例节点数、更改数据库架构 创建或删除数据库,以及创建或删除备份。

如果您根据这些建议迁移实例, 通常会在 24 小时内完成。不过,根据具体应用 完成时间可能更长或更短

移动实例

Google Cloud 控制台

  1. 点击 激活 Cloud Shell 图标 在 Google Cloud 控制台顶部激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台底部,并显示命令行提示。 该会话可能需要几秒钟来完成初始化。

  2. 使用 gcloud spanner instances move 命令来移动实例。

    gcloud spanner instances move INSTANCE_ID \
    --target-config=TARGET_CONFIG
    

    替换以下内容:

    • INSTANCE_ID:需要关联的实例的永久性标识符 您想要移动的位置。
    • TARGET_CONFIG:实例的永久性标识符 将实例移动到的目标配置。新的地理位置 实例的位置可以是单区域、双区域 多区域位置或自定义实例配置(例如 nam3us-central1custom-nam3-us-west2).

例如,如需将实例 test-instance 从当前状态 实例配置为 nam3,请运行以下命令:

  gcloud spanner instances move test-instance --target-config=nam3

可选:如果要将只读副本 us-west2 添加到基本副本 实例配置 nam3,请执行以下操作:

  1. 克隆基本配置并添加只读副本:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. 将您的实例 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:实例的永久性标识符 将实例移动到的目标配置。新的地理位置 实例的位置可以是单区域、双区域或 多区域实例配置(例如 nam3us-central1、 或 custom-nam3-us-west2)。

例如,如需将实例 test-instance 从当前状态 实例配置为 nam3,请运行以下命令:

  gcloud spanner instances move test-instance --target-config=nam3

可选:如果要将只读副本 us-west2 添加到基本副本 实例配置 nam3,请执行以下操作:

  1. 克隆基本配置并添加只读副本:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. 将您的实例 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 操作。

  1. 通过运行以下命令获取实例移动操作的操作 ID:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    替换以下内容:

    • INSTANCE-ID:您要创建的实例的永久性标识符 想要移动的对象

    输出会显示长时间运行的操作的列表,包括实例移动 操作。

  2. 运行 gcloud spanner operations describe 命令以查看进度 百分比和状态:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    替换以下内容:

    • OPERATION_ID:实例移动操作的操作 ID 您想要检查的内容。
    • INSTANCE_ID:您要访问的实例的 ID 检查。

监控实例移动操作

您可以创建自定义 Cloud Monitoring 信息中心以显示和监控 指标、实例迁移期间的长时间运行的操作、 服务影响

总存储空间总数据库存储空间(按数据库)图表 信息中心可帮助您监控迁移进度。您可以看到 来源配置中的存储空间会逐渐减少,而 目的地配置增加。

Google Cloud 控制台

  1. 下载move-instance-dashboard.json 文件。此文件包含填充自定义信息中心所需的信息 。
  2. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  3. 信息中心概览页面中,点击创建信息中心
  4. 在信息中心工具栏中,点击信息中心设置下拉菜单。然后 依次选择 JSONJSON 编辑器
  5. JSON 编辑器窗格中,复制 move-instance-dashboard.json 文件并将其粘贴到 编辑器。
  6. 要将更改应用到信息中心,请点击应用更改。如果您 不想使用此信息中心,请返回到“信息中心” “概览”页。
  7. 创建信息中心后,点击添加过滤条件。然后选择 project_idinstance_id(用于监控实例的进度) 移动。

gcloud CLI

  1. 下载move-instance-dashboard.json 文件。此文件包含填充自定义信息中心所需的信息 。
  2. 如需在项目中创建信息中心,请使用 gcloud monitoring dashboards create 命令:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    如需了解详情,请参阅 gcloud monitoring dashboards create 参考文档。

如何取消实例移动

您只能取消仍在进行中的实例移动。如果您想 要还原已完成的实例移动,则必须开始新的移动。

您可以使用 gcloud spanner operations cancel 来取消实例移动操作。无法即时取消 所用的时间与 移动的起点这是因为数据必须移回源实例 配置。

此命令需要正在进行实例移动的操作 ID 操作。

  1. 通过运行以下命令获取操作 ID:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    替换以下内容:

    • INSTANCE_ID:您要创建的实例的永久性标识符 想要移动的对象

    输出会显示进行中的实例移动操作的列表。

  2. 运行 gcloud spanner operations cancel 命令以取消实例 移动:

    gcloud spanner operations cancel OPERATION_ID
    

    替换以下内容:

    • OPERATION_ID:要执行的实例移动操作的操作 ID 。

后续步骤