

# 升级 Amazon RDS 的多可用区数据库集群的引擎版本
<a name="multi-az-db-clusters-upgrading"></a>

Amazon RDS 提供每个支持的数据库引擎的更高版本，因此，您可以使多可用区数据库集群保持最新。本主题说明将多可用区数据库集群升级到更高版本的过程。

升级多可用区数据库集群需要选择新的兼容引擎版本并规划潜在的停机时间。该过程通过利用多可用区架构的失效转移功能，确保将中断降至最低。最佳实践包括在低流量期间执行升级、在非生产环境中进行测试以及验证应用程序与新版本的兼容性。

**Topics**
+ [次要版本升级](#multi-az-db-clusters-upgrade-minor)
+ [主要版本升级。](#multi-az-db-clusters-upgrade-major)
+ [升级多可用区数据库集群](#multi-az-db-clusters-upgrade-process)
+ [升级多可用区数据库集群只读副本](#multi-az-db-clusters-upgrade-replicas)
+ [使用事件监控多可用区数据库集群升级](#multi-az-db-clusters-upgrade-monitoring)

## 次要版本升级
<a name="multi-az-db-clusters-upgrade-minor"></a>

次要版本升级 仅包含与现有应用程序向后兼容的更改。当您启动次要版本升级时，Amazon RDS 首先一次升级一个读取器数据库实例。然后，其中一个读取器数据库实例将切换为新的写入器数据库实例。然后，Amazon RDS 升级旧的写入器实例（现在是读取器实例）。

升级期间的停机时间限于其中一个读取器数据库实例变为新写入器数据库实例所花费的时间。这一停机时间就像自动失效转移一样。有关更多信息，请参阅 [对 Amazon RDS 的多可用区数据库集群执行失效转移](multi-az-db-clusters-concepts-failover.md)。请注意，多可用区数据库集群的副本滞后可能会影响停机时间。有关更多信息，请参阅 [副本滞后和多可用区数据库集群](multi-az-db-clusters-concepts.md#multi-az-db-clusters-concepts-replica-lag)。

对于 RDS for PostgreSQL 多可用区数据库集群只读副本，Amazon RDS 一次升级一个集群成员实例。升级期间，读取器和写入器集群角色不会切换。因此，在 Amazon RDS 升级集群写入器实例时，数据库集群可能会出现停机。

**注意**  
多可用区数据库集群次要版本升级的停机时间通常为 35 秒。与 RDS 代理一起使用时，您可以将停机时间进一步缩短到一秒或更短。有关更多信息，请参阅 [Amazon RDS 代理](rds-proxy.md)。或者，您可以使用开源数据库代理，例如 [ProxySQL](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-of-downtime-with-proxysql-when-upgrading-amazon-rds-multi-az-deployments-with-two-readable-standbys/)、[PgBouncer](https://aws.amazon.com/blogs/database/fast-switchovers-with-pgbouncer-on-amazon-rds-multi-az-deployments-with-two-readable-standbys-for-postgresql/) 或 [AWS Advanced JDBC Wrapper Driver](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-downtime-with-the-advanced-jdbc-wrapper-driver-when-upgrading-amazon-rds-multi-az-db-clusters/)。

## 主要版本升级。
<a name="multi-az-db-clusters-upgrade-major"></a>

主版本升级可能引入与现有应用程序不兼容的更改。

当您启动 RDS for PostgreSQL 多可用区数据库集群的主要版本升级时，Amazon RDS 会同时升级读取器和写入器实例。因此，在升级完成之前，数据库集群可能不可用。

当您启动 RDS for MySQL 多可用区数据库集群的主要版本升级时，Amazon RDS 将一次升级一个集群成员实例，因此，将从较低的引擎版本复制到更高的引擎版本。在主要版本升级期间，必须确保您的工作负载与源引擎和目标引擎版本兼容，因为引擎版本在语法和功能上可能有所不同。

**注意**  
与次要版本升级一样，RDS for MySQL 主要版本升级期间的停机时间通常为 35 秒。与 RDS 代理一起使用时，您可以将停机时间进一步缩短到一秒或更短。有关更多信息，请参阅 [Amazon RDS 代理](rds-proxy.md)。

## 升级多可用区数据库集群
<a name="multi-az-db-clusters-upgrade-process"></a>

升级多可用区数据库集群的引擎版本的过程与升级数据库实例引擎版本的过程相同。有关说明，请参阅[升级数据库实例 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。唯一的区别是，当使用 AWS Command Line Interface（AWS CLI）时，您使用 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令并指定 `--db-cluster-identifier` 参数（以及 `--allow-major-version-upgrade` 参数）。

有关主要版本升级和次要版本升级的更多信息，请参阅数据库引擎的以下文档：
+ [升级 RDS for PostgreSQL 数据库引擎](USER_UpgradeDBInstance.PostgreSQL.md)
+ [升级 RDS for MySQL 数据库引擎](USER_UpgradeDBInstance.MySQL.md)

## 升级多可用区数据库集群只读副本
<a name="multi-az-db-clusters-upgrade-replicas"></a>

Amazon RDS 不会自动升级多可用区数据库集群只读副本。对于*次要*版本升级，必须先手动升级所有只读副本，然后升级集群。否则，升级将被阻止。当您执行集群的*主要*版本升级时，所有只读副本的复制状态将更改为**终止**。升级完成后，您必须删除并重新创建只读副本。有关更多信息，请参阅 [监控只读复制](USER_ReadRepl.Monitoring.md)。

## 使用事件监控多可用区数据库集群升级
<a name="multi-az-db-clusters-upgrade-monitoring"></a>

当您升级多可用区数据库集群的引擎版本时，Amazon RDS 在流程的每个阶段都会发出一个特定的事件。要跟踪升级进度，您可以查看或订阅这些事件。

 有关 RDS 事件的更多信息，请参阅[监控 Amazon RDS 事件](working-with-events.md)。

有关引擎升级期间发生的特定 Amazon RDS 事件的详细信息，请参阅[Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。