Azure Database for PostgreSQL - 灵活服务器中只读副本的虚拟终结点

适用于: Azure Database for PostgreSQL 灵活服务器

虚拟终结点是读写和只读侦听器终结点,无论 Azure Database for PostgreSQL 灵活服务器实例的当前角色如何,它们都保持一致。 这意味着,不必在执行“提升到主服务器”操作后更新应用程序的连接字符串,因为终结点会在角色更改后自动指向正确的实例。

涉及虚拟终结点的所有操作,无论是添加、编辑还是删除,都在主服务器的上下文中执行。 在 Azure 门户中,可以在主服务器页下管理这些终结点。 同样,在使用 CLI、REST API 等工具或其他实用工具时,命令和操作会针对用于终结点管理的主服务器执行。

虚拟终结点提供两种不同类型的连接点:

写入方终结点(读/写):此终结点始终指向当前主服务器。 它确保写入操作定向到正确的服务器,而不管用户触发了哪种提升操作。 无法更改此终结点以指向副本

只读终结点:用户可以配置此终结点以指向只读副本或主服务器。 但是,它一次只能以一个服务器为目标。 不支持多个服务器之间的负载均衡。 可以随时调整此终结点的目标服务器,无论是提升之前还是之后。

注意

每个主服务器只能创建一个写入器和一个只读终结点,并可创建其一个副本。

虚拟终结点和提升行为

如果发生提升操作,这些终结点的行为仍然是可预测的。 以下部分深入介绍了这些终结点如何对“提升到主服务器”和“提升到独立服务器”方案做出反应。

虚拟终结点 原始目标 触发“提升到主服务器”时的行为 触发“提升到独立服务器”时的行为
写入方终结点 主要 指向新的主服务器。 保持不变。
只读终结点 副本 指向新副本(先前为主服务器)。 指向主服务器。
只读终结点 主要节点 不支持。 保持不变。

触发“提升到主服务器”时的行为

  • 写入方终结点:此终结点将更新为指向新的主服务器,以反映角色切换。
  • 只读终结点
    • 如果只读终结点指向副本:完成提升操作后,只读终结点将指向新副本(先前为主服务器)。
    • 如果只读终结点指向主服务器:为使提升操作能够正常运行,只读终结点必须指向要提升的服务器。 在这种情况下,不支持指向主服务器,必须在提升之前重新配置为指向副本。

触发“提升到独立服务器并从复制中删除”时的行为

  • 写入方终结点:此终结点保持不变。 它继续将流量定向到服务器,并拥有主要角色。
  • 只读终结点
    • 如果只读终结点指向副本:只读终结点从提升的副本重定向为指向主服务器。
    • 如果只读终结点指向主服务器:只读终结点保持不变,继续指向同一服务器。

在时间点还原 (PITR) 或快照还原期间使用虚拟终结点实现一致的主机名

本部分介绍如何使用 Azure Database for PostgreSQL 灵活服务器中的虚拟终结点在时间点还原 (PITR) 或快照还原期间保持一致的主机名,确保应用程序连接字符串保持不变。 执行以下步骤:

  1. 将虚拟终结点添加到主服务器:

    • 在 Azure 门户中浏览到主服务器实例。
    • 导航到“复制”选项卡,然后在“虚拟终结点”下,单击“添加虚拟终结点”
    • 使用一致的主机名(如 mydb-virtual-endpoint.postgres.database.azure.com)配置虚拟终结点。
    • 保存配置。
    • 更新应用程序以在连接字符串中使用此虚拟终结点。
  2. 执行时间点还原 (PITR) 或快照还原:

    • 启动恢复:
      • 转到主服务器的“备份”部分。
      • 选择适当的还原选项(PITRsnapshot)并指定所需的时间点。
    • 更新虚拟终结点:
      • 创建新实例后,导航回旧的主服务器“复制”选项卡。
      • 从原始主服务器中移除虚拟终结点。 旧的主服务器应处于 succeeded 状态,才能移除虚拟终结点
      • 将相同的虚拟终结点添加到新创建的服务器。
  3. 验证

    • 确保应用程序使用虚拟终结点进行连接,并在恢复后验证数据库操作。