

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 维护 Amazon DocumentDB
<a name="db-instance-maintain"></a>

Amazon DocumentDB 会定期对 Amazon DocumentDB 资源执行维护。维护最常涉及对数据库引擎（集群维护）或实例的底层操作系统 (OS)（实例维护）的更新。数据库引擎更新是必需的补丁，包括安全补丁、错误修复以及数据库引擎增强功能。虽然大多数操作系统补丁都是可选的，但如果在一段时间内未应用这些补丁，就可能变成必需补丁并自动应用，以保持您的安全状况。因此，我们建议在操作系统更新可用时立即将其应用于 Amazon DocumentDB 实例。

数据库引擎补丁需要使 Amazon DocumentDB 集群脱机一小段时间。一旦这些补丁可用后，系统会自动安排在即将到来的 Amazon DocumentDB 集群计划维护窗口内应用补丁。

集群和实例维护都有各自的维护时段。您选择不立即应用的集群和实例修改会在维护窗口内应用。默认情况下，在创建集群时，Amazon DocumentDB 会为集群和每个单独的实例分配维护时段。您可以在创建集群或实例时选择维护时段。也可以随时修改维护时段以适应您的业务计划或实践。通常，建议选择尽量减少对应用程序的影响的维护时段（例如，晚上或周末）。

