

# 维护Amazon Aurora 数据库集群
<a name="USER_UpgradeDBInstance.Maintenance"></a>

Amazon RDS 会定期对 Amazon RDS 资源执行维护。以下主题介绍了这些维护操作以及如何应用它们。

## 数据库集群维护更新概述
<a name="USER_UpgradeDBInstance.Maintenance.Overview"></a>

维护通常涉及对数据库集群中以下资源的更新：
+ 底层硬件
+ 底层操作系统（OS）
+ 数据库引擎版本

针对操作系统的更新最常见的原因是安全问题。建议您尽快进行更新。有关操作系统更新的更多信息，请参阅。[Aurora 数据库集群的操作系统更新](#Aurora_OS_updates)

**Topics**
+ [维护更新期间的离线资源](#USER_UpgradeDBInstance.Maintenance.Overview.offline)
+ [推迟的数据库实例和数据库集群修改](#USER_UpgradeDBInstance.Maintenance.Overview.Deferred)
+ [DescribePendingMaintenanceActions API 的最终一致性](#USER_UpgradeDBInstance.Maintenance.Overview.eventual-consistency)

### 维护更新期间的离线资源
<a name="USER_UpgradeDBInstance.Maintenance.Overview.offline"></a>

一些维护项目要求 Amazon RDS 使您的数据库集群脱机一小段时间。要求资源脱机的维护项目包括必需的操作系统或数据库修补。仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补。此类补丁很少发生，通常每隔几个月发生一次。它所需要的维护时间很少超过维护窗口的一小部分。

### 推迟的数据库实例和数据库集群修改
<a name="USER_UpgradeDBInstance.Maintenance.Overview.Deferred"></a>

您已选择不立即应用的推迟的数据库集群和实例修改会在维护时段内应用。例如，您可以选择在维护时段内更改数据库实例类或集群或数据库参数组。您使用**等待重启**设置指定的此类修改不会显示在**等待维护**列表中。有关修改数据库集群的信息，请参阅[修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)。

要查看下一个维护时段待处理的修改，请使用 [describe-db-clusters](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-db-clusters.html) AWS CLI 命令并选中 `PendingModifiedValues` 字段。

### DescribePendingMaintenanceActions API 的最终一致性
<a name="USER_UpgradeDBInstance.Maintenance.Overview.eventual-consistency"></a>

Amazon RDS `DescribePendingMaintenanceActions` API 采用最终一致性模型。这意味着，`DescribePendingMaintenanceActions` 命令的结果可能不会立即对所有后续 RDS 命令可见。当您使用之前的 API 命令后立即使用 `DescribePendingMaintenanceActions` 时，请记住这一点。

最终一致性可能会影响您管理维护更新的方式。例如，如果您运行 `ApplyPendingMaintenanceActions` 命令来更新数据库集群的数据库引擎版本，则该版本最终将对 `DescribePendingMaintenanceActions` 可见。在这种情况下，`DescribePendingMaintenanceActions` 可能表明维护操作未被应用，即使已应用也是如此。

要管理最终一致性，您可以执行以下操作：
+ 请先确认数据库集群的状态，然后运行命令来对其进行修改。使用指数回退算法运行相应的 `DescribePendingMaintenanceActions` 命令，来确保有足够的时间让前一个命令传播遍整个系统。为此，请重复运行 `DescribePendingMaintenanceActions` 命令，以几秒钟的等待时间开始，然后逐渐增加达到五分钟的等待时间。
+ 增加后续命令之间的等待时间，即使 `DescribePendingMaintenanceActions` 命令返回准确的响应，也是如此。应用指数回退算法，以几秒钟的等待时间开始，然后逐渐增加达到大约五分钟的等待时间。

## 查看待处理维护更新
<a name="USER_UpgradeDBInstance.Maintenance.Viewing"></a>

通过使用 RDS 控制台、AWS CLI 或 RDS API 来查看维护更新是否可用于数据库集群。如果有可用更新，将在 Amazon RDS 控制台上数据库集群的**维护**列中显示，如下图中所示。

![\[有可执行的维护操作，将在下一个维护时段应用它。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/offlinepatchavailable.png)


如果没有维护更新可用于数据库集群，则它的列值为**无**。

如果有维护更新可用于数据库集群，则可能为以下列值：
+ **必需** – 维护操作将应用于资源且不能无限期推迟。
+ **可用** – 有可执行的维护操作，但不会自动将其应用于资源。您可以手动应用它。
+ **下一个时段** – 维护操作将在下一个维护时段应用于资源。
+ **正在进行** – 维护操作正在应用于资源。

如果有可用更新，您可以执行以下操作之一：
+ 如果维护值为**下一个时段**，可通过从**操作**中选择**推迟升级**来推迟启动维护操作。无法推迟已经启动的维护操作。
+ 立即应用维护操作。
+ 在下一个维护时段内应用维护操作。
+ 不执行任何操作。

**要执行操作，请使用 AWS 管理控制台**

1. 选择数据库实例或集群以显示其详细信息。

1. 选择**维护和备份**。将显示待执行的维护操作。

1. 选择要执行的操作，然后选择何时应用该操作。

![\[Aurora 数据库实例的待维护项目。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/pending_maintenance_aurora_instance.png)


维护时段确定待执行的操作何时开始，但不限制这些操作的总运行时间。维护操作不保证在维护时段结束前完成，可以在超出指定的结束时间后继续。有关更多信息，请参阅 [Amazon RDS 维护时段](#Concepts.DBMaintenance)。

可以通过运行 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) AWS CLI 命令，来查看维护更新是否可用于您的数据库集群。

有关应用维护更新的信息，请参阅[对数据库集群应用更新](#USER_UpgradeDBInstance.OSUpgrades)。

### 适用于 Amazon Aurora 的维护操作
<a name="maintenance-actions-aurora"></a>

以下维护操作适用于 Aurora 数据库集群：
+ `os-upgrade` – 使用滚动升级更新数据库集群中所有数据库实例的操作系统。有关更多信息，请参阅 [Aurora 数据库集群的操作系统更新](#Aurora_OS_updates)。
+ `system-update` – 修补 Aurora PostgreSQL 的数据库引擎。

以下维护操作适用于 Aurora 数据库实例：
+ `ca-certificate-rotation` – 更新数据库实例的 Amazon RDS 证书机构证书。
+ `hardware-maintenance` – 对数据库实例的底层硬件进行维护。
+ `system-update` – 更新数据库实例的操作系统。

## 选择 Aurora MySQL 维护更新的频率
<a name="Aurora.Maintenance.LTS"></a>

您可以控制每个数据库集群是经常还是很少进行 Aurora MySQL 升级。最佳选择取决于 Aurora MySQL 使用情况以及在 Aurora 上运行的应用程序的优先级。有关不太需要频繁升级的 Aurora MySQL 长期稳定性 (LTS) 版本的信息，请参阅 [Aurora MySQL 长期支持 (LTS) 版本](AuroraMySQL.Update.SpecialVersions.md#AuroraMySQL.Updates.LTS)。

 如果符合以下部分或全部条件，您可能会选择很少升级 Aurora MySQL 集群：
+  对于 Aurora MySQL 数据库引擎的每次更新，应用程序的测试周期需要很长的时间。
+  很多数据库集群或很多应用程序运行相同的 Aurora MySQL 版本。您希望同时升级所有数据库集群和关联的应用程序。
+  您同时使用 Aurora MySQL 和 RDS for MySQL。您希望将 Aurora MySQL 集群和 RDS for MySQL 数据库实例与同一级别的 MySQL 保持兼容。
+  Aurora MySQL 应用程序位于生产环境中或在其他方面对业务至关重要。除了在极少数情况下应用关键补丁以外，您无法承受升级停机。
+  Aurora MySQL 应用程序不受在后续 Aurora MySQL 版本中解决的性能问题或功能差异的限制。

 如果上述因素适用于您的情况，您可以限制 Aurora MySQL 数据库集群的强制升级次数。为此，您可以在创建或升级该数据库集群时选择称为“长期支持”(LTS) 版本的特定 Aurora MySQL 版本。这样做可以最大限度减少该数据库集群的升级周期数、测试周期数以及与升级相关的中断次数。

 如果符合以下部分或全部条件，您可能会选择经常升级 Aurora MySQL 集群：
+  应用程序的测试周期简单明了。
+  应用程序仍处于开发阶段。
+  数据库环境使用各种不同的 Aurora MySQL 版本或 Aurora MySQL 和 RDS for MySQL 版本。每个 Aurora MySQL 集群具有自己的升级周期。
+  在增加 Aurora MySQL 使用量之前，您正在等待改进特定的性能或功能。

 如果上述因素适用于您的情况，您可以使 Aurora 更频繁地应用重要升级。为此，将 Aurora MySQL 数据库集群升级到比 LTS 版本更高的 Aurora MySQL 版本。这样做可以使您更快地获得最新的性能增强、错误修复和功能。

## Amazon RDS 维护时段
<a name="Concepts.DBMaintenance"></a>

维护时段是每周时间间隔，在此期间会应用任何系统更改。每个数据库集群都具有每周维护时段。可以利用维护时段来控制何时进行修改和软件修补。有关调整维护时段的更多信息，请参阅。[调整首选数据库集群维护时段](#AdjustingTheMaintenanceWindow.Aurora)

在应用维护时，RDS 会使用您的数据库集群上的一些资源。您可观察到对性能的影响甚微。对于数据库实例来说，在极少数情况下，可能需要多可用区故障转移才能完成维护更新。

如果在给定的周内安排了维护事件，则将在您确定的 30 分钟维护时段内启动维护。大部分维护事件也将在 30 分钟的维护时段内完成，但较大的维护事件可能需要 30 分钟以上的时间才能完成。数据库集群停止后，维护时段将暂停。

这个 30 分钟维护时段是随机从每个地区的 8 小时时间段中选择出来的。如果在创建数据库集群时未指定维护时段，则 RDS 在该星期内随机选择的某一天中分配 30 分钟的维护时段。

下表显示的是分配了默认维护窗口的各个 AWS 区域的时间段。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html)

**Topics**
+ [调整首选数据库集群维护时段](#AdjustingTheMaintenanceWindow.Aurora)

### 调整首选数据库集群维护时段
<a name="AdjustingTheMaintenanceWindow.Aurora"></a>

Aurora 数据库集群维护时段应当选在使用量最小的时段上，因而可能必须不时予以修改。仅当正在应用的更新需要中断时，您的数据库集群才会在这段时间内不可用。执行必要更新所需的中断持续时间会非常短。

**注意**  
对于数据库引擎升级，Amazon Aurora 会为数据库集群而不是单个实例管理首选维护时段。

#### 控制台
<a name="AdjustingTheMaintenanceWindow.Aurora.CON"></a>

**调整首选数据库集群维护时段**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要更改维护时段的数据库集群。

1. 选择**修改**。

1. 在**维护**部分中，更新维护时段。

1. 选择 **Continue (继续)**。

   在确认页面上，检查您的更改。

1. 要立即将更改应用于维护时段，请在**修改计划**部分中选择**立即**。

1. 选择**修改集群**以保存更改。

   或者，选择 **Back** 编辑您的更改，或者选择 **Cancel** 取消更改。

#### AWS CLI
<a name="AdjustingTheMaintenanceWindow.Aurora.CLI"></a>

要调整首选数据库集群维护时段，请使用具有以下参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令：
+ `--db-cluster-identifier`
+ `--preferred-maintenance-window`

**Example**  
以下代码示例将维护时段设置为周二的凌晨 4:00–4:30 (UTC)。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster \
--db-cluster-identifier my-cluster \
--preferred-maintenance-window Tue:04:00-Tue:04:30
```
对于：Windows  

```
aws rds modify-db-cluster ^
--db-cluster-identifier my-cluster ^
--preferred-maintenance-window Tue:04:00-Tue:04:30
```

#### RDS API
<a name="AdjustingTheMaintenanceWindow.Aurora.API"></a>

要调整首选数据库集群维护时段，请使用带以下参数的 Amazon RDS [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) API 操作：
+ `DBClusterIdentifier`
+ `PreferredMaintenanceWindow`

## 对数据库集群应用更新
<a name="USER_UpgradeDBInstance.OSUpgrades"></a>

通过 Amazon RDS，您可以选择何时应用维护操作。您可通过使用 AWS 管理控制台、AWS CLI 或 RDS API 来决定 Amazon RDS 何时应用更新。

### 控制台
<a name="USER_UpgradeDBInstance.OSUpgrades.Console"></a>

**管理数据库集群的更新**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**数据库**。

1. 选择具有必需更新的数据库集群。

1. 对于**操作**，请选择下列选项之一：
   + **立即修补**
   + **在下一个时段修补**
**注意**  
如果您选择**在下一个时段修补**，并且以后希望延迟更新，可以选择**推迟升级**。如果维护操作已经启动，则无法推迟该操作。  
要取消维护操作，请修改数据库实例并禁用 **Auto minor version upgrade (自动次要版本升级)**。

### AWS CLI
<a name="USER_UpgradeDBInstance.OSUpgrades.CLI"></a>

要将待处理的更新应用于数据库集群，请使用 [apply-pending-maintenance-action](https://docs.aws.amazon.com/cli/latest/reference/rds/apply-pending-maintenance-action.html) AWS CLI 命令。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db \
    --apply-action system-update \
    --opt-in-type immediate
```
对于：Windows  

```
aws rds apply-pending-maintenance-action ^
    --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db ^
    --apply-action system-update ^
    --opt-in-type immediate
```

**注意**  
要推迟维护操作，请为 `undo-opt-in` 指定 `--opt-in-type`。如果维护操作已启动，则无法为 `undo-opt-in` 指定 `--opt-in-type`。  
要取消维护操作，请运行 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令并指定 `--no-auto-minor-version-upgrade`。

要返回具有至少一个待处理更新的资源的列表，请使用 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) AWS CLI 命令。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds describe-pending-maintenance-actions \
    --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db
```
对于：Windows  

```
aws rds describe-pending-maintenance-actions ^
    --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db
```

您还可以通过指定 `describe-pending-maintenance-actions` AWS CLI 命令的 `--filters` 参数，来返回数据库集群的资源列表。`--filters` 命令的格式是 `Name=filter-name,Value=resource-id,...`。

下面是筛选条件的 `Name` 参数中接受的值：
+ `db-instance-id` – 接受数据库实例标识符或 Amazon Resource Names (ARN) 的列表。返回的列表只包括这些标识符或 ARN 标识的数据库实例的待处理维护操作。
+ `db-cluster-id` – 接受 Amazon Aurora 的数据库集群标识符或 ARN 的列表。返回的列表只包括这些标识符或 ARN 标识的数据库集群的待处理维护操作。

例如，以下示例返回 `sample-cluster1` 和 `sample-cluster2` 数据库集群的待处理维护操作。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds describe-pending-maintenance-actions \
	--filters Name=db-cluster-id,Values=sample-cluster1,sample-cluster2
```
对于：Windows  

```
aws rds describe-pending-maintenance-actions ^
	--filters Name=db-cluster-id,Values=sample-cluster1,sample-cluster2
```

### RDS API
<a name="USER_UpgradeDBInstance.OSUpgrades.API"></a>

要将更新应用于数据库集群，请调用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ApplyPendingMaintenanceAction.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ApplyPendingMaintenanceAction.html) 操作。

要返回具有至少一个待处理更新的资源的列表，请调用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribePendingMaintenanceActions.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribePendingMaintenanceActions.html) 操作。

## Aurora 数据库集群的自动次要版本升级
<a name="Aurora.Maintenance.AMVU"></a>

**自动次要版本升级**设置指定 Aurora 是否自动将升级应用于您的数据库集群。这些升级包括新的次要版本，而次要版本包括其他功能以及补丁（其中包含错误修复）。

自动次要版本升级会定期将数据库更新到新近的数据库引擎版本。但是，升级可能并不始终包括最新的数据库引擎版本。如果您需要在特定时间将数据库保持在特定版本上，我们建议您根据所需的时间表，手动升级到您需要的数据库版本。在出现严重安全问题的情况下或当版本达到其终止支持日期时，Amazon Aurora 可能会应用次要版本升级，即使您尚未启用**自动次要版本升级**选项也是如此。有关更多信息，请参阅特定数据库引擎的升级文档。

请参阅[升级 Aurora MySQL 数据库集群的次要版本或补丁程序级别](AuroraMySQL.Updates.Patching.md)和[执行次要版本升级](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md)。

**注意**  
Aurora Global Database 不支持次要版本自动升级。

默认情况下，此设置处于启用状态。对于每个新的数据库集群，为此设置选择适当的值。此值基于其重要性、预期生命周期以及每次升级后执行的验证测试量。

有关打开或关闭**自动次要版本升级**设置的说明，请参阅以下内容：
+ [对 Aurora 数据库集群启用自动次要版本升级](#aurora-amvu-cluster)
+ [为 Aurora 数据库集群中的单个数据库实例启用自动次要版本升级](#aurora-amvu-instance)

**重要**  
我们强烈建议，对于新的和现有的数据库集群，将此设置应用于数据库集群，而不是单独应用于集群中的数据库实例。如果对集群中的任何数据库实例关闭了此设置，则不会自动升级数据库集群。

下表显示了在集群和实例级别应用**自动次要版本升级**设置时的工作原理。


| Action | 集群设置 | 实例设置 | 是否自动升级集群？ | 
| --- | --- | --- | --- | 
| 您在数据库集群上将其设置为 True。 | True | 对于所有新实例和现有实例，均为 True | 是 | 
| 您在数据库集群上将其设置为 False。 | False | 对于所有新实例和现有实例，均为 False | 否 | 
|  之前在数据库集群上将其设置为 True。 您至少在一个数据库实例上将其设置为 False。  | 更改为 False | 对于一个或多个实例为 False | 否 | 
|  之前在数据库集群上将其设置为 False。 您至少对于一个数据库实例（但并非所有实例）将其设置为 True。  | False | 对于一个或多个实例（但并非所有实例）为 True | 否 | 
|  之前在数据库集群上将其设置为 False。 您在所有数据库实例上将其设置为 True。  | 更改为 True | 对于所有实例为 True | 是 | 

事先通过 Amazon RDS 数据库集群事件（类别为 `maintenance`，ID 为 `RDS-EVENT-0156`）与自动次要版本升级进行通信。有关更多信息，请参阅 [Aurora 的Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。

自动升级在维护时段发生。如果数据库集群中的各个数据库实例的维护时段与集群维护时段不同，则集群维护时段优先。

有关 Aurora PostgreSQL 引擎更新的更多信息，请参阅[Amazon Aurora PostgreSQL 的数据库引擎更新](AuroraPostgreSQL.Updates.md)。

有关 Aurora MySQL 的**自动次要版本升级**设置的更多信息，请参阅 [启用 Aurora MySQL 次要版本之间的自动升级](AuroraMySQL.Updates.AMVU.md)。有关 Aurora MySQL 的引擎更新的一般信息，请参阅 [Amazon Aurora MySQL 的数据库引擎更新Amazon Aurora MySQL 的长期支持（LTS）版本和测试版](AuroraMySQL.Updates.md)。

**Topics**

### 对 Aurora 数据库集群启用自动次要版本升级
<a name="aurora-amvu-cluster"></a>

按照[使用控制台、CLI 和 API 修改数据库集群](Aurora.Modifying.md#Aurora.Modifying.Cluster)中的常规程序进行操作。

**控制台**  
在**修改数据库集群**页面的**维护**部分中，选中**允许自动次要版本升级**复选框。

**AWS CLI**  
调用 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI 命令。为 `--db-cluster-identifier` 选项指定数据库集群的名称，并为 `--auto-minor-version-upgrade` 选项指定 `true`。（可选）指定 `--apply-immediately` 选项，立即为数据库集群启用此设置。

**RDS API**  
调用 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) API 操作，并为 `DBClusterIdentifier` 参数指定数据库集群的名称，为 `AutoMinorVersionUpgrade` 参数指定 `true`。（可选）将 `ApplyImmediately` 参数设置为 `true`，立即为数据库集群启用此设置。

### 为 Aurora 数据库集群中的单个数据库实例启用自动次要版本升级
<a name="aurora-amvu-instance"></a>

按照[修改数据库集群中的数据库实例](Aurora.Modifying.md#Aurora.Modifying.Instance)中的常规程序进行操作。

**控制台**  
在**修改数据库实例**页面的**维护**部分中，选中**允许自动次要版本升级**复选框。

**AWS CLI**  
调用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令。为 `--db-instance-identifier` 选项指定数据库实例的名称，为 `true` 选项指定 `--auto-minor-version-upgrade`。（可选）指定 `--apply-immediately` 选项，立即为数据库实例启用此设置。为集群中的每个数据库实例运行单独的 `modify-db-instance` 命令。

**RDS API**  
调用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 操作，并为 `DBInstanceIdentifier` 参数指定数据库集群的名称，为 `AutoMinorVersionUpgrade` 参数指定 `true`。（可选）将 `ApplyImmediately` 参数设置为 `true`，立即为数据库实例启用此设置。为集群中的每个数据库实例调用单独的 `ModifyDBInstance` 操作。

您可以使用如下 CLI 命令来检查 Aurora MySQL 集群中所有数据库实例的 `AutoMinorVersionUpgrade` 设置的状态。

```
aws rds describe-db-instances \
  --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'
```

该命令产生的输出类似于以下内容：

```
[
  {
      "DBInstanceIdentifier": "db-writer-instance",
      "DBClusterIdentifier": "my-db-cluster-57",
      "AutoMinorVersionUpgrade": true
  },
  {
      "DBInstanceIdentifier": "db-reader-instance1",
      "DBClusterIdentifier": "my-db-cluster-57",
      "AutoMinorVersionUpgrade": false
  },
  {
      "DBInstanceIdentifier": "db-writer-instance2",
      "DBClusterIdentifier": "my-db-cluster-80",
      "AutoMinorVersionUpgrade": true
  },
... output omitted ...
```

在此示例中，数据库集群 `my-db-cluster-57` 的**允许自动次要版本升级**处于关闭状态，因为对于集群中的其中一个数据库实例关闭了此功能。

## Aurora 数据库集群的操作系统更新
<a name="Aurora_OS_updates"></a>

Aurora MySQL 和 Aurora PostgreSQL 数据库集群中的数据库实例偶尔需要操作系统更新。Amazon RDS 将操作系统升级到更新的版本，以提高数据库性能和客户的整体安保状况。通常而言，更新大约需要花费 10 分钟。操作系统更新不会更改数据库实例的数据库引擎版本或数据库实例类。

有两种操作系统更新，可通过对于待维护操作的描述来加以区分：
+ **操作系统发行版升级** – 用于迁移到支持的最新 Amazon Linux 主要版本。其描述是 `New Operating System upgrade is available`。
+ **操作系统补丁** - 用于应用各种安全修复，有时用于提高数据库性能。其描述是 `New Operating System patch is available`。

操作系统更新可能是可选的，也可能是强制性的：
+ 可以随时应用**可选更新**。虽然这些更新是可选的，但建议您定期应用它们，以使 RDS 实例集保持最新状态。RDS *不*自动应用这些更新。

  要在新的可选操作系统补丁变为可用时收到通知，您可以订阅安全修补事件类别中的 [RDS-EVENT-0230](USER_Events.Messages.md#RDS-EVENT-0230)。有关订阅 RDS 事件的信息，请参阅 [订阅 Amazon RDS 事件通知](USER_Events.Subscribing.md)。
**注意**  
`RDS-EVENT-0230` 不适用于操作系统发行版升级。
+ **强制更新**是必需的，我们会在强制更新之前发送通知。通知可能包含截止日期。请制定计划以安排在此截止日期之前更新。在指定的截止日期之后，Amazon RDS 会在指定的维护时段之一内，自动将数据库实例的操作系统升级到最新版本。

  操作系统发行版升级是强制性的。

**注意**  
为了履行各种合规性义务，可能需要及时了解所有可选和强制性更新。建议您在维护时段内定期应用 RDS 提供的所有更新。

对于 Aurora 数据库集群，您可以使用**集群级**维护选项来执行操作系统（OS）更新。要查找用于执行集群级更新的选项，请在控制台中选择数据库集群的名称，然后查看**维护和备份**选项卡，或者使用 AWS CLI 中的 `os-upgrade` 命令。此方法采用滚动升级，每次仅自动对少量读取器数据库实例应用更新，从而保持读取可用性。为了避免多次失效转移并减少不必要的停机时间，Aurora 会最后升级写入器数据库实例。

集群级操作系统更新将在您为集群指定的维护时段内进行。这样可以确保协调整个集群的更新。

Aurora 还保留了**实例级**维护选项以实现向后兼容。但是，我们建议您改用集群级更新。如果您必须使用实例级更新，请先更新数据库集群中的读取器数据库实例，然后再更新写入器数据库实例。如果您同时更新读取器实例和写入器实例，则更有可能会增加与失效转移相关的停机时间。要查找用于执行实例级更新的选项，请在控制台中选择数据库实例的名称，然后查看**维护和备份**选项卡，或者使用 AWS CLI 中的 `system-update` 命令。

实例级操作系统更新在您为每个相应实例指定的维护时段内进行。例如，如果一个集群和两个读取器实例的维护时段时间不同，则在集群级进行的操作系统更新将与集群维护时段保持一致。



您可以使用 AWS 管理控制台或 AWS CLI 来获取有关操作系统升级类型的信息。

### 控制台
<a name="Aurora_OS_updates.pending-maintenance.CON"></a>

**使用 AWS 管理控制台获取更新信息**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases**（数据库），然后选择数据库实例。

1. 选择**维护和备份**。

1. 在**等待维护**部分，找到操作系统更新，检查**描述**值。

下图显示包含一个写入器数据库实例的数据库集群，写入器实例有一个操作系统补丁可用。

![\[集群级操作系统补丁。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/os-upgrade-cluster-minor.png)


![\[实例级操作系统补丁。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/os-upgrade-writer-minor.png)


下图显示包含一个写入器数据库实例和一个读取器数据库实例的数据库集群。写入器实例有一个强制操作系统升级可用。读取器实例有一个操作系统补丁可用。

![\[集群级操作系统发行版升级。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/os-upgrade-cluster-major.png)


![\[写入器实例操作系统发行版升级。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/os-upgrade-writer-major.png)


![\[读取器实例操作系统补丁。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/os-upgrade-reader-minor.png)


### AWS CLI
<a name="Aurora_OS_updates.pending-maintenance.CLI"></a>

要从 AWS CLI 中获取更新信息，请使用 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) 命令。

```
aws rds describe-pending-maintenance-actions
```

以下输出显示数据库集群和数据库实例的操作系统发行版升级。

```
{
  "PendingMaintenanceActions": [
    {
      "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:cluster:t3",
      "PendingMaintenanceActionDetails": [
        {
          "Action": "os-upgrade",
          "Description": "New Operating System upgrade is available"
        }
      ]
    },
    {
      "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:t3-instance1",
      "PendingMaintenanceActionDetails": [
        {
          "Action": "system-update",
          "Description": "New Operating System upgrade is available"
        }
      ]
    },
  ]
}
```

以下输出显示数据库实例的操作系统补丁。

```
{
  "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:mydb2",
  "PendingMaintenanceActionDetails": [
    {
      "Action": "system-update",
      "Description": "New Operating System patch is available"
    }
  ]
}
```

### 操作系统更新的可用性
<a name="Aurora_OS_updates.availability"></a>

操作系统更新特定于数据库引擎版本和数据库实例类。因此，数据库实例在不同的时间接收或要求更新。当根据数据库实例的引擎版本和实例类，数据库实例有可用的操作系统更新时，更新将显示在控制台中。也可以通过运行 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) AWS CLI 命令或通过调用 [DescribePendingMaintenanceActions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribePendingMaintenanceActions.html) RDS API 操作来查看更新。如果您的实例有可用更新，则可以按照[对数据库集群应用更新](#USER_UpgradeDBInstance.OSUpgrades)中的说明更新操作系统。

# 使用 AWS Organizations 升级推出策略自动升级次要版本
<a name="Aurora.Maintenance.AMVU.UpgradeRollout"></a>

Aurora 支持 AWS Organizations 升级推出策略，以管理跨多个数据库资源和 AWS 账户的自动次要版本升级。该策略可通过以下方式协助您为集群实施受控升级策略：

**升级推出策略的工作原理**

当新的次要引擎版本变为符合自动升级资格时，策略会根据定义的顺序控制升级序列：
+ 标记为 [首先] 的资源（通常是开发环境）将变为有资格在其维护时段内进行升级。
+ 在指定的烘焙时间之后，标记为 [其次] 的资源将变为符合资格。
+ 在另一个指定的烘焙时间之后，标记为 [最后] 的资源（通常是生产环境）将变为符合资格。
+ 通过 AWS Health 通知监控升级进度。

您可以通过以下方式定义升级顺序：
+ 账户级别策略：应用于指定账户中所有符合资格的资源。
+ 资源标签：根据标签应用于特定的资源。

**注意**  
未配置升级策略或从策略中排除的资源将自动收到 [其次] 升级顺序。

**先决条件**
+ 您的 AWS 账户必须是 Organizations 中已启用升级推出策略的组织的一部分
+ 为集群启用自动次要版本升级
+ 升级推出策略并不严格要求使用标签。如果要为不同的环境（例如，开发、测试、QA、生产）定义特定的升级顺序，则可以使用标签。如果您未在策略中包含标签设置，则该策略下的所有资源都将遵循默认的升级顺序。对于 Aurora 资源，仅集群级别的标签用于升级推出策略，即使您在实例级别定义了标签也不例外。

**为资源添加标签**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要添加标签的集群。

1. 选择**操作**，然后选择**管理标签**。

1. 选择 **Add tag（添加标签）**。

1. 输入您的标签键（例如“环境”）和值（例如“开发”）

1. 选择**添加标签**，然后选择**保存**。

还可以使用 AWS CLI 添加标签。

```
aws rds add-tags-to-resource \
    --resource-name arn:aws:rds:region:account-number:cluster:cluster-name \
    --tags Key=Environment,Value=Development
```

## 升级顺序和阶段
<a name="Aurora.Maintenance.AMVU.UpgradeRollout.OrderPhases"></a>

升级推出策略支持三个升级顺序：
+ [首先]：通常用于开发或测试环境
+ [其次]：通常用于 QA 环境。如果未专门配置策略，则为资源的默认顺序
+ [最后]：通常保留用于生产环境

当新的次要引擎版本变为符合自动升级资格时：
+ 具有升级顺序 [首先] 的资源将变为有资格在其配置的维护时段内进行升级。
+ 在指定的烘焙时间之后，具有升级顺序 [其次] 的资源将变为有资格在其维护时段内进行升级。
+ 在另一个指定的烘焙时间之后，具有升级顺序 [最后] 的资源将变为有资格在其维护时段内进行升级。
+ 自动次要版本升级活动将在升级顺序为 [首先]、[其次] 和 [最后] 的所有符合资格的资源升级完成后，或者在活动到达预定结束日期（以先到者为准）时关闭。

**注意**  
所有自动次要版本升级都是在每个集群的已配置维护时段内执行的，以最大限度地减少对应用程序的潜在影响。

## 可观测性
<a name="Aurora.Maintenance.AMVU.UpgradeRollout.Observability"></a>

### AWS Health 与监控
<a name="Aurora.Maintenance.AMVU.UpgradeRollout.Observability.Health"></a>

在以下情况下，您会收到 AWS 运行状况通知：
+ 在自动次要版本升级活动开始之前
+ 在每个阶段转换之间，有助于跟踪和监控升级进度
+ 进度更新，可在 AWS Health 控制台中显示实例集中升级的资源数量

Amazon RDS 事件通知：
+ 为自动次要版本升级启用的资源通知，包括：
  + 当资源根据其升级顺序（[首先]、[其次] 或 [最后]）变为符合升级资格时
  + 维护时段内的计划升级时间表
  + 单个数据库升级的开始和完成状态
+ 通过 Amazon EventBridge 订阅这些事件以进行自动监控

### 注意事项
<a name="Aurora.Maintenance.AMVU.UpgradeRollout.Observability.Considerations"></a>

请记住以下注意事项：
+ 该策略适用于所有将来的自动次要版本升级活动，包括在处于活跃状态的活动期间进行的策略更改。
+ 如果您加入正在进行的升级活动，则您的资源将遵循当前正在运行的升级顺序，而无需等待所配置的策略。
+ 未配置升级策略或从策略中排除的资源将自动收到 [其次] 升级顺序。
+ 该策略在各升级阶段之间提供了验证期，之后才会进入下一阶段。
+ 在应用新的升级顺序之前，对策略或资源标签的更改需要一段时间才能传播。
+ 该策略仅适用于启用了自动次要版本升级的 Aurora 资源。
+ 如果您在环境中检测到问题，则可以关闭后续环境的自动次要版本升级，或者在升级进入下一个升级顺序之前使用验证期来解决问题。

有关为 RDS 资源添加标签的更多信息，请参阅[为 Amazon Aurora 和Amazon RDS 资源添加标签](USER_Tagging.md)。有关设置和使用升级推出策略的详细说明，请参阅《AWS Organizations 用户指南》**中的 [AWS Organizations 入门](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started.html)。