你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 Azure 门户、CLI 或 REST API 在 Azure Database for PostgreSQL 灵活服务器中创建和管理只读副本

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

本文介绍如何通过 Azure 门户、CLI 和 REST API 在 Azure Database for PostgreSQL 灵活服务器中创建和管理只读副本。 若要详细了解只读副本,请参阅概述

先决条件

作为主服务器的 Azure Database for PostgreSQL 灵活服务器实例

注意

在为持久性大量写入密集型主工作负载部署只读副本时,复制滞后时间可能会持续增加,并且可能永远无法赶上主工作负载。 这还可能增加主工作负载的存储使用量,因为只有在副本收到 WAL 文件后才会将该文件删除。

查看主服务器设置

在为 Azure Database for PostgreSQL 灵活服务器设置只读副本之前,请确保将主服务器配置为满足必要的先决条件。 主服务器上的特定设置可能会影响创建副本的能力。

存储自动增长:主服务器及其只读副本上的存储自动增长设置必须遵守特定准则,以确保一致性并防止复制中断。 有关详细规则和设置,请参阅存储自动增长

高级 SSD v2:当前版本不支持使用高级 SSD v2 存储为主服务器创建只读副本。 如果工作负载需要只读副本,请为主服务器选择不同的存储选项。

  1. Azure 门户中,选择要用于副本的 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在“概述”对话框中,记下 PostgreSQL 版本(例如 15.4)。 此外,请记下主服务器部署到的区域(例如,East US)。

    查看主要设置的屏幕截图。

  3. 在服务器边栏的“设置”下,选择“计算 + 存储”

  4. 查看并记下以下设置:

    • 计算层、处理器、大小(例如 Standard_D4ads_v5)。

    • 存储

      • 存储大小(例如 128GB
      • 自动增长
    • 高可用性

      • 已弃用/已禁用
      • 可用性区域设置
    • 备份设置

      • 保留期
      • 冗余选项
  5. 在“设置”下选择“网络” 。

  6. 查看网络设置。

    服务器设置的屏幕截图。

创建只读副本

若要创建只读副本,请遵循以下步骤:

  1. 选择要用作主服务器的现有 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 选择“创建副本”

    创建副本操作的屏幕截图。

  4. 在“基本信息”窗体中输入以下信息。

    显示输入基本信息的屏幕截图。

  5. 选择“审阅 + 创建”以确认创建该副本,或者如果要添加、删除或修改任何防火墙规则,请选择“下一步: 网络”

    修改防火墙规则操作的屏幕截图。

  6. 将其余字段保留默认值,然后选择页面底部的“查看 + 创建”按钮,或者转到下一个窗体以添加标记或更改数据加密方法。

  7. 查看最终确认窗口中的信息。 准备就绪后,选择“创建”。 将创建新部署。

    查看最终确认窗口中的信息的屏幕截图。

  8. 在部署期间,你将看到主服务器处于 Updating 状态。

    主要副本进入更新状态的屏幕截图。 创建只读副本后,可以在“复制”窗口中查看它

    在复制窗口中查看新副本的屏幕截图。

  • 设置副本服务器名称。

    提示

    使用资源命名约定是云采用框架 (CAF) 的最佳做法,它会支持你轻松确定要连接到或管理的实例,以及实例的驻留位置。

  • 选择与主服务器不同的位置,但请注意,可以选择同一区域。

    提示

    若要详细了解可以在哪些区域中创建副本,请访问只读副本概念文章

  • 将计算和存储设置为从主服务器记录的内容。 如果显示的计算不匹配,请选择“配置服务器”并选择相应的一个

    注意

    如果选择的计算大小小于主服务器,则部署将失败。 另请注意,计算大小可能在其他区域中不可用。

    选择计算大小的屏幕截图。

重要

查看“只读副本”概述的注意事项部分

为了避免在提升副本期间出现问题,请先更改副本上的以下服务器参数,然后再在主服务器上应用它们:max_connectionsmax_prepared_transactionsmax_locks_per_transactionmax_wal_sendersmax_worker_processes

创建虚拟终结点

注意

涉及虚拟终结点的所有操作,例如添加、编辑和删除,都在主服务器的上下文中执行。

  1. 在 Azure 门户中,选择主服务器。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 选择“创建终结点”

  4. 在对话框中,为终结点键入有意义的名称。 请注意正在生成的 DNS 终结点。

    使用自定义名称创建新虚拟终结点的屏幕截图。

  5. 选择“创建”。

    注意

    如果未创建虚拟终结点,则会在进行升级副本尝试时收到错误。

    缺少虚拟终结点时发生的提升错误的屏幕截图。

列出虚拟终结点

若要列出虚拟终结点,请执行以下步骤:

  1. 在 Azure 门户中,选择主服务器。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 页面顶部会显示读取器和编写器终结点,以及它们指向的服务器的名称。

    虚拟终结点列表的屏幕截图。

修改应用程序以指向虚拟终结点

修改使用 Azure Database for PostgreSQL 灵活服务器实例的所有应用程序,以使用新的虚拟终结点(例如:corp-pg-001.writer.postgres.database.azure.comcorp-pg-001.reader.postgres.database.azure.com)。

提升副本

所有必要的组件到后,即可执行将副本提升为主服务器的操作。

若要从 Azure 门户提升副本,请执行以下步骤:

  1. Azure 门户中,选择主要 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在服务器菜单中的“设置”下,选择“复制”。

  3. 在“服务器”下,选择副本的“提升”图标

    选择提升副本的屏幕截图。

  4. 在对话框中,确保操作为“提升到主服务器”

  5. 对于数据同步,请确保已选择“计划内 - 提升前同步数据”

    演示如何选择提升副本的屏幕截图。

  6. 选择“提升”以开始该过程。 完成后,角色会反转:副本变为主服务器,主服务器承担副本的角色。

注意

要提升的副本必须分配有读者虚拟终结点,否则将会在提升时收到错误。

测试应用程序

若要执行某些操作,请重启应用程序,然后尝试这些操作。 应用程序应无缝运行,而无需修改虚拟终结点连接字符串或 DNS 条目。 这次让应用程序保持运行状态。

故障回复到源服务器和区域

重复相同的操作,以将源服务器提升为主服务器。

  1. Azure 门户中,选择副本。

  2. 在服务器边栏的“设置”下,选择“复制”

  3. 在“服务器”下,选择副本的“提升”图标

  4. 在对话框中,确保操作为“提升到主服务器”

  5. 对于数据同步,请确保已选择“计划内 - 提升前同步数据”

  6. 选择“提升”,该过程将开始。 完成后,角色会反转:副本变为主服务器,主服务器承担副本的角色。

测试应用程序

再次切换到使用的应用程序之一。 等待主服务器和副本状态更改为 Updating,然后尝试执行一些操作。 在副本提升期间,应用程序可能会遇到终结点的临时连接问题:

潜在提升连接错误的屏幕截图。

添加次要只读副本

在单独的区域中创建次要只读副本以修改读者虚拟终结点,并允许根据第一个副本创建独立服务器。

  1. Azure 门户中,选择主要 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 选择“创建副本”

  4. 将第三个区域中的信息输入“基本信息”表单(例如 westuscorp-pg-westus-001

  5. 选择“审阅 + 创建”以确认创建该副本,或者如果要添加、删除或修改任何防火墙规则,请选择“下一步: 网络”

  6. 验证防火墙设置。 请注意主服务器设置是如何自动复制的。

  7. 保留剩余的默认值,然后选择页面底部的“审阅 + 创建”按钮,或转到以下表单以配置安全性或添加标记。

  8. 查看最终确认窗口中的信息。 准备就绪后,选择“创建”。 将创建新部署。

  9. 在部署期间,你将看到主服务器处于 Updating 状态。

    主要副本进入更新状态的屏幕截图。

修改虚拟终结点

  1. Azure 门户中,选择主要 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 选择省略号,然后选择“编辑”

    编辑虚拟终结点的屏幕截图。

  4. 在对话框中,选择新的次要副本。

    选择次要副本的屏幕截图。

  5. 选择“保存”。 读取者终结点现在指向次要副本,提升操作现在绑定到此副本。

将副本提升到独立服务器

还可以中断副本的复制,以将其设为它的独立服务器,而不是切换到副本。

  1. Azure 门户中,选择 Azure Database for PostgreSQL 灵活服务器主服务器。

  2. 在服务器边栏中服务器菜单上的“设置”下,选择“复制”

  3. 在“服务器”下,选择要提升为独立服务器的副本的“提升”图标

    演示如何选择提升副本 2 的屏幕截图。

  4. 在对话框中,确保操作为“提升为独立服务器并从复制中删除。这不会影响主服务器”

  5. 对于数据同步,请确保已选择“计划内 - 提升前同步数据”

    将副本提升到独立服务器的屏幕截图。

  6. 选择“提升”,该过程将开始。 完成后,服务器不再是主服务器的副本。

注意

将副本提升到独立服务器后,将无法将其添加回复制集。

删除虚拟终结点

  1. 在 Azure 门户中,选择主服务器。

  2. 在服务器边栏中的“设置”下,选择“复制”。

  3. 在页面顶部找到 Virtual endpoints 分区。 导航到终结点名称旁边的三个点(菜单选项),展开它,然后选择 Delete

  4. 将显示确认删除对话框。 它会发出警告:“此操作会删除虚拟终结点 virtualendpointName。 任何使用这些域连接的客户端都可能会失去访问权限。”确认知晓影响并单击“删除”以确认。

删除副本

删除只读副本的方法与删除独立 Azure Database for PostgreSQL 灵活服务器实例的方法类似。

  1. 在 Azure 门户中,打开只读副本的“概述”页。 选择“删除”。

    副本“概述”页的屏幕截图,在其中选择删除副本。

也可以在“复制”窗口中遵循以下步骤删除只读副本:

  1. 在 Azure 门户中,选择主 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在服务器菜单中的“设置”下,选择“复制”。

  3. 选择要删除的只读副本,然后选择省略号。 选择“删除”。

    选择要删除的副本的屏幕截图。

  4. 确认“删除”操作。

删除主服务器

只有在删除所有只读副本后,才能删除主服务器。 若要删除副本,请按照删除副本部分中的说明操作,然后继续执行提供的步骤。

若要在 Azure 门户中删除服务器,请遵循以下步骤:

  1. 在 Azure 门户中,选择主 Azure Database for PostgreSQL 灵活服务器实例。

  2. 打开服务器的“概述”页并选择“删除”。

    服务器“概述”页的屏幕截图,在其中选择删除主服务器。

  3. 输入要删除的主服务器的名称。 选择“删除”以确认删除主服务器

    确认删除主服务器的屏幕截图。

监视副本

可以使用两个指标来监视只读副本。

物理复制最大滞后时间

仅在主服务器上可用。

“物理复制最大滞后”指标显示主服务器与滞后最大的副本之间的滞后(以字节为单位)

  1. 在 Azure 门户中,选择主服务器。

  2. 选择“指标”。 在“指标”窗口中,选择“物理复制最大滞后时间”。

    “指标”页的屏幕截图,其中显示了“物理复制最大滞后时间”指标。

  3. 对于“聚合”,请选择“最大”。

“只读副本滞后时间”指标

“只读副本滞后时间”指标显示自从在副本上最后一次执行重放事务以来所经历的时间。 如果主服务器上未发生任何事务,则该指标会反映此滞后时间。 例如,如果主服务器上未发生任何事务,并且最后一个事务是在 5 秒前重放的,则只读副本滞后将显示 5 秒延迟。

  1. 在 Azure 门户中,选择只读副本。

  2. 选择“指标”。 在“指标”窗口中,选择“只读副本滞后时间”。

    “指标”页的屏幕截图,其中显示了“只读副本滞后时间”指标。

  3. 对于“聚合”,请选择“最大”。