创建和管理跨区域复制

本页介绍了如何通过创建和管理辅助实例来使用跨区域复制。

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

准备工作

在开始为 Memorystore for Valkey 使用跨区域复制之前,请验证以下事项:

  • 您安装了 gcloud CLI 488.0.0 及更高版本。如需确定 gcloud CLI 的最新版本,请使用 gcloud components update 命令。

  • 您在要将次要实例部署到的区域中设置了服务网络政策。如需详细了解服务网络政策,请参阅网络

创建次要实例

创建辅助实例时,Memorystore for Valkey 会复制主实例的部分设置,并将其应用为辅助实例设置。如需了解详情,请参阅实例设置

如需为 Valkey 实例创建辅助 Memorystore,请使用 gcloud memorystore instances create 命令:

gcloud

gcloud memorystore instances create SECONDARY_INSTANCE_ID \
--project=PROJECT_ID \
--location=SECONDARY_REGION_NAME \
--cross-instance-replication-config-role=secondary \
--psc-auto-connections=network=NETWORK,projectId=PROJECT_ID \
--primary-instance=PRIMARY_INSTANCE_RESOURCE_PATH

替换以下内容:

  • SECONDARY_INSTANCE_ID:您要创建的辅助实例的 ID。ID 必须介于 1 到 63 个字符之间,且只能使用小写字母、数字或连字符。并且必须以小写字母开头并以小写字母或数字结尾。
  • PROJECT_ID:您要在其中创建辅助实例的项目的 ID。该项目与主实例所在的项目相同。
  • SECONDARY_REGION_NAME:您希望辅助实例所在的区域。
  • NETWORK:用于创建实例的虚拟私有云网络。必须采用以下格式:projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID。网络 ID 必须与服务连接政策使用的网络 ID 一致。否则,创建操作将失败。
  • PRIMARY_INSTANCE_RESOURCE_PATH:主实例的路径。例如:projects/my-project/locations/us-central1/instances/my-primary-instance。您可以选择项目中的任何实例作为主实例,前提是该实例不是辅助实例。

例如:

gcloud memorystore instances create my-secondary-instance \
--project=my-project \
--location=us-central1 \
--cross-instance-replication-config-role=secondary \
--psc-auto-connections=network=projects/my-project/global/networks/default,projectId=my-project \
--primary-instance=projects/my-project/locations/us-central1/instances/my-primary-instance

查看辅助实例

本部分介绍了如何查看次要实例的相关信息,包括列出复制组中主实例和次要实例的成员资格字段。

如需查看辅助实例的相关信息,请使用 gcloud memorystore instances describe 命令。

gcloud

gcloud memorystore instances describe SECONDARY_INSTANCE_ID \
--project=PROJECT_ID \
--location=SECONDARY_REGION_NAME

替换以下内容:

  • SECONDARY_INSTANCE_ID:辅助实例的 ID
  • PROJECT_ID:包含次要实例的项目的 ID
  • SECONDARY_REGION_NAME:辅助实例所在的区域

执行切换

通过切换,您可以反转主实例和辅助实例的角色。

如需执行切换,请使用 gcloud memorystore instances update 命令。

gcloud

gcloud memorystore instances update SECONDARY_INSTANCE_ID \
--project=PROJECT_ID \
--location=SECONDARY_REGION_NAME \
--clear-primary-instance \
--cross-instance-replication-config-role=primary \
--cross-instance-replication-config-secondary-instances=[instance=SECONDARY_INSTANCE_RESOURCE_PATH]

替换以下内容:

  • SECONDARY_INSTANCE_ID:您要通过执行切换操作提升为主实例的辅助实例的 ID。
  • PROJECT_ID:包含次要实例的项目的 ID。
  • SECONDARY_REGION_NAME:辅助实例所在的区域。
  • SECONDARY_INSTANCE_RESOURCE_PATH:辅助实例的路径。例如:projects/my-project/locations/us-central1/instances/my-secondary-instance

    如果您有多个辅助实例,请用英文逗号将每个实例分隔开来。例如:[instance=projects/my-project/locations/us-central1/instances/my-first-secondary-instance,instance=projects/my-project/locations/europe-west1/instances/my-second-secondary-instance]

假设 my-project 项目中包含以下实例:

  • instance-1:此主实例位于 us-east1 区域。
  • instance-2:此辅助实例位于 asia-east1 区域。
  • instance-3:此辅助实例位于 southamerica-east1 区域。

您想反转 instance-1instance-2 的角色,使 instance-2 成为新的主实例,instance-1 成为辅助实例。

