升级 PostgreSQL 版本 10 的亚马逊 Aurora PostgreSQL 和亚马逊 RDS

兼容 Amazon Aurora PostgreSQL 的版本 和适用于 Po stgreSQL 版本 10 的 亚马逊关系数据库服务(亚马逊 RDS)的 生命周期即将结束。如果你目前在 PostgreSQL 10 上运行 Aurora 或 RDS 实例,则必须升级数据库。

  • 公告:亚马逊 Aurora PostgreSQL 10.x 的生命周期将于 2023 年 1 月 31 日结束
  • 公告:适用于 PostgreSQL 10.x 的亚马逊 RDS 的生命周期将于 2023 年 4 月 17 日结束

与向后兼容现有应用程序的次要版本升级不同,主要版本升级可能包含与现有应用程序不向后兼容的数据库更改。在启动升级之前,我们建议您仔细计划和测试主要版本升级。较高主要版本的好处包括新功能、更高的性能和更高的安全态势。

在这篇文章中,我们涵盖了以下主题:

  • 兼容 Aurora PostgreSQL 且适用于 PostgreSQL 的亚马逊 RDS 生命周期结束时间表
  • 就地升级与异地升级方法的比较

Aurora PostgreSQL 和亚马逊 RDS for PostgreSQL 生命周期

PostgreSQL 社区每年发布一个新的主要版本,对较旧的主要版本有明确 的生命周期 终止 (EOL) 政策 。此政策允许您提前做出版本和升级决定。社区 EOL 政策是在主要版本首次发布后的 5 年内为其提供支持。第五年之后,主要版本将有一个包含所有修复程序的最后一个次要版本,然后被视为停产且不再受支持。PostgreSQL 10.23 是 PostgreSQL 10 主要版本的最终版本。在此版本发布之后,PostgreSQL 10 将不再获得安全和错误修复。有关 Aurora 版本政策,请参阅 亚马逊 Aurora 版本 。有关适用于 PostgreSQL 的 RDS 所有版本的最终发布日期,请参阅 RDS fo r Postgre SQL 发布日历。

社区 PostgreSQL 10 的生命周期定于 2022 年 11 月 10 日结束。Aurora 和 RDS for PostgreSQL 的生命周期结束日期源自社区的生命周期终止日期。以下是 RDS 和 Aurora PostgreSQL 10.x 生命周期结束的重要日期:

  • 从世界标准时间 2023 年 1 月 31 日 00:00:01 开始,亚马逊云科技 可能会将您的 Aurora PostgreSQL 10.x 数据库升级到更新的主要版本。
  • 从世界标准时间 2023 年 4 月 17 日 00:00:01 开始,亚马逊云科技 可能会在预定的维护时段内将您的 RDS for PostgreSQL 10.x 数据库升级到 PostgreSQL 14 主版本。无论维护时段如何,所有剩余的 RDS for PostgreSQL 10.x 数据库都将从 2023 年 7 月 18 日 00:00:01 升级到 PostgreSQL 14。

选择要升级的目标引擎版本

我们建议将所有实例升级到 PostgreSQL 14 或更高版本。但是,目标主要版本的选择可能取决于您的应用程序和业务需求。按计划规划和执行升级可让您确定最符合您需求的版本。

我们建议您先升级到次要版本 10.21 或更高版本,应用任何待处理的操作系统维护,然后直接升级到 PostgreSQL 14 或更高版本,这样您就可以跳过中间主要版本。跳过主要版本有助于节省数据库停机时间和升级工作。或者,如果您的应用程序尚未为 PostgreSQL 14 做好准备,则可以根据您的业务和应用程序需求考虑其他主要版本,例如 PostgreSQL 12 和 PostgreSQL 13。

你可以使用如下代码所示 的 亚马逊云科技 命令行接口 (亚马逊云科技 CLI) 来查找目标 Aurora PostgreSQL 版本:

[ec2-user@ip-~]$ aws rds describe-db-engine-versions --engine aurora-postgresql --engine-version 10.21 --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output table

--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  11.16                 |
|  12.11                 |
|  13.7                  |
|  14.3                  |
+------------------------+

下表总结了 Aurora PostgreSQL 的 升级目标

