使用写入端点管理数据库连接

本页面介绍了如何使用 AlloyDB for PostgreSQL 写入端点来简化应用的数据库连接管理。

端点是一种 AlloyDB 资源,可提供稳定的域名服务 (DNS) 名称,供应用用于连接到 AlloyDB 实例。通过使用端点,您可以将应用与实例的特定 IP 地址或统一资源标识符 (URI) 分离开来。这种抽象简化了运营事件(例如灾难恢复、备份恢复或迁移)期间的连接管理,因为您可以将端点的 DNS 名称重定向到其他实例,而无需更改应用的配置。

AlloyDB 端点支持 WRITE_ENDPOINT 类型。写入端点将流量定向到单个 AlloyDB 主实例,并处理读取和写入流量。

虽然 DNS 名称用作全球性资源,但端点资源本身是区域性的。即便如此,每个端点都可以全局链接到实例,并且其 DNS 名称可以从任何位置解析。

使用端点的好处

使用写入端点具有以下优势:

  • 简化灾难恢复:如果您执行切换跨区域故障切换到次要集群,AlloyDB 会自动更新端点以指向新的主实例。然后,您的应用可以使用相同的端点 DNS 名称重新连接,从而缩短恢复时间目标 (RTO)。
  • 无缝备份恢复:当您从备份恢复实例时,AlloyDB 会创建一个具有新 IP 地址的新实例。您可以更新端点,使其指向新恢复的实例。这样一来,应用无需更改配置即可恢复运行。
  • 更轻松的迁移:在迁移期间,您可以将端点从源数据库切换到 AlloyDB 实例,而对应用的影响极小。

限制

  • 端点仅支持配置为使用专用服务访问通道 (PSA) 的实例。端点不支持配置为使用 Private Service Connect (PSC) 的实例。
  • 写入端点不支持 AlloyDB 语言连接器和 AlloyDB Auth Proxy。
  • 不支持对指向同一目标实例的端点执行并发修改操作(例如同时执行更新操作,或同时执行更新和删除操作),否则可能会导致失败。

准备工作

  1. 安装并初始化 Google Cloud CLI。
  2. 启用 Cloud DNS API。
  3. 确保您有现有的 AlloyDB 实例作为端点的目标。
  4. 如需获得管理端点所需的权限,请让您的管理员为您授予项目的 AlloyDB Admin (roles/alloydb.admin) Identity and Access Management (IAM) 角色。此预定义角色包含管理端点所需的权限。

    您也可以使用自定义角色或其他预定义角色来获取这些权限。所需的具体权限包括:

    • alloydb.endpoints.create
    • alloydb.endpoints.update
    • alloydb.endpoints.get
    • alloydb.endpoints.list
    • alloydb.endpoints.delete

如需了解详情,请参阅 AlloyDB IAM 角色和权限

您可以使用 Google Cloud CLI 创建和管理写入端点。

创建端点

如需创建写入端点,请使用 Google Cloud CLI。端点类型必须为 WRITE_ENDPOINT,并且必须以单个主实例为目标。

控制台

  1. 在 Google Cloud 控制台中,前往端点页面。

    转至 Endpoints

  2. 点击创建端点

  3. 端点名称字段中,输入端点的 ID。 必须满足以下条件:由小写字母 (a-z)、数字和连字符组成,以小写字母开头,以小写字母或数字结尾。

  4. 选择区域

  5. 对于端点类型,选择写入

  6. 目标实例字段中,选择此端点应指向的主实例。

  7. 点击创建

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 名称。

控制台

  1. 在 Google Cloud 控制台中,前往端点页面。

    转至 Endpoints

  2. 找到要连接的端点,然后复制“DNS 名称”列中的值。

gcloud

  1. 使用 gcloud beta alloydb endpoints describe 命令:

    gcloud beta alloydb endpoints describe ENDPOINT_ID \
        --project=PROJECT_ID \
        --region=REGION_ID
    

    替换以下内容:

    • ENDPOINT_ID:端点的 ID
    • PROJECT_ID:您的 Google Cloud 项目 ID
    • REGION_ID:端点所在区域的 ID
  2. 在命令输出中,找到 dnsName 字段并复制其值。

使用 psql 进行连接

获得 DNS 名称后,您可以在连接字符串或客户端工具中将其用作主机。例如,如需使用 psql 客户端进行连接,请运行以下命令:

psql -h DNS_NAME -U USERNAME -d DATABASE_NAME

替换以下内容:

  • DNS_NAME:端点的 DNS 名称
  • USERNAME:要连接的数据库用户
  • DATABASE_NAME:要连接的数据库名称。

如需详细了解如何使用 psql,请参阅使用 psql 客户端进行连接

更新端点

如需更改端点指向的实例(例如在恢复操作后),请使用以下命令:

控制台

  1. 在 Google Cloud 控制台中,前往端点页面。

    转至 Endpoints

  2. 在要更新的端点所在的行中,点击 操作,然后选择修改

  3. 目标实例字段中,选择此端点应指向的新主实例。

  4. 点击更新

gcloud

gcloud beta alloydb endpoints update ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --target-instances=NEW_TARGET_INSTANCE_NAME

替换以下内容:

  • ENDPOINT_ID:要更新的端点的 ID
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • REGION_ID:端点所在区域的 ID
  • NEW_TARGET_INSTANCE_NAME:新目标实例的完整资源名称

列出端点

如需列出给定项目和区域中的所有端点,请使用以下命令:

控制台

  1. 在 Google Cloud 控制台中,前往端点页面。

    转至 Endpoints

    该页面会列出当前项目中的所有端点。

gcloud

gcloud beta alloydb endpoints list --project=PROJECT_ID \
    --region=REGION_ID

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • REGION_ID:端点所在区域的 ID

查看端点详情

如需查看特定端点的详细信息,请使用以下 Google Cloud CLI 命令:

gcloud

gcloud beta alloydb endpoints describe ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

替换以下内容:

  • ENDPOINT_ID:要描述的端点的 ID
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • REGION_ID:端点所在区域的 ID

在 Google Cloud 控制台中,您可以在端点页面上查看端点详细信息。

删除端点

如需删除端点,请使用以下命令:

控制台

  1. 在 Google Cloud 控制台中,前往端点页面。

    转至 Endpoints

  2. 在要删除的端点对应的行中,点击 操作,然后选择删除

  3. 如要确认,请输入端点 ID,然后点击删除

gcloud

gcloud beta alloydb endpoints delete ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

替换以下内容:

  • ENDPOINT_ID:要删除的端点的 ID
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • REGION_ID:端点所在区域的 ID

切换或跨区域故障切换期间的写入端点行为

虽然端点的 DNS 名称在创建时会解析为特定实例的 IP,但这些端点是动态的。在发生跨区域复制活动(例如切换跨区域故障切换 [预览版])时,AlloyDB 写入端点可确保连接持续可用,无需手动干预。当次要集群升级为新的主集群时,端点会自动更新其 DNS 记录,以指向新的主实例。此行为无需手动重新配置应用连接字符串,可显著降低运营复杂性并最大限度地缩短停机时间,从而满足恢复时间目标 (RTO)。

操作和 DNS 传播完成后,您的应用可以使用相同的端点 DNS 名称重新连接到新的主实例。

防止在故障切换期间发生冲突的写入

在跨区域故障切换期间使用写入端点有助于防止写入冲突,因为该端点会自动将新的写入流量从原始主集群导向新的主集群。如需详细了解故障切换期间的写入端点行为,请参阅使用写入端点避免脑裂

后续步骤