Azure Database for PostgreSQL 灵活服务器中的主版本升级

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

Azure Database for PostgreSQL 灵活服务器支持 PostgreSQL 版本 16、15、14、13、12 和 11。 Postgres 社区约每年发布一次包含新功能的新主版本。 此外,每个主版本会定期收到 bug 修复(以次要版本的形式)。 次要版本升级包含向后兼容现有应用程序的更改。 Azure Database for PostgreSQL 灵活服器务在客户的维护时段内定期更新次要版本。

主版本升级比次要版本升级复杂得多。 其中可能包括有可能不向后兼容已发布的应用程序的内部更改和新功能。

Azure Database for PostgreSQL 灵活服务器 Postgres 有一项功能,只需单击一下即可对服务器执行就地升级。 此功能通过最大程度减少对访问服务器的用户和应用程序的中断来简化升级过程。

就地升级在主版本升级后会保留当前服务器的服务器名称和其他设置。 升级过程中不需要进行数据迁移或更改应用程序连接字符串。 与数据迁移相比,就地升级速度更快,故障时间更短。

进程

下面是主版本就地升级的一些重要注意事项:

  • 在主版本就地升级过程中,Azure Database for PostgreSQL 灵活服务器运行预检查过程来识别可能导致升级失败的任何潜在问题。

    如果预检查发现任何不兼容性的问题,它会创建日志事件,其中将显示升级预检查失败以及错误消息。

    如果预检查成功,Azure Database for PostgreSQL 灵活服务器会在开始升级之前停止该服务并执行隐式备份。 如果出现升级错误,该服务会使用此备份将数据库实例还原到其以前的版本。

  • Azure Database for PostgreSQL 灵活服务器使用 pg_upgrade 工具执行就地主版本升级。 使用该服务时可灵活跳过中间版本,直接升级到更新版本。

  • 在为实现高可用性 (HA) 启用的服务器进行主版本就地升级期间,该服务会禁用 HA,在主服务器上执行升级,然后在升级完成后重新启用 HA。

  • 大多数扩展会在主版本就地升级期间自动升级到更高版本,但存在一些例外情况

  • Azure Database for PostgreSQL 灵活服务器的主版本就地升级过程会自动部署受支持的最新次要版本。

  • 就地主版本升级是会导致短暂停机的离线操作。 停机时间通常少于 15 分钟。 所需时间可能会有所不同,具体取决于涉及的系统表数。

  • 升级前事务长时间运行或工作负载高可能会增加关闭数据库所需的时间和升级时间。

  • 主版本就地升级成功后,无法自动还原到早期版本。 但你可以执行时间点还原 (PITR),恢复到升级之前的某个时间,从而还原以前版本的数据库实例。

限制

如果就地主版本升级的预检查操作失败,升级将失败,并显示基于以下所有限制的详细错误消息:

  • 就地主版本升级当前不支持只读副本。 如果有充当只读副本的服务器,在主服务器上执行升级之前需要先删除该副本。 升级后,可以重新创建副本。

  • Azure Database for PostgreSQL 灵活服务器需要能够在部署了灵活服务器虚拟网络中将流量发送到目标端口 5432 和 6432,以及能够向 Azure 存储中发送和接收流量以执行日志存档。

    如果将网络安全组 (NSG) 配置为限制部署的子网与内灵活服务器之间的流量,请确保允许子网中的流量流向目标端口 5432 和 6432。 通过将服务标记“Azure 存储”作为目标来允许流量流向 Azure 存储

    如果未正确设置网络规则,则主版本升级后不会自动启用 HA,需要手动启用 HA。 修改 NSG 规则以允许流量流向目标端口和存储,并在服务器上启用 HA 功能。

  • 主版本就地升级不支持某些扩展,并且在升级某些扩展时存在一些限制。 所有 PostgreSQL 版本都不支持以下扩展:Timescaledbpgauditdblinkorafcepg_partmanpostgres_fdw

  • 如果在安装了 PostGIS 扩展的情况下升级安服务器,请将 search_path 服务器参数设置为显式包含:

    • PostGIS 扩展的架构。
    • 依赖于 PostGIS 的扩展。
    • 充当以下扩展的依赖项的扩展:postgispostgis_rasterpostgis_sfcgalpostgis_tiger_geocoderpostgis_topologyaddress_standardizeraddress_standardizer_data_usfuzzystrmatch(对于 postgis_tiger_geocoder 是必需的)。
  • 不支持配置有逻辑复制槽位的服务器。

后续步骤