使用跨区域复制

本页面介绍了如何通过创建和使用次要集群来使用跨区域复制。

如需从概念上大致了解跨区域复制,请参阅跨区域复制简介

准备工作

  • 您使用的 Google Cloud 项目必须已启用为可访问 AlloyDB
  • 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
    • roles/alloydb.admin(AlloyDB Admin 预定义 IAM 角色)
    • roles/owner(Owner 基本 IAM 角色)
    • roles/editor(Editor 基本 IAM 角色)

    如果您不拥有上述任何角色,请与组织管理员联系以申请访问权限。

创建次要集群

当您创建次要集群时,AlloyDB 会复制一些主集群配置(包括时间点恢复 [PITR] 和备份配置)并应用于次要集群。无论主集群上有多少个读取池实例,AlloyDB 在创建次要集群后都不会向其添加任何读取池实例。

如果您在创建次要集群后更新主集群配置,则这些更改不会应用于次要集群。不过,您可以手动更新次要集群,以获得主集群中可用的最新配置。

您最多可以为一个主集群创建五个次要集群。所有次要集群都从单个主实例复制数据。如果您提升某个次要集群,该次要集群会成为独立的主集群。

下图说明了如何在 us-east4 中提升名为 cluster-2 的次要集群:

提升次要集群的示例。

图 1. 提升次要集群的示例。

如需创建 AlloyDB 次要集群和次要实例,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中点击相应集群。

  3. 概览页面中,点击创建次要集群

  4. 配置次要集群:

    1. 集群 ID 字段中,输入次要集群的资源 ID。
    2. 为您的次要集群选择一个与主集群区域不同的区域。
    3. 选择默认的 Google 管理的加密或客户管理的密钥 (CMEK) 作为加密方法,以对您的次要集群进行加密。

    如果您想使用 CMEK 密钥对此集群进行加密,请按以下步骤操作:

    1. 点击高级加密选项
    2. 选择客户管理的加密密钥 (CMEK)
    3. 从显示的菜单中选择一个客户管理的密钥。

      Google Cloud 控制台会将此列表限制为与新集群位于同一Google Cloud 项目和区域中的密钥。

      如需使用此列表中未列出的密钥,请按以下步骤操作:

      1. 点击没有看到您的密钥?输入密钥资源名称
      2. 密钥资源名称字段中输入资源名称。
      3. 点击保存
      4. 点击继续

    将 CMEK 密钥与 AlloyDB 搭配使用需要进行一些额外设置。如需了解详情,请参阅使用 CMEK

    如果关联的主实例是使用 CMEK 密钥进行加密的,则您也必须使用 CMEK 密钥对其次要集群进行加密。

  5. 配置次要实例:

    1. 实例 ID 字段中,输入次要实例的资源 ID。资源 ID 在集群中必须是唯一的。
  6. 点击创建集群

gcloud

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

使用 gcloud alloydb clusters create-secondary 命令:

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID \
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID

替换以下内容:

  • SECONDARY_CLUSTER_ID:要创建的次要集群的 ID。
  • SECONDARY_INSTANCE_ID:要创建的次要实例的 ID。
  • REGION_ID:次要集群的区域的 ID,例如 us-central1
  • PROJECT_ID:次要集群的项目的 ID。
  • LOCATION_ID:主集群所在的位置,例如 us-central1
  • PRIMARY_CLUSTER_ID:次要集群关联的主集群的 ID。
  • SECONDARY_CLUSTER_ID:次要实例关联的次要集群的 ID。
  • ALLOWED_PROJECT(可选):您要允许访问实例的项目 ID 或项目编号的英文逗号分隔列表,例如“my-project-1, 12345,my-project-n”。如果您的集群使用 Private Service Connect 作为连接到实例的方法,您必须设置允许的项目或编号列表。
  • --no-enable-automated-backup(可选):停用次要集群上的自动备份创建。

如需创建启用了 Private Service Connect 的次要集群和实例,请在创建集群时添加 --enable-private-service-connect 标志,并添加 --allowed-psc-projects 标志以设置要允许访问实例的项目 ID 或项目编号的英文逗号分隔列表,例如“my-project-1, 12345,my-project-n”。

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID \
 --enable-private-service-connect
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --allowed-psc-projects=ALLOWED_PROJECT_LIST

