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

如需在切换、跨区域故障切换、备份恢复或迁移期间将应用与 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。
  • 不支持对指向同一目标实例的端点执行并发修改操作(例如同时更新,或同时执行更新和删除操作),否则可能会导致失败。

准备工作

  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 名称重新连接到新的主实例。

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

在跨区域故障切换期间使用写入端点,可自动将新的写入流量从原始主集群重定向到新主集群,从而避免写入冲突。如需详细了解故障切换期间的写入端点行为,请参阅使用写入端点避免脑裂。

后续步骤