Current Source Version Newest Upgrade Target Other Available Upgrade Targets
10.21 14.4 14.3 13.7 12.11 11.17 11.16
10.20 13.6 12.10 11.17 11.16 11.15 10.21
10.19 11.17 11.16 11.15 11.14 10.21 10.20
10.18 13.4 12.8 11.17 11.16 11.15 11.14 11.13 10.21 10.20 10.19
10.17 11.17 11.16 11.15 11.14 11.13 11.12 10.21 10.20 10.19 10.18

您可以按如下方式使用 亚马逊云科技 CLI 来查找适用于 PostgreSQL 版本的目标 Amazon RDS:

[ec2-user@ip-~]$ aws rds describe-db-engine-versions --engine postgres --engine-version 10.21 --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output table

--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  11.16                 |
|  12.11                 |
|  13.7                  |
|  14.3                  |
|  14.4                  |
+------------------------+

下表总结了适用于 PostgreSQL 的亚马逊 RDS 的升级目标。

Current Source Version Newest Upgrade Target Other Available Upgrade Targets
10.21 14.4 14.3 13.7 12.11 11.17 11.16 10.22
10.20 14.2 13.6 12.10 11.17 11.16 11.15 10.22 10.21
10.19 14.1 13.5 12.9 11.17 11.16 11.15 11.14 10.22 10.21 10.20
10.18 13.4 12.8 11.17 11.16 11.15 11.14 11.13 10.22 10.21 10.20 10.19
10.17 13.3 12.7 11.17 11.16 11.15 11.14 11.13 11.12 10.21 10.20 10.19 10.18

主要版本中提供的功能

下表列出了所有版本的一些主要功能。

Version Major Features
14
  • PostgreSQL 14 发行说明
  • 分布式工作负载的增强功能
  • 提高了吸尘系统的性能,减少了 B 树的开销
  • 增强的 SQL 性能、一致性和便利性
  • 安全性增强
13
  • PostgreSQL 13 发行说明
  • 提高了聚合表或分区表的性能
  • 节省 B 树索引的空间和性能提升
  • 用于查询规划的扩展统计数据
12
  • PostgreSQL 12 发行说明
  • pg_cron 扩展名
  • 支持 SQL/JSON 路径语言
  • B 树索引性能改进,同时重建索引
  • 行内公用表表达式

有两种方法可以执行主要版本升级:就地升级和异地升级。就地选项升级 现有实例或集群上的 数据库。异地涉及外部数据库实例或集群以完成升级。

就地升级

Aurora PostgreSQL 和适用于 PostgreSQL 的亚马逊 RDS 都支持就地自动升级,这些升级使用 pg_upgrade 实用程序。 此选项没有异地升级那么复杂,因为它是托管服务的一项功能;亚马逊云科技 负责处理繁重的工作并进行无缝的多版本升级。

在主要版本升级中,亚马逊 RDS 和 Aurora 完成以下步骤:

  1. 拍摄升级前的快照。您可以使用此快照进行回滚。
  2. 关闭实例并为升级做好准备。
  3. 使用 pg_upgrade 实用程序在实例上运行升级作业。
  4. 拍摄升级后的快照。现在已在实例上重新配置网络。

就地升级所需的停机时间主要取决于数据库中对象的大小和数量。这可以通过恢复快照并升级来确定。如果您的企业能够用最少的管理任务来承受停机时间,请选择此选项。

要了解有关主要版本升级的更多信息,请参阅 升级 Aurora PostgreSQL 的 PostgreSQL 数据库引擎以升级 Aurora P ostgreSQL 和 如何 为 RDS 执行 PostgreSQL 升级的主要版本升级

异地升级

以下是异地升级的高级步骤。所需的实际步骤可能会有所不同,具体取决于您的环境和您选择的同步方法的类型。

  1. 使用 RDS 快照 Aurora 克隆 创建生产数据库实例的副本。
  2. 将新实例升级到更高的 PostgreSQL 版本。
  3. 使用下文讨论的方法之一,在源实例和新升级实例之间配置连续复制。
  4. 在截止时间段内,在源数据库实例和目标数据库实例同步后,将应用程序指向目标数据库实例。

异地升级比就地升级更为复杂,因为它需要手动步骤和监控。

在以下部分中,我们将讨论执行异地升级的三个选项。

选项 A:逻辑复制