替换以下内容:

  • ALLOWED_PROJECT(可选):您要允许访问实例的项目 ID 或项目编号的英文逗号分隔列表,例如“my-project-1, 12345,my-project-n”。如果您的集群使用 Private Service Connect 作为连接到实例的方法,您必须设置允许的项目或编号列表。

如需为启用了公共 IP 的集群创建次要实例,请添加 --assign-inbound-public-ip=ASSIGN_IPV4 参数。

 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
  --assign-inbound-public-ip=ASSIGN_IPV4

(可选)将 CIDR 地址块的英文逗号分隔列表(例如 64.233.160.0/16)传递给 --authorized-external-networks 参数,以在实例上设置已获授权的外部网络。

查看次要集群

如需查看有关 AlloyDB 次要集群的详细信息,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中点击相应的次要集群。

  3. 概览页面中,查看有关次要集群的所有详细信息。

更新次要实例

您可以更新次要实例,以添加、修改或删除数据库标志。您还可以扩缩次要实例的机器类型。

在次要实例上配置数据库标志

如需添加、修改或删除数据库标志,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中,点击要修改的次要集群。

  3. 概览页面中,前往集群中的实例,选择相应的次要实例,然后点击修改辅助实例

  4. 对实例添加、修改或删除数据库标志:

    添加标志

    1. 如需向实例添加数据库标志,请点击添加标志
    2. 新增数据库标志列表中选择一个标志。
    3. 为标志提供值。
    4. 点击完成

    修改标志

    1. 如需修改实例中存在的数据库标志,请展开相应的数据库标志,然后在修改数据库标志部分中修改现有标志的值。
    2. 点击完成

    删除标志

    1. 如需从实例中删除数据库标志,请选择相应标志,然后点击删除图标。
    2. 点击完成
  5. 点击 Update secondary(更新次要实例)。

gcloud

使用 gcloud alloydb instances update 命令可更改次要实例的数据库标志。

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --database-flags FLAGS_LIST \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

替换以下内容:

  • SECONDARY_INSTANCE_ID:次要实例的 ID。
  • FLAGS_LIST:一个或多个数据库标志规范的英文逗号分隔列表。每个规范都由标志的名称、等号 (=) 和要分配给标志的值组成。对于不需要赋值的数据库标志,请提供相应标志的名称,后跟一个等号 (=)。
  • REGION_ID:次要实例所在的区域,例如 us-central1
  • CLUSTER_ID:次要实例所在集群的 ID。
  • PROJECT_ID:次要集群所在项目的 ID。

扩缩次要实例的机器类型

如需扩缩次要实例的机器类型,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中,点击要修改的次要集群。

  3. 概览页面中,前往集群中的实例部分,然后点击修改辅助实例

    请注意,如果页面报告的集群状态维护,则此操作不可用。在状态更改为准备就绪后,此操作会再次可用。

  4. 选择机器类型。

  5. 点击 Update secondary(更新次要实例)。

gcloud

使用 gcloud alloydb instances update 命令可更改次要实例的机器类型。

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --cpu-count=CPU_COUNT \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

替换以下内容:

  • SECONDARY_INSTANCE_ID:要更新的次要实例的 ID。
  • CPU_COUNT:您要为实例分配的 vCPU 数量。有效值包括:

    • 2(2 个 vCPU,16 GB RAM)
    • 4(4 个 vCPU,32 GB RAM)
    • 8(8 个 vCPU,64 GB RAM)
    • 16(16 个 vCPU,128 GB RAM)
    • 32(32 个 vCPU,256 GB RAM)
    • 64(64 个 vCPU、512 GB RAM)
  • REGION_ID:实例所在的区域。

  • CLUSTER_ID:实例所在集群的 ID。

  • PROJECT_ID:集群所在项目的 ID。

如果该命令返回包含 invalid cluster state MAINTENANCE 字词的错误消息,则表示集群正在进行日常维护。这会暂时禁止实例重新配置。在集群恢复为 READY 状态后,再次运行该命令。

如需查看集群状态,请参阅查看集群详细信息