**Topics**
+ [Amazon DocumentDB 引擎补丁通知](#patch-notifications)
+ [查看待处理的 Amazon DocumentDB 维护操作](#view-pending-maintenance)
+ [Amazon DocumentDB 引擎更新](#db-instance-updates-apply)
+ [用户启动的更新](#user-initiated-updates)
+ [管理您的 Amazon DocumentDB 维护窗口](#maintenance-window)
+ [Amazon DocumentDB 操作系统更新](#os-system-updates)

## Amazon DocumentDB 引擎补丁通知
<a name="patch-notifications"></a>

您将通过 AWS 控制台 Health Dashboard (AHD) 中的运行状况事件和电子邮件收到所需数据库引擎补丁的维护通知。当 Amazon DocumentDB 引擎维护补丁在特定 AWS 地区可用时，该地区所有受影响的亚马逊 DocumentDB 用户账户都将收到受该补丁影响的每个亚马逊 DocumentDB 版本的 AHD 和电子邮件通知。您可以在 AWS 控制台中 AHD 的 “**计划更改**” 部分下查看这些通知。该通知将包含有关补丁发布时间、自动应用计划、受影响集群列表和发布说明的详细信息。此通知还将通过电子邮件发送到 AWS 账户的 root 用户电子邮件地址。

![\[Amazon DocumentDB 控制台显示引擎补丁升级的“计划更改”选项卡。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/scheduled-changes.png)


收到该通知后，可以选择在计划的自动应用日期之前，自行将这些引擎补丁应用到 Amazon DocumentDB 集群。或者，您可以等待在即将到来的维护窗口内自动应用引擎补丁（默认选项）。

**注意**  
AHD 中通知的**状态**将设置为 “进行中”，直到发布具有新引擎补丁版本的 Amazon DocumentDB 新引擎补丁。  
将引擎补丁应用到 Amazon DocumentDB 集群后，集群的引擎补丁版本将会更新，以反映通知中的版本。可以运行 `db.runCommand({getEngineVersion: 1})` 命令来验证此更新。

AWS Health 还与 Amazon 集成 EventBridge ，后者使用事件构建可扩展的事件驱动应用程序，并与 20 多个目标集成，包括亚马逊简单队列服务 (SQS) Simple Queue Service AWS Lambda等。 EventBridge 在引擎补丁可用之前，您可以使用`AWS_DOCDB_DB_PATCH_UPGRADE_MAINTENANCE_SCHEDULED`事件代码来设置 Amazon。您可以设置 EventBridge 为响应事件并自动执行操作，例如捕获事件信息、启动其他事件、通过其他渠道（例如向推送通知）发送通知 AWS Console Mobile Application，以及在 Amazon DocumentDB 引擎补丁可用时采取纠正或其他措施。

在 Amazon DocumentDB 取消引擎补丁的罕见情况下，您将收到 AHD 通知以及告知补丁取消的电子邮件。因此，您可以使用`AWS_DOCDB_DB_PATCH_UPGRADE_MAINTENANCE_CANCELLED`事件代码设置 Amazon EventBridge 以响应此事件。查看*亚马逊 EventBridge 用户指南*，详细了解如何使用[亚马逊 EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)。

## 查看待处理的 Amazon DocumentDB 维护操作
<a name="view-pending-maintenance"></a>

您可以使用 AWS 管理控制台 或查看您的集群是否有维护更新可用 AWS CLI。

如果有可用更新，您可以执行以下操作之一：
+ 推迟目前计划在下一个维护窗口内执行的维护操作（仅适用于操作系统补丁）。
+ 立即应用维护操作。
+ 计划下一个维护时段内要开始的维护操作。

**注意**  
如果不采取任何行动，则必需的维护操作（例如引擎补丁）将在即将到来的计划维护窗口中自动应用。

维护时段确定待处理的操作何时开始，但不限制这些操作的总执行时间。

------
#### [ Using the AWS 管理控制台 ]

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 在导航窗格中，选择**集群**。

1. 如果有更新可用，则在 Amazon DocumentDB 控制台上集群的**维护**列中以**可用**、**必需**或**下一个时段**字样指示，如下所示：  
![\[显示集群维护列的 Amazon DocumentDB 控制台。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/db-cluster-maintenance-updates-status.png)

1. 要采取操作，请选择集群以显示其详细信息，然后选择**维护和备份**。将显示**待处理维护**项目。  
![\[显示集群维护窗口的 Amazon DocumentDB 控制台。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/cluster-maint-3.png)

------
#### [ Using the AWS CLI ]

使用以下 AWS CLI 操作来确定哪些维护操作处于待处理状态。此处的输出显示没有待处理的维护操作。

```
aws docdb describe-pending-maintenance-actions
```

此操作的输出将类似于下文（JSON 格式）。

```
{
    "PendingMaintenanceActions": []
}
```

------

## Amazon DocumentDB 引擎更新
<a name="db-instance-updates-apply"></a>

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

使用此主题中的过程对集群立即执行升级或者计划升级。

------
#### [ Using the AWS 管理控制台 ]

您可以使用控制台管理 Amazon DocumentDB 集群。

**管理集群的更新**

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 在导航窗格中，选择**集群**。

1. 在集群列表中，选择要应用维护操作的集群名称旁边的按钮。

1. 在 **Actions (操作)** 菜单中，选择以下选项之一：
   + **Upgrade now (立即升级)**，以立即执行挂起的维护任务。
   + **Upgrade at next window (在下一个时段升级)**，以在集群的下一个维护时段中执行挂起的维护任务。

   或者，您可以在集群**维护和备份**选项卡的“待处理维护”部分中单击**立即应用**或**在下一个维护时段应用**（请参阅上一节的**使用 AWS 管理控制台**）。
**注意**  
如果没有挂起的维护任务，上面的所有选项均会处于非活动状态。

------
#### [ Using the AWS CLI ]

要对群集应用待处理的更新，请使用`apply-pending-maintenance-action` AWS CLI 操作。

**参数**
+ **--resource-identifier**：待处理的维护操作应用于的资源的 Amazon DocumentDB Amazon 资源名称 (ARN)。
+ **--apply-action**：应用于此资源的待处理的维护操作。

  有效值：`system-update` 和 `db-upgrade`。
+ **--opt-in-type**：用于指定加入请求类型或撤消加入请求的值。不能撤消 `immediate` 类型的加入请求。

  有效值：
  + `immediate`：立即应用维护操作。
  + `next-maintenance`：在资源的下一个维护时段内应用维护操作。
  + `undo-opt-in`：取消任何现有的 `next-maintenance` 加入请求。

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

```
aws docdb apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:docdb \
    --apply-action system-update \
    --opt-in-type immediate
```
对于 Windows：  

```
aws docdb apply-pending-maintenance-action ^
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:docdb ^
    --apply-action system-update ^
    --opt-in-type immediate
```

要返回至少有一个待更新的资源列表，请使用`describe-pending-maintenance-actions` AWS CLI 命令。

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

```
aws docdb describe-pending-maintenance-actions \
    --resource-identifier arn:aws:rds:us-east-1:001234567890:db:docdb
```
对于 Windows：  

```
aws docdb describe-pending-maintenance-actions ^
    --resource-identifier arn:aws:rds:us-east-1:001234567890:db:docdb
```
此操作的输出将类似于下文（JSON 格式）。  

```
{
    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:us-east-1:001234567890:cluster:sample-cluster",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "system-update",
                    "CurrentApplyDate": "2019-01-11T03:01:00Z",
                    "Description": "db-version-upgrade",
                    "ForcedApplyDate": "2019-01-18T03:01:00Z",
                    "AutoAppliedAfterDate": "2019-01-11T03:01:00Z"
                }
            ]
        }
    ]
}
```

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

`db-cluster-id` 是筛选条件的 `Name` 参数可接受的值。此值接受集群标识符列表或 ARNs。返回的列表仅包括由这些标识符或标识的集群的待处理维护操作 ARNs。

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

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

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

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

------

### 应用日期
<a name="db-instance-updates-apply-date"></a>

每个维护操作都有一个相应的应用日期，您可以在描述待处理的维护操作时找到它们。当您从中读取待处理维护操作的输出时 AWS CLI，会列出三个日期。当维护为可选维护时，这些日期值为 `null`。在调度或应用相应的维护操作后，就会填充值。
+ **CurrentApplyDate**：将立即应用或在下一个维护时段期间应用维护操作的日期。
+ **ForcedApplyDate**：自动应用维护的日期，与维护时段无关。
+ **AutoAppliedAfterDate**：将在该日期后的集群维护时段期间应用维护。

## 用户启动的更新
<a name="user-initiated-updates"></a>

作为 Amazon DocumentDB 用户，您可以启动对集群或实例的更新。例如，您可以将实例的类修改为具有更多或更少内存的类，也可以更改集群的参数组。Amazon DocumentDB 对这些更改的看法不同于 Amazon DocumentDB 启动的更新。有关修改集群或实例的更多信息，请参阅以下内容：
+ [修改 Amazon DocumentDB 集群](db-cluster-modify.md)
+ [修改 Amazon DocumentDB 实例](db-instance-modify.md)

要查看待处理的用户启动的修改的列表，请运行以下命令。

**Example**  
**查看实例的待处理的用户启动的更改**  
对于 Linux、macOS 或 Unix：  

```
aws docdb describe-db-instances \
    --query 'DBInstances[*].[DBClusterIdentifier,DBInstanceIdentifier,PendingModifiedValues]'
```
对于 Windows：  

```
aws docdb describe-db-instances ^
    --query 'DBInstances[*].[DBClusterIdentifier,DBInstanceIdentifier,PendingModifiedValues]'
```
此操作的输出将类似于下文（JSON 格式）。  
在本例中，`sample-cluster-instance` 有针对 `db.r5.xlarge` 实例类的待处理更改，`sample-cluster-instance-2` 没有待处理的更改。  

```
[
    [
        "sample-cluster",
        "sample-cluster-instance",
        {
            "DBInstanceClass": "db.r5.xlarge"
        }
    ],
    [
        "sample-cluster",
        "sample-cluster-instance-2",
        {}
    ]
]
```

## 管理您的 Amazon DocumentDB 维护窗口
<a name="maintenance-window"></a>

每个实例和集群都有一个每周维护时段，在此期间会应用任何待处理的更改。在请求或要求的情况下，您可以将维护时段视为控制修改及软件修补程序更新的时间的机会。如果在给定的周内安排了维护事件，则将在您确定的 30 分钟维护时段内启动维护。大部分维护事件也将在 30 分钟的维护时段内完成，但较大的维护事件可能需要 30 分钟以上的时间才能完成。

这个 30 分钟维护时段是随机从每个区域的 8 小时时间段中选择出来的。如果在创建实例或集群时未指定首选维护时段，则 Amazon DocumentDB 在该星期中随机选择的某一天中分配 30 分钟的维护时段。

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


| 区域名称 | Region | UTC 时间数据块 | 
| --- | --- | --- | 
| 美国东部（俄亥俄州） | us-east-2 | 03:00-11:00 | 
| 美国东部（弗吉尼亚州北部） | us-east-1 | 03:00-11:00 | 
| 美国西部（俄勒冈州） | us-west-2 | 06:00-14:00 | 
| 非洲（开普敦） | af-south-1 | 03:00–11:00 | 
| 亚太地区（香港） | ap-east-1 | 06:00-14:00 | 
| 亚太地区（海得拉巴） | ap-south-2 | 06:30–14:30 | 
| 亚太地区（马来西亚） | ap-southeast-5 | 13:00-21:00 | 
| 亚太地区（孟买） | ap-south-1 | 06:00-14:00 | 
| 亚太地区（大阪） | ap-northeast-3 | 12:00-20:00 | 
| 亚太地区（首尔） | ap-northeast-2 | 13:00-21:00 | 
| 亚太地区（新加坡） | ap-southeast-1 | 14:00-22:00 | 
| 亚太地区（悉尼） | ap-southeast-2 | 12:00-20:00 | 
| 亚太地区（雅加达） | ap-southeast-3 | 08:00-16:00 | 
| 亚太地区（墨尔本） | ap-southeast-4 | 11:00-19:00 | 
| 亚太地区（泰国） | ap-southeast-7 | 15:00-23:00 | 
| 亚太地区（东京） | ap-northeast-1 | 13:00-21:00 | 
| 加拿大（中部） | ca-central-1 | 03:00-11:00 | 
| 中国（北京） | cn-north-1 | 06:00-14:00 | 
| 中国（宁夏） | cn-northwest-1 | 06:00-14:00 | 
| 欧洲地区（法兰克福） | eu-central-1 | 21:00-05:00 | 
| 欧洲（苏黎世） | eu-central-2 | 02:00-10:00 | 
| 欧洲地区（爱尔兰） | eu-west-1 | 22:00-06:00 | 
| 欧洲（伦敦） | eu-west-2 | 22:00-06:00 | 
| 欧洲地区（米兰） | eu-south-1 | 02:00-10:00 | 
| 欧洲地区（巴黎） | eu-west-3 | 23:59-07:29 | 
| 欧洲（西班牙） | eu-south-2 | 02:00–10:00 | 
| 欧洲地区（斯德哥尔摩） | eu-north-1 | 04:00 — 12:00 | 
| 墨西哥（中部） | mx-central-1 | 03:00-11:00 | 
| 中东（阿联酋）： | me-central-1 | 05:00–13:00 | 
| 南美洲（圣保罗） | sa-east-1 | 00:00-08:00 | 
| 以色列（特拉维夫） | il-central-1 | 04:00-12:00 | 
| AWS GovCloud （美国东部） | us-gov-east-1 | 17:00-01:00 | 
| AWS GovCloud （美国西部） | us-gov-west-1 | 06:00-14:00 | 

### 更改您的 Amazon DocumentDB 维护窗口
<a name="maintenance-windows"></a>

维护时段应当选在使用量最小的时段上，因而可能必须不时予以更改。您的集群或实例只会在应用系统更改（例如，扩展存储操作或数据库实例类的更改）并且需要中断的期间出现不可用现象，且持续时间只是这些必要更改所需的最少时间。

对于数据库引擎升级，Amazon DocumentDB 会使用集群的首选维护时段，而不是单个实的维护时段。

**更改维护时段**
+ 对于集群：请参阅[修改 Amazon DocumentDB 集群](db-cluster-modify.md)。
+ 对于实例：请参阅[修改 Amazon DocumentDB 实例](db-instance-modify.md)。

## Amazon DocumentDB 操作系统更新
<a name="os-system-updates"></a>

Amazon DocumentDB 集群中的实例偶尔需要操作系统更新。Amazon DocumentDB 将操作系统升级到更新的版本，以提高数据库性能和客户的整体安保状况。操作系统更新不会更改实例的引擎版本或 Amazon DocumentDB 实例类。

我们建议您先更新集群中的读取器实例，然后更新写入器实例,以将集群的可用性最大化。我们不建议同时更新读取器实例和写入器实例，因为发生失效转移时可能会导致更长的停机。

Amazon DocumentDB 的大多数操作系统更新都是可选的，没有固定的应用日期。但是，如果在一段时间内未应用这些更新，它们最终可能会变成必需的，并在实例的维护窗口内自动应用。这是为了帮助维持数据库的安全状况。为避免任何意外停机，我们建议在操作系统更新可用时，尽快将其应用于 Amazon DocumentDB 实例，并根据业务需求在方便的时间设置实例维护窗口。

要在新的可选更新可用时收到通知，您可以订阅安全修补事件类别中的 RDS-EVENT-0230。有关订阅 Amazon DocumentDB 活动的信息，[请参阅订阅 Amazon DocumentDB 活动订阅](https://docs.aws.amazon.com/documentdb/latest/developerguide/event-subscriptions.subscribe.html)。

在集群或实例上执行维护时，将会出现这种情况；如果实例是主实例，将进行故障转移。为了提高可用性，我们建议您为 Amazon DocumentDB 集群使用多个实例。有关更多信息，请参阅 [Amazon DocumentDB 失效转移](failover.md)。

**注意**  
对于某些管理功能，Amazon DocumentDB 使用与 Amazon Relational Database Service (Amazon RDS) 共享的操作技术。

**重要**  
在操作系统升级期间，您的 Amazon DocumentDB 实例将处于离线状态。可以通过配备多实例集群来最大程度减小集群停机时间。如果未配备多实例集群，可以选择临时创建一个集群，您可以添加辅助实例来执行此维护，然后在维护完成后删除其他读取器实例（辅助实例将按常规费用收费）。

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

您可以使用 AWS 管理控制台 或 AWS CLI 来确定更新是否可用。

------
#### [ Using the AWS 管理控制台 ]

使用 AWS 管理控制台确定更新是否可用：

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 在导航窗格中，选择 **集群**，然后选择实例。

1. 选择 **维护**。

1. 在**待处理维护**部分中，找到操作系统更新。

![\[显示集群维护列的 Amazon DocumentDB 控制台。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/maintenance-available-1.png)


您可以选择操作系统更新，然后在 **待定维护**部分中点击 **立即申请**或 **在下一个维护时段应用**。如果维护值为**下一时段**，请通过选择**推迟升级**来推迟维护项目。如果维护操作已经启动，则无法推迟该操作。

或者，您可以从集群列表中选择实例，方法是单击导航窗格中的**集群**，然后从**操作**菜单中选择**立即应用**或**在下一个维护时段应用**。

------
#### [ Using the AWS CLI ]

要使用确定更新是否可用 AWS CLI，请调用以下`describe-pending-maintenance-actions`命令：

```
aws docdb describe-pending-maintenance-actions
```

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

------

操作系统更新特定于 Amazon DocumentDB 引擎版本和实例类。因此，Amazon DocumentDB 实例在不同的时间接收或要求更新。当根据实例的引擎版本和实例类，实例有可用的操作系统更新时，更新将显示在控制台中。也可以通过运行 AWS CLI `describe-pending-maintenance-actions`命令或调用 `DescribePendingMaintenanceActions` API 操作来查看。

如果没有运行 Amazon DocumentDB 引擎的最新集群补丁版本，您可能看不到列为可用维护的操作系统更新。要查看和管理操作系统更新，应先升级至最新引擎补丁版本。