

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

# 了解 Amazon DocumentDB 集群容错能力
<a name="db-cluster-fault-tolerance"></a>

Amazon DocumentDB 集群设计为具有容错能力。每个集群的卷跨越单个可用区 Amazon Web Services 区域，每个可用区都包含集群卷数据的副本。此功能意味着您的集群可容忍可用区故障，而不发生任何数据丢失，只是会短暂中断服务。

如果集群中的主实例失败，Amazon DocumentDB 可通过两种方式之一来自动将失效转移到新的主实例：
+ 通过将现有 Amazon DocumentDB 副本提升为根据每个副本的提升层设置所选择的新主实例，然后为以前的主实例创建一个替换项。失效转移到副本实例通常可在不到 30 秒的时间内完成。在此期间，读取和写入操作可能会出现短暂中断。要提高集群的可用性，建议您在两个或更多不同的可用区中创建至少一个或多个 Amazon DocumentDB 副本。
+ 创建新的主实例。只有当您的集群中没有副本实例并且可能需要几分钟才能完成时，才会发生这种情况。

如果集群具有一个或多个 Amazon DocumentDB 副本，则 Amazon DocumentDB 副本将在故障事件期间被提升为主实例。故障事件将导致短暂中断，其间的读取和写入操作将失败并引发异常。不过，服务通常会在 120 秒内 (经常在 60 秒内) 还原。要提高集群的可用性，建议您在两个或更多不同的可用区中创建至少一个或多个 Amazon DocumentDB 副本。

您可以通过为每个副本分配一个优先级来自定义发生故障后将 Amazon DocumentDB 副本提升为主实例的顺序。优先级介于 0（最高优先级）和 15（最低优先级）之间。如果主实例失败，则将具有最高优先级的 Amazon DocumentDB 副本提升为新的主实例。您可以随时修改 Amazon DocumentDB 副本的优先级。修改优先级不会触发失效转移。您可以对 `modify-db-instance` 操作使用 `--promotion-tier` 参数。有关自定义实例的故障转移优先级的更多信息，请参阅[Amazon DocumentDB 失效转移](failover.md)。

多个 Amazon DocumentDB 副本可同属一个优先级，这会产生提升层问题。如果两个或更多 Amazon DocumentDB 副本具有相同优先级，则最大的副本将被提升为主实例。如果两个或多个 Amazon DocumentDB 副本具有同一优先级和大小，那么将提升同一提升层中的任意副本。

如果集群不包含任何 Amazon DocumentDB 副本，则将在故障事件期间重新创建主实例。故障事件将导致中断，其间的读取和写入操作将失败并引发异常。创建新的主实例时将还原服务，该操作所需的时间通常在 10 分钟内。将 Amazon DocumentDB 副本提升为主实例要比创建新的主实例快得多。