为此,请使用以下代码:

gcloud memorystore instances update instance-2 \
--project=my-project \
--location=asia-east1 \
--clear-primary-instance \
--cross-instance-replication-config-role=primary \
--cross-instance-replication-config-secondary-instances=[instance=projects/my-project/locations/us-east1/instances/instance-1,instance=projects/my-project/locations/southamerica-east1/instances/instance-3]

分离次要实例

将辅助实例与主实例分离后,它们会成为功能齐全的独立实例,既可读取,也可写入。如需了解详情,请参阅如何管理跨区域复制

本部分中的两个选项可执行相同的任务,即将辅助实例与主实例分离。如需有关使用哪种选项的指导,请注意以下事项:

  • 如需将单个辅助实例从主实例分离,请使用选项 1
  • 如需将多个辅助实例与主实例分离,或分离不可用的辅助实例,请使用选项 2

分离次要实例(选项 1)

如需将辅助实例与主实例分离,请使用 gcloud memorystore instances update 命令。

gcloud

gcloud memorystore instances update SECONDARY_INSTANCE_ID \
--project=PROJECT_ID \
--location=SECONDARY_REGION_NAME \
--cross-instance-replication-config-role=none \
--clear-primary-instance

替换以下内容:

  • SECONDARY_INSTANCE_ID:您要分离的辅助实例的 ID
  • PROJECT_ID:包含次要实例的项目的 ID
  • SECONDARY_REGION_NAME:辅助实例所在的区域

分离辅助实例(选项 2)

您还可以使用 gcloud memorystore instances update 命令将多个次要实例与主实例分离,或分离不可用的次要实例。

gcloud

gcloud memorystore instances update PRIMARY_INSTANCE_ID \
--project=PROJECT_ID \
--location=PRIMARY_REGION_NAME \
--remove-cross-instance-replication-config-secondary-instances=[instance=SECONDARY_INSTANCES] \
--cross-instance-replication-config-role=none

替换以下内容:

  • PRIMARY_INSTANCE_ID:主实例的 ID。
  • PROJECT_ID:包含次要实例的项目的 ID。
  • PRIMARY_REGION_NAME:主实例所在的区域。
  • SECONDARY_INSTANCES:要分离的次要实例。您可以分离一个或多个实例。如需分离多个实例,请使用逗号分隔列表。您指定的所有次要实例都必须使用以下格式:projects/PROJECT_ID/locations/SECONDARY_REGION_NAME/instances/INSTANCE_ID

例如:

gcloud memorystore instances update my-primary-instance \
--project=my-project \
--location=us-central1 \
--remove-cross-instance-replication-config-secondary-instances=[instance=projects/my-project/locations/us-west4/instances/my-secondary-instance-1,instance=projects/my-project/locations/asia-southeast2/instances/my-secondary-instance-2] \
--cross-instance-replication-config-role=none

您还可以通过指定要分离的实例列表,将次要实例与主实例分离。Memorystore for Valkey 会解除未包含在此列表中的所有实例的关联。

假设您有以下辅助实例:

  • instance-1:此实例位于 us-east1 区域。
  • instance-2:此实例位于 asia-east1 区域。

您想将两个辅助实例从 my-primary-instance 分离。此主实例位于 us-central1 区域,并包含在 my-project 项目中。

如需分离辅助实例,请使用以下代码:

gcloud memorystore instances update my-primary-instance \
--project=my-project \
--location=us-central1 \
--cross-instance-replication-config-secondary-instances=[]
--cross-instance-replication-config-role=none

在此示例中,由于 null [] 值已分配给 --cross-instance-replication-config-secondary-instances 参数,因此 Memorystore for Valkey 会将所有次要实例与主实例分离。

更新实例设置

更新 Memorystore for Valkey 实例的设置时,您只能更改主实例上的部分设置。Memorystore for Valkey 会自动将这些更改同步到辅助实例。

您可以独立更改主实例和辅助实例的其他设置。Memorystore for Valkey 会在本地应用这些更改,而不会将其与其他实例同步。

删除使用跨区域复制的实例

本部分介绍了如何删除使用跨区域复制的主实例和辅助实例。

删除主实例

您必须先分离删除所有次要实例,然后才能删除主实例。然后,删除主实例

为防止意外删除,您无法使用单个命令同时删除主实例和次要实例。

删除辅助实例

如需删除辅助实例,请按照删除实例中的说明操作,将 INSTANCE 替换为辅助实例的 ID。