了解 Amazon DocumentDB集群容错能力

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

如果集群中的主实例失败,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故障转移.

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

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