执行次要版本升级
可以使用以下方法升级数据库集群的次要版本或修补数据库集群:
在执行次要版本升级之前
建议您执行以下操作以缩短次要版本升级期间的停机时间:
应在流量较低的时段执行 Aurora 数据库集群维护。使用 Performance Insights 来识别这些时间段,以便正确配置维护时段。有关 Performance Insights 的更多信息,请参阅在 Amazon RDS 上使用 Performance Insights 监控数据库负载。有关数据库集群维护时段的更多信息,请参阅调整首选数据库集群维护时段。
-
使用支持指数回退和抖动的 AWS SDK 作为最佳实践。有关更多信息,请参阅 Exponential Backoff And Jitter
。
如何执行次要版本升级和应用补丁
次要版本升级和补丁只有在经过严格的测试后才会在 AWS 区域中推出。在发布升级和补丁之前,Aurora PostgreSQL 将进行测试,以确保次要社群版本发布后出现的已知安全问题、错误和其他问题不会破坏 Aurora PostgreSQL 实例集的整体稳定性。
当 Aurora PostgreSQL 推出了新的次要版本时,构成 Aurora PostgreSQL 数据库集群的实例可以在指定的维护时段内自动升级。要实现此操作,Aurora PostgreSQL 数据库集群必须已开启 Enable auto minor version upgrade(启用自动次要版本升级)选项。构成 Aurora PostgreSQL 数据库集群的所有数据库实例都必须已开启自动次要版本升级(AmVU)选项,以便在整个集群中应用次要版本升级。
提示
确保对于构成 Aurora PostgreSQL 数据库集群的所有 PostgreSQL 数据库实例开启 Enable auto minor version upgrade(启用自动次要版本升级)选项。必须开启此选项,才能使数据库集群中的每个实例正常工作。有关如何设置自动次要版本升级以及该设置在集群和实例级别应用时的工作原理的信息,请参阅 Aurora 数据库集群的自动次要版本升级。
通过使用 AWS CLI 命令 describe-db-instances 和以下查询,可以针对所有 Aurora PostgreSQL 数据库集群检查 Enable auto minor version upgrade(启用自动次要版本升级)选项的值。
aws rds describe-db-instances \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'
此查询返回其 AutoMinorVersionUpgrade
设置的状态值为 true
或 false
的所有 Aurora DB 集群及其实例的列表。所示的命令假设您已将 AWS CLI 配置为以默认的 AWS 区域为目标。
有关 AmVU 选项以及如何修改 Aurora 数据库集群以使用该选项的更多信息,请参阅 Aurora 数据库集群的自动次要版本升级。
您可以通过响应维护任务或修改集群以使用新版本,将 Aurora PostgreSQL 数据库集群升级到新的次要版本。
通过使用 RDS 控制台并打开 Recommendations(建议)菜单,您可以确定 Aurora PostgreSQL 数据库集群的任何可用升级或补丁。在此处,您可以找到各种维护问题的列表,例如 Old minor versions(旧的次要版本)。根据您的生产环境,您可以选择 Schedule(计划)升级,或通过选择 Apply now(立即应用)立即采取行动,如下所示。
要了解有关如何维护 Aurora 数据库集群的更多信息,包括如何手动应用补丁和次要版本升级,请参阅维护 Amazon Aurora 数据库集群。
次要版本升级和零停机时间修补
升级 Aurora PostgreSQL 数据库集群可能会导致中断。在升级过程中,数据库会在升级时关闭。如果在数据库忙碌时开始升级,则会丢失数据库集群正在处理的所有连接和事务。如果等到数据库处于空闲状态再执行升级,则可能需要等待很长时间。
零停机修补 (ZDP) 特征改进了升级过程。使用 ZDP,可以应用次要版本升级和补丁,且对 Aurora PostgreSQL 数据库集群的影响最小。当对 Aurora PostgreSQL 版本以及这些次要版本的其他更高版本和更高的主要版本应用补丁或更高次要版本升级时,使用 ZDP。也就是说,从这些版本中的任何一个升级到新的次要版本都使用 ZDP。
下表显示提供了 ZDP 的 Aurora PostgreSQL 版本和数据库实例类:
版本 | db.r* 实例类 | db.t* 实例类 | db.x* 实例类 | db.serverless 实例类 |
---|---|---|---|---|
10.21.0 及更高的 10.21 版本 | 是 | 是 | 是 | 不适用 |
11.16.0 及更高的 11.16 版本 | 是 | 是 | 是 | 不适用 |
11.17 及更高版本 | 是 | 是 | 是 | 不适用 |
12.11.0 及更高的 12.11 版本 | 是 | 是 | 是 | 不适用 |
12.12 及更高版本 | 是 | 是 | 是 | 不适用 |
13.7.0 及更高的 13.7 版本 | 是 | 是 | 是 | 不适用 |
13.8 及更高版本 | 是 | 是 | 是 | 是 |
14.3.1 及更高的 14.3 版本 | 是 | 是 | 是 | 不适用 |
14.4.0 及更高的 14.4 版本 | 是 | 是 | 是 | 不适用 |
14.5 及更高版本 | 是 | 是 | 是 | 是 |
15.3 及更高版本 | 是 | 是 | 是 | 是 |
ZDP 的工作原理是在整个 Aurora PostgreSQL 升级过程中保留与 Aurora PostgreSQL 数据库集群的当前客户端连接。但在以下情况下,连接将断开,以便 ZDP 完成:
正在执行长时间运行的查询或事务。
数据定义语言(DDL)语句正在运行。
正在使用临时表或表锁定。
所有会话都在侦听通知渠道。
处于“WITH HOLD”状态的光标正在使用中。
TLSv1.3 或 TLSv1.1 连接正在使用中。
在使用 ZDP 的升级过程中,数据库引擎会寻找一个安静点来暂停所有新事务。此操作可在应用补丁和升级期间保护数据库。为了确保您的应用程序在事务暂停的情况下平稳运行,我们建议将重试逻辑集成到您的代码中。这种方法可确保系统能够管理任何短暂的停机时间而不会出现故障,并且可以在升级后重试新事务。
当 ZDP 成功完成时,应用程序会话将保持(但断开连接的会话除外),并且数据库引擎将在升级仍在进行时重新启动。尽管数据库引擎重新启动可能会导致吞吐量临时下降,但这通常只持续几秒钟,最多约一分钟。
在某些情况下,零停机修补 (ZDP) 可能无法成功。例如,Aurora PostgreSQL 数据库集群或其实例上处于 pending
状态的参数更改会干扰 ZDP。
您可以在控制台的 Events(事件)页面中找到 ZDP 操作的指标和事件。这些事件包括 ZDP 升级的开始和升级完成。在这种情况下,您可以了解该过程所用的时长,以及在重新启动过程中发生的保留连接和断开连接的数量。您可以在数据库错误日志中找到详细信息。
将 Aurora PostgreSQL 引擎升级到新的次要版本
您可以使用以下方法将 Aurora PostgreSQL 数据库集群升级到新的次要版本:控制台、AWS CLI 或 RDS API。在执行升级之前,我们建议您遵循我们针对主要版本升级推荐的最佳实践。与新的主要版本一样,新的次要版本也可以对优化器进行改进(例如修复),这可能会导致查询计划回归。为确保计划稳定性,我们建议您使用查询计划管理(QPM)扩展,详情请参阅确保主要版本升级后的计划稳定性。
升级 Aurora PostgreSQL 数据库集群的引擎版本
-
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases (数据库),然后选择要升级的数据库集群。
-
选择修改。此时会显示修改数据库集群页面。
-
对于数据库引擎版本,选择新版本。
-
选择继续,查看修改摘要。
-
要立即应用更改,请选择立即应用。选择此选项在某些情况下可能导致中断。有关更多信息,请参阅“修改 Amazon Aurora 数据库集群”。
-
在确认页面上,检查您的更改。如果更改正确无误,请选择修改集群以保存更改。
也可以选择 Back 编辑您的更改,或选择 Cancel 取消更改。
要升级数据库集群的引擎版本,请结合使用 AWS CLI 命令 modify-db-cluster 与以下参数:
-
--db-cluster-identifier
– Aurora PostgreSQL 数据库集群的名称。 -
--engine-version
– 数据库引擎要升级到的版本号。有关有效的引擎版本的信息,请使用 AWS CLI describe-db-engine-versions 命令。 -
--no-apply-immediately
– 在下一维护时段内应用更改。要立即应用更改,请改用--apply-immediately
。
对于 Linux、macOS 或 Unix:
aws rds modify-db-cluster \ --db-cluster-identifier
mydbcluster
\ --engine-versionnew_version
\ --no-apply-immediately
对于 Windows:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --engine-versionnew_version
^ --no-apply-immediately
要升级数据库集群的引擎版本,请使用 ModifyDBCluster 操作。指定以下参数:
-
DBClusterIdentifier
– 数据库集群的名称,例如
。mydbcluster
-
EngineVersion
– 数据库引擎要升级到的版本号。有关有效的引擎版本的信息,请使用 DescribeDBEngineVersions 操作。 -
ApplyImmediately
– 是立即应用更改还是在下一个维护时段内应用更改。要立即应用更改,请将该值设置为true
。要在下一个维护时段内应用更改,请将该值设置为false
。