Aurora PostgreSQL 和适用于 PostgreSQL 版本 10 及更高版本的亚马逊 RDS 支持使用 pglogical 进行逻辑 该过程通常从拍摄发布者数据库上数据的快照开始,然后将其复制到订阅服务器。然后,发布者上的更改将以实时发生的方式发送给订阅者。本 亚马逊云科技 用户指南 讨论了如何在 Aurora PostgreSQL 中使用逻辑复制。

此过程具有以下优点:

  • 可以减少升级期间的停机时间
  • 持续复制

但是,它有以下缺点:

  • 需要几个步骤来配置复制
  • 大型数据库的初始同步可能需要更多时间
  • 无法复制大型对象、序列、DDL 等

选项 B:带有 CDC 的 亚马逊云科技 DMS

Aurora PostgreSQL 和适用于 PostgreSQL 的亚马逊 RD S 版本 10 及更高版本支持具有变更数据捕获 (CDC) 功能的 亚马逊云科技 数据库迁移服务 (亚马逊云科技 DMS)。亚马逊云科技 DMS 可以在最短的停机时间内执行实时迁移。有关使用 亚马逊云科技 DMS 进行升级的更多信息,请参阅 升级适用于 PostgreSQL 的亚马逊 RDS 或亚马逊 Aurora PostgreSQL 数据库,第 1 部分 :比较升级方法。

此选项具有以下优点:

  • 可以减少升级期间的停机时间
  • 持续复制

但是,它有以下缺点:

  • 亚马逊云科技 DMS 不支持某些数据类型,例如带时区的时间戳
  • 在此升级项目完成期间,您必须支付 亚马逊云科技 DMS 的费用

选项 C:布卡多(适用于 PostgreSQL 和 Aurora PostgreSQL 的亚马逊 RDS)

Bucardo 是一个开源实用程序,可以将数据更改异步复制到多个辅助或多个主节点。它是一种基于触发器的复制,经证明具有一致性和稳定性,可以进行大规模迁移和升级。它需要 EC2 实例来托管该工具,并作为 Perl 守护程序运行,与复制中涉及的所有数据库进行通信。

有关配置 Bucardo 的说明,请参阅使用 Bucardo 将旧版 PostgreSQL 数据库迁移到亚马逊 RDS 或 Aurora PostgreSQL。

此过程具有以下优点:

  • 可以对辅助数据库进行预热以便快速设置
  • 减少升级停机时间
  • 持续复制

但是,它有以下缺点:

  • 需要几个步骤进行配置
  • 无法处理大型对象和 DDL
  • 没有唯一密钥就无法增量复制表(它可以完全复制它们)
  • 需要 EC2 实例来托管该工具

就地升级与异地升级方法的比较

选择一个选项而不是另一个选项主要取决于在停机时间和复杂性之间进行权衡。您需要确定您的企业可以承受多少停机时间,以及您愿意承担的升级的复杂性。可以从 RDS 控制台或 CLI 执行就地升级,需要停机。相比之下,异地升级可以减少停机时间,因为升级是在数据库的副本上进行的,但是在进行直接转换之前,需要几个步骤才能使用新数据库实例配置持续复制。

摘要

现在是升级你所有的 PostgreSQL 10 实例的时候了。从现在起到生命周期终止日期之前(Aurora PostgreSQL 为 2023 年 1 月 31 日,适用于 PostgreSQL 的亚马逊 RDS 为 2023 年 4 月 17 日),您可以随时启动升级。我们建议您规划和测试这些主要版本升级,并根据应用程序的需求进行升级。

根据所采用的方法(就地升级或异地升级),您应该使用所选方法对生产数据库实例的副本进行试运行,以估计所需的时间并为最终的生产升级做准备。

如果您需要帮助或需要反馈,请联系您常用的 亚马逊云科技 支持联系人,或者在 亚马逊云科技 re : Post for RD S 中发布 消息。


作者简介

Vivek Singh 是 亚马逊云科技 的数据库专家,专注于亚马逊 RDS/Aurora PostgreSQL 引擎。他与企业客户合作,提供有关 PostgreSQL 运营性能的技术支持,并共享数据库最佳实践。

Garry Knox 是 亚马逊云科技 企业支持的技术客户经理。他与外部客户合作开展各种项目,帮助他们在使用 亚马逊云科技 时提高解决方案的价值。