Leer en inglés

Compartir a través de

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

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

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

先决条件

创建 Azure Database for PostgreSQL 灵活服务器 作为主服务器。

Nota

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

查看主要设置

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

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

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

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

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

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

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

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

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

    • 存储

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

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

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

  6. 查看网络设置。

    服务器设置的屏幕截图。

创建只读副本

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

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

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

  3. 选择“创建副本”

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

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

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

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

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

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

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

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

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

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

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

  • 设置副本服务器名称。

    Sugerencia

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

  • 选择与主要位置不同的地点,但请注意,可以选择同一区域。

    Sugerencia

    若要了解更多信息关于在哪些区域可以创建副本,请访问副本概念文章

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

    Nota

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

    屏幕截图显示选择计算大小。

Importante

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

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

创建虚拟终结点

Nota

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

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

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

  3. 选择“创建终结点”

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

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

  5. 选择“创建”。

    Nota

    如果不创建虚拟终结点,在尝试提升副本时会收到错误消息。

    屏幕截图显示缺少虚拟终结点时与提升相关的错误。

列出虚拟终结点

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

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

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

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

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

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

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

提升副本

准备好所有必要组件后,即可执行将副本提升到主副本的操作。

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

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

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

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

    屏幕截图显示选择提升一个副本。

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

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

    屏幕截图显示如何提升一个副本。

  6. 选择“提升”以开始该过程。 完成后,角色将反转:副本变为主副本,主副本则转变为副本的角色。

Nota

要升级的副本须具有分配的读取者虚拟终结点,否则提升时会显示错误。

测试应用程序

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

故障回复到原始服务器和区域

重复相同的操作,将原始服务器提升为主副本。

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

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

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

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

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

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

测试应用程序

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

屏幕截图显示可能的提升连接错误。

添加次要只读副本

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

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

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

  3. 选择“创建副本”

  4. 向“基本信息”窗体输入第三区域的信息(例如 chinanorth3corp-pg-chinanorth-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. 选择“提升”,该过程将开始。 完成后,服务器不再是主服务器的副本。

Nota

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

删除虚拟终结点

  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. 对于“聚合”,请选择“最大”。