将读取池实例添加到次要集群

如需将读取池实例添加到次要集群,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中,点击要向其中添加读取池实例的次要集群。

  3. 概览页面中,前往集群中的实例部分,然后点击添加读取池

  4. 配置读取池实例:

    1. 读取池实例 ID 字段中,输入读取池实例的 ID。
    2. 节点数字段中,输入节点数。读取池实例中的节点数决定了实例的总计算容量。一个集群中的所有读取池实例最多可以有 20 个节点。
    3. 选择机器类型。
    4. 可选:为实例设置自定义标志。对于每个标志,请执行以下操作:

      1. 点击添加标志
      2. 新增数据库标志列表中选择一个标志。
      3. 为标志提供值。
      4. 点击完成
  5. 点击添加读取池

提升次要集群

在提升次要集群之前,请执行以下步骤,以验证次要集群是否已应用了从主集群收到的所有事务:

  1. 停止对主集群的所有写入操作。
  2. 完成以下步骤,检查次要集群的复制状态:

    1. 在 Google Cloud 控制台中,前往集群页面。

      转到集群

    2. 在集群列表中,点击要提升的次要集群的名称。

    3. 在集群详细信息页面上,点击监控

    4. 监控列表中,选择相应的次要实例。它会在列表中显示为次要:INSTANCE_NAME

    5. 在指标列表中,找到从主实例进行复制的延迟时间图表。

    6. 确认图表显示最短的延迟时间。

      理想的延迟时间值为 0。如果延迟时间超过 0,您仍然可以提升次要集群,但可能会丢失在主集群中已提交的某些近期事务。

    7. 在指标列表中,找到复制状态图表。

    8. 确认图表中表示的所有节点的值均为 streaming

如需将次要集群提升为主要集群,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中,点击要提升为主集群的次要集群。

  3. 概览页面中,点击提升集群

  4. 在随即显示的对话框中,输入您的次要集群 ID 以确认您要提升集群。

  5. 点击提升

    将集群提升后,概览页面上的 Type: Secondary cluster (highly available)(类型:次要集群 [高可用性])字段会更新为 Type: Highly available with read pools(类型:高可用性 [具有读取池])。

gcloud

使用 gcloud alloydb clusters promote 命令:

 gcloud alloydb clusters promote SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --project=PROJECT_ID \

替换以下内容:

  • SECONDARY_CLUSTER_ID:要提升的次要集群的 ID。
  • REGION_ID:次要集群的区域的 ID,例如 us-central1
  • PROJECT_ID:次要集群的项目的 ID。

执行切换

在执行切换之前,请验证主实例和次要实例所属的所有区域是否处于在线状态,以及这些实例是否处于健康状况良好状态。如需了解详情,请参阅使用 AlloyDB 系统数据分析信息中心监控实例

如果您在有多个次要集群的情况下执行切换,则会发生以下变化:

  • 接收切换命令的次要集群会成为主集群。
  • 之前的主集群会成为次要集群,并从新的主集群进行复制。
  • 所有其他次要集群都切换为从新的主集群进行复制。

下图说明了从 us-central1 中的 cluster-1us-east4 中的 cluster-2 的切换:

切换到两个次要集群之一的示例。

图 2. 切换到两个次要集群之一的示例。

如需执行切换,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 资源名称列中,点击要切换为主集群的次要集群。

  3. 概览页面中,点击切换

  4. 在随即显示的对话框中,输入您的次要集群 ID 以确认您要切换集群。

  5. 点击切换

集群切换后,概览页面上的 Type: Secondary cluster(类型:次要集群)字段会更新为
Cluster Type: Primary Cluster(集群类型:主集群)和 Cluster Type: Secondary Cluster(集群类型:次要集群)。

gcloud

使用 gcloud alloydb clusters switchover 命令:

 gcloud alloydb clusters switchover SECONDARY_CLUSTER_ID \
   --region=REGION_ID \
   --project=PROJECT_ID \

替换以下内容:

  • SECONDARY_CLUSTER_ID:要提升的次要集群的 ID。
  • REGION_ID:次要集群的区域的 ID,例如 us-central1
  • PROJECT_ID:次要集群的项目的 ID。

后续步骤