Compartir a través de

在 Azure Database for PostgreSQL 灵活服务器中缩放资源

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

Azure Database for PostgreSQL 灵活服务器支持垂直和水平缩放选项。

垂直缩放:可以通过向 Azure Database for PostgreSQL 灵活服务器实例添加更多资源来垂直缩放,例如增加实例分配的 CPU 和内存数。 实例的网络吞吐量取决于为 CPU 和内存选择的值。

创建 Azure Database for PostgreSQL 灵活服务器实例后,可以单独更改以下内容:

  • CPU (vCore)。
  • 存储量。
  • 备份保持期。

vCore 数可以纵向扩展或纵向缩减,但存储大小只能增加。 备份保持期可以在 7 到 35 天范围内增减。 可以使用多个工具(例如 Azure 门户Azure CLI)缩放资源。

注意

增加存储大小后,无法返回到较小的存储大小。

水平缩放:可以通过创建只读副本来水平缩放。 借助只读副本,可以将读取工作负载扩展到单独的 Azure Database for PostgreSQL 灵活服务器实例。 它们不会影响主实例的性能和可用性。

更改 vCore 数量或计算层时,实例会重启,使新的服务器类型生效。 在此期间,系统将切换到新的服务器类型。 不会建立新连接,并且所有未提交的事务都将回滚。

重启服务器所需的总时间取决于重启时的故障恢复过程和数据库活动。 重启通常需要一分钟或更短时间,但也可能需要几分钟。 用时取决于启动重启时的事务活动。

如果你的应用程序对计算缩放期间可能发生的未完成事务丢失很敏感,则建议实现事务重试模式

在大多数情况下,缩放存储不需要重启服务器,有关更多详细信息,请参阅 Azure Database for PostgreSQL 灵活服务器中的存储选项。 同样,备份保持期更改是联机操作。 要缩短重启时间,建议在非高峰时段执行缩放操作。 此方法可减少重启数据库服务器所需的时间。

近零停机时间缩放

近零停机时间缩放是一项功能,旨在最大程度地减少修改存储和计算层时的停机时间。 如果你修改了 vCore 数或更改了计算层,服务器将重启以应用新配置。 在此过渡到新服务器期间,无法建立新连接。

通常,使用常规缩放时,此过程可能需要 2 到 10 分钟不等。 使用新的近零停机时间缩放功能时,此持续时间将减少到 30 秒以内。 这缩短了缩放资源期间的停机时间,并提高了数据库实例的整体可用性。

工作原理

在缩放方案中更新 Azure Database for PostgreSQL 灵活服务器实例时,将使用更新的配置创建服务器 (VM) 的新副本。 将新副本与当前副本同步,然后在中断 30 秒后切换到新副本。 接着,停用旧服务器。 此过程无需支付任何额外费用。

此过程可实现无缝更新,同时最大限度地减少停机时间并确保成本效益。 对存储层和计算层进行更改时,将触发此缩放过程。 此功能仅在非 HA 服务器上可用,并在所有 Azure 区域中启用。 无需客户操作即可使用此功能

对于已配置只读副本的服务器,缩放操作必须遵循特定的序列,以确保数据一致性并最大程度地减少故障时间。 有关该序列的详细信息,请参阅使用只读副本进行缩放

注意

近零停机时间缩放过程是默认操作。 如果遇到以下限制,系统会切换到常规缩放,与近零停机时间缩放相比,它的停机时间更长。

精确的停机时间预期

  • 停机持续时间:在大多数情况下,停机时间范围为 10 到 30 秒。
  • 其他注意事项:缩放事件后,会有约 30 秒固有的 DNS Time-To-Live (TTL) 周期。 此时间段不直接由缩放过程控制。 它是 DNS 行为的标准部分。 从应用程序的角度来看,缩放期间的总停机时间可能介于 40 到 60 秒 之间。

注意事项和限制

  • 若要使近零停机缩放正常工作,可以在使用虚拟网络集成网络时启用委托子网中 IP 之间的所有入站/出站连接。 如果未启用这些连接,则近零停机缩放过程将不起作用,并且缩放将通过标准缩放工作流进行。
  • 如果客户订阅存在区域容量限制或配额限制,则近零停机时间缩放将不起作用。
  • 近零停机时间缩放不适用于副本服务器,因为它仅在主服务器上受支持。 对于副本服务器,它将自动进行常规缩放过程。
  • 如果具有委派子网的虚拟网络注入服务器没有足够的可用 IP 地址,则近零停机时间缩放将不起作用。 如果你有一台独立服务器,则需要一个额外的 IP 地址。 对于已启用 HA 的服务器,需要两个额外的 IP 地址。
  • 几乎不会导致停机的缩放不适用于无日志记录表。 在执行几乎不会导致停机的缩放后,使用无日志记录表来存储任何数据的客户将会丢失这些表中的所有数据。