本页介绍了如何通过创建和使用次要集群来使用跨区域复制。
如需从概念上简要了解跨区域复制,请参阅跨区域复制简介。
准备工作
- 您使用的 Google Cloud 项目必须已启用对 AlloyDB 的访问权限。
- 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
roles/alloydb.admin
(AlloyDB 管理员预定义 IAM 角色)roles/owner
(Owner 基本 IAM 角色)roles/editor
(Editor 基本 IAM 角色)
如果您不具备上述任何角色,请与您的组织管理员联系以请求访问权限。
创建次要集群
当您创建辅助集群时,AlloyDB 会将主集群的部分配置(包括时间点恢复 [PITR] 和备份配置)复制并应用到辅助集群。无论主集群上有多少个读取池实例,AlloyDB 在创建次要集群后都不会向其添加任何读取池实例。
如果您在创建次要集群后更新了主要集群配置,则这些更改不会应用于次要集群。不过,您可以手动更新辅助集群,使其具有主集群中可用的最新配置。
如需创建 AlloyDB 次要集群和次要实例,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往集群页面。
点击资源名称列中的某个集群。
在概览页面中,点击创建次要集群。
配置次要集群:
- 在集群 ID 字段中,输入辅助集群的资源 ID。
- 为次要集群选择一个与主集群区域不同的区域。
- 选择默认的 Google 管理的加密或客户管理的加密密钥 (CMEK) 作为加密方法来加密辅助集群。
如果您想使用 CMEK 密钥加密此集群,请按以下步骤操作:
- 点击高级加密选项。
- 选择客户管理的加密密钥 (CMEK)。
从随即显示的菜单中选择一个客户管理的密钥。
Google Cloud 控制台会将此列表限制为与新集群位于同一Google Cloud 项目和区域内的密钥。
如需使用此列表中未列出的密钥,请按以下步骤操作:
- 点击看不到您的密钥?输入密钥资源名称。
- 在密钥资源名称字段中输入资源名称。
- 点击保存。
- 点击继续。
若要将 CMEK 密钥与 AlloyDB 搭配使用,需要进行一些额外的设置。如需了解详情,请参阅使用 CMEK。
如果关联的主实例是使用 CMEK 密钥加密的,您还必须使用 CMEK 密钥加密其次要集群。
配置次要实例:
- 在实例 ID 字段中,输入辅助实例的资源 ID。资源 ID 在集群中必须是唯一的。
点击创建集群。
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 辅助集群的详细信息,请按以下步骤操作:
在 Google Cloud 控制台中,前往集群页面。
点击资源名称列中的辅助集群。
在概览页面中,查看有关您的辅助集群的所有详细信息。
更新辅助实例
您可以更新辅助实例,以添加、修改或删除数据库标志。您还可以扩缩辅助实例的机器类型。
在次要实例上配置数据库标志
如需添加、修改或删除数据库标志,请完成以下步骤:
控制台
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中,点击要修改的次要集群。
在概览页面中,前往集群中的实例,选择次要实例,然后点击修改次要实例。
在实例中添加、修改或删除数据库标志:
添加标志
- 如需向实例添加数据库标志,请点击添加标志。
- 从新数据库标志列表中选择一个标志。
- 为标志提供值。
- 点击完成。
修改标志
- 如需修改实例中存在的数据库标志,请展开相应数据库标志,然后在修改数据库标志部分中修改现有标志的值。
- 点击完成。
删除标记
- 如需从实例中删除数据库标志,请选择相应标志,然后点击删除图标。
- 点击完成。
点击更新辅助账号。
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。
扩缩次要实例的机器类型
如需扩缩辅助实例的机器类型,请完成以下步骤:
控制台
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中,点击要修改的次要集群。
在概览页面中,前往集群中的实例部分,然后点击修改辅助实例。
请注意,如果该页面报告集群状态为维护,则无法执行此操作。状态变为准备就绪后,该操作将再次可用。
选择机器类型。
点击更新辅助账号。
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
状态后,再次运行该命令。
如需查看集群的状态,请参阅查看集群详情。
将读取池实例添加到辅助集群
如需将读取池实例添加到辅助集群,请按以下步骤操作:
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中,点击要向其添加读取池实例的次要集群。
在概览页面中,前往集群中的实例部分,然后点击添加读取池。
配置读取池实例:
- 在读取池实例 ID 字段中,输入读取池实例的 ID。
- 在节点数字段中,输入节点数。读取池实例中的节点数决定了实例的总计算容量。集群中所有读取池实例的节点数量不得超过 20 个。
- 选择机器类型。
可选:为实例设置自定义标志。对于每个标志,请执行以下操作:
- 点击添加标志。
- 从新数据库标志列表中选择一个标志。
- 为标志提供值。
- 点击完成。
点击添加读取池。
提升次要集群
在提升次要集群之前,请执行以下步骤,验证次要集群是否已应用从主集群收到的所有事务:
- 停止对主集群的所有写入操作。
请完成以下步骤,检查辅助集群的复制状态:
在 Google Cloud 控制台中,前往集群页面。
在集群列表中,点击您要提升为主集群的次要集群的名称。
在集群详情页面上,点击监控。
在监控列表中,选择次要实例。它会在列表中显示为辅助:INSTANCE_NAME。
在指标列表中,找到从主实例进行复制的延迟时间图表。
确认图表显示的延迟时间非常短。
理想的延迟值为
0
。如果延迟时间大于0
,您仍然可以提升次要集群,但可能会丢失已提交到主集群的部分近期事务。在指标列表中,找到复制状态图表。
确认图表中表示的所有节点的值均为
streaming
。
如需将次要集群提升为主要集群,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中,点击要提升为主集群的辅助集群。
在概览页面中,点击提升集群。
在随即显示的对话框中,输入您的次要集群 ID,以确认您要提升该集群。
点击升级。
集群升级后,概览页面上的 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 系统数据分析信息中心监控实例。
使用 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。