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

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 灵活服务器在升级期间拍摄数据库的快照。 在升级开始之前创建快照。 如果升级失败,系统会自动将数据库从快照还原到其状态。

  • PostgreSQL 16 引入了基于角色的安全性措施。 在 Azure Database for PostgreSQL 灵活服务器上进行主版本升级后,在服务器上创建的第一个用户(被授予 ADMIN 选项)现在将拥有管理权限,用于执行基本维护操作的其他角色。

升级/迁移后

主版本升级完成后,建议在每个数据库中运行 ANALYZE 命令以刷新 pg_statistic 表。 否则,可能会遇到性能问题。

postgres=> analyze;
ANALYZE

主版本升级日志

主版本升级日志 (PG_Upgrade_Logs) 提供对详细服务器日志的直接访问。 将 PG_Upgrade_Logs 集成到升级过程中有助于确保更顺利、更透明地过渡到新的 PostgreSQL 版本。

可以使用服务器参数以与上面的服务器日志相同的方式配置主版本升级日志:

  • 若要启用该功能,请将 logfiles.download_enable 设置为 ON
  • 若要以天为单位定义日志文件的保留期,可使用 logfiles.retention_days

设置升级日志

若要开始使用 PG_Upgrade_Logs,可以通过 Azure 门户或 Azure CLI 来配置日志。 选择最适合所用工作流的方法。

可以通过服务器日志的 UI 来访问升级日志。 在那里,可以实时监视 PostgreSQL 主版本升级的进度和详细信息。 此 UI 提供用于查看日志的集中位置,用户可以更轻松地跟踪升级过程和排查相关问题。

升级日志的优点

  • 见解诊断PG_Upgrade_Logs 提供有关升级过程的宝贵见解。 它捕获有关所执行的操作的详细信息,并凸显任何发生的错误或收到的警告。 此级别的详细信息有助于诊断和解决升级期间可能出现的问题,确保更顺利地完成过渡。
  • 简化的故障排除:通过直接访问这些日志,可以快速识别和解决潜在的升级障碍,从而减少停机时间并最大限度地减少对操作的影响。 日志是一个重要的故障排除具,可以更高效且有效地解决问题。

限制

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

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

  • 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 是必需的)。
  • 不支持配置有逻辑复制槽位的服务器。

  • 使用 SSDv2 存储的服务器不支持主要版本升级。

后续步骤