如需在切换、跨区域故障切换、备份恢复或迁移期间将应用与 AlloyDB for PostgreSQL 主实例的特定 IP 地址或统一资源标识符 (URI) 解耦,您可以配置写入端点。
端点是一种 AlloyDB 资源,可提供稳定的域名系统 (DNS) 名称,供应用连接到 AlloyDB 实例。这种抽象简化了操作事件(例如灾难恢复、备份恢复或迁移)期间的连接管理,因为您可以将端点的 DNS 名称重定向到其他实例,而无需更改应用的配置。
AlloyDB 端点支持 WRITE_ENDPOINT 类型。写入端点将流量定向到单个 AlloyDB 主实例,并同时处理读取和写入流量。
虽然 DNS 名称用作全球性资源,但端点资源本身是区域性的。即便如此,每个端点都可以关联到全球各地的实例,并且其 DNS 域名解析可以从任何位置进行。
使用端点的优势
使用写入端点具有以下优势:
- 简化的灾难恢复:如果您执行切换或跨区域故障切换到次要集群,AlloyDB 会自动更新端点以指向新的主要实例。然后,您的应用可以使用相同的端点 DNS 名称重新连接,从而缩短恢复时间目标 (RTO)。
- 简化的备份恢复:从备份恢复实例时,AlloyDB 会创建一个具有新 IP 地址的新实例。您可以更新端点,使其指向新恢复的实例。此功能使应用无需更改配置即可恢复运行。
- 更轻松的迁移:在迁移期间,您可以将端点从源数据库切换到 AlloyDB 实例,同时最大限度地减少应用中断。
限制
- 端点仅支持配置为使用专用服务访问通道 (PSA) 的实例。端点不支持配置为使用 Private Service Connect (PSC) 的实例。
- 写入端点不支持 AlloyDB 语言连接器和 AlloyDB Auth Proxy。
- 不支持对指向同一目标实例的端点执行并发修改操作(例如同时更新,或同时执行更新和删除操作),否则可能会导致失败。
准备工作
- 安装并初始化 Google Cloud CLI。
- 启用 Cloud DNS API。
- 确保您有一个现有 AlloyDB 实例作为端点的目标。
如需获得管理端点所需的权限,请让您的管理员为您授予项目的 AlloyDB Admin (
roles/alloydb.admin) Identity and Access Management (IAM) 角色。此预定义角色包含管理端点所需的权限。您也可以使用自定义角色或其他预定义角色来获取这些权限。所需的具体权限如下:
alloydb.endpoints.createalloydb.endpoints.updatealloydb.endpoints.getalloydb.endpoints.listalloydb.endpoints.delete
如需了解详情,请参阅 AlloyDB IAM 角色和权限。
您可以使用 Google Cloud CLI 创建和管理写入端点。
创建端点
如需创建写入端点,请使用 Google Cloud CLI。端点类型必须为 WRITE_ENDPOINT,并且必须以单个主实例为目标。
控制台
在 Google Cloud 控制台中,前往端点页面。
点击创建端点。
在端点名称字段中,输入端点的 ID。必须满足以下条件:由小写字母 (a-z)、数字和连字符组成,以小写字母开头,以小写字母或数字结尾。
选择区域。
在端点类型部分,选择写入。
在目标实例字段中,选择此端点应指向的主实例。
点击创建。
gcloud
gcloud beta alloydb endpoints create ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--endpoint-type=ENDPOINT_TYPE \
--target-instances=TARGET_INSTANCE_NAME
替换以下内容:
ENDPOINT_ID:端点的唯一标识符。此 ID 在指定的项目和位置中必须是唯一的。PROJECT_ID:您的 Google Cloud 项目 ID。REGION_ID:要在其中创建端点的区域的 ID,例如us-central1。ENDPOINT_TYPE:端点资源的类型。 仅支持WRITE_ENDPOINT。TARGET_INSTANCE_NAME:端点指向的 AlloyDB for PostgreSQL 实例的完整资源名称。实例的完整资源路径采用以下格式:projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE。
使用端点连接到实例
如需使用端点连接到 AlloyDB 实例,您必须先获取与该端点关联的自动生成的 DNS 名称。
获取 DNS 名称
您可以使用 Google Cloud CLI 查看端点的 DNS 名称。
控制台
在 Google Cloud 控制台中,前往端点页面。
找到要连接到的端点,然后复制 DNS 名称列中的值。
gcloud
使用
gcloud beta alloydb endpoints describe命令:gcloud beta alloydb endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=REGION_ID替换以下内容:
ENDPOINT_ID:端点的 IDPROJECT_ID:您的 Google Cloud 项目 IDREGION_ID:端点所在区域的 ID
在命令输出中,找到
dnsName字段并复制其值。
使用 psql 进行连接
获取 DNS 名称后,您可以将其用作连接字符串或客户端工具中的主机。例如,如需使用 psql 客户端进行连接,请运行以下命令:
psql -h DNS_NAME -U USERNAME -d DATABASE_NAME
替换以下内容:
DNS_NAME:端点的 DNS 名称USERNAME:要连接的数据库用户DATABASE_NAME:要连接的数据库名称。
如需详细了解如何使用 psql,请参阅使用 psql 客户端进行连接。
更新端点
如需更改端点指向的实例(例如在恢复操作之后),请使用以下命令:
控制台
在 Google Cloud 控制台中,前往端点页面。
在要更新的端点所在的行中,点击 操作,然后选择修改。
在目标实例字段中,选择此端点应指向的新主实例。
点击更新。
gcloud
gcloud beta alloydb endpoints update ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--target-instances=NEW_TARGET_INSTANCE_NAME
替换以下内容:
ENDPOINT_ID:要更新的端点的 IDPROJECT_ID:您的 Google Cloud 项目 IDREGION_ID:端点所在区域的 IDNEW_TARGET_INSTANCE_NAME:新目标实例的完整资源名称
列出端点
如需列出给定项目和区域中的所有端点,请使用以下命令:
控制台
在 Google Cloud 控制台中,前往端点页面。
该页面会列出当前项目中的所有端点。
gcloud
gcloud beta alloydb endpoints list --project=PROJECT_ID \
--region=REGION_ID
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 IDREGION_ID:端点所在区域的 ID
查看端点详情
如需查看特定端点的详细信息,请使用以下 Google Cloud CLI 命令:
gcloud
gcloud beta alloydb endpoints describe ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
替换以下内容:
ENDPOINT_ID:要描述的端点的 IDPROJECT_ID:您的 Google Cloud 项目 IDREGION_ID:端点所在区域的 ID
在 Google Cloud 控制台中,您可以在端点页面上查看端点详细信息。
删除端点
如需删除端点,请使用以下命令:
控制台
在 Google Cloud 控制台中,前往端点页面。
在要删除的端点所在的行中,点击 操作,然后选择删除。
如需确认,请输入端点 ID,然后点击删除。
gcloud
gcloud beta alloydb endpoints delete ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
替换以下内容:
ENDPOINT_ID:要删除的端点的 IDPROJECT_ID:您的 Google Cloud 项目 IDREGION_ID:端点所在区域的 ID
切换或跨区域故障切换期间的写入端点行为
虽然端点的 DNS 名称在创建时会解析为特定实例的 IP,但这些端点是动态的。在发生跨区域复制活动(例如切换或跨区域故障切换 [预览版])时,AlloyDB 写入端点无需人工干预即可保持持续连接。当次要集群提升为新的主要集群时,端点会自动更新其 DNS 记录,以指向新的主实例。此行为无需手动重新配置应用连接字符串,从而显著降低了操作复杂性,并最大限度地减少了停机时间,以满足恢复时间目标 (RTO)。
操作和 DNS 传播完成后,您的应用可以使用同一端点 DNS 名称重新连接到新的主实例。
防止在故障切换期间发生写入冲突
在跨区域故障切换期间使用写入端点,可自动将新的写入流量从原始主集群重定向到新主集群,从而避免写入冲突。如需详细了解故障切换期间的写入端点行为,请参阅使用写入端点避免脑裂。
后续步骤
- 详细了解如何连接到 AlloyDB 实例。