本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Neptune 数据库集群的容错能力
Neptune 数据库集群设计为具有容错能力。集群卷跨越单个 AWS 区域中的多个可用区,每个可用区都包含集群卷数据的副本。该功能意味着您的数据库集群可容忍可用区的故障,而不发生任何数据丢失,只是会短暂中断服务。
如果数据库集群中的主实例失败,Neptune 将通过两种方式之一来自动失效转移到新的主实例:
将现有的 Neptune 副本提升为新的主实例
创建新的主实例
如果数据库集群具有一个或多个 Neptune 副本,则 Neptune 副本将在故障事件期间提升为主实例。故障事件将导致短暂中断,其间的读取和写入操作将失败并引发异常。不过,服务通常会在 120 秒内 (经常在 60 秒内) 还原。要提高数据库集群的可用性,建议您在两个或更多的不同可用区中创建至少一个或多个 Neptune 副本。
您可以通过为每个副本分配一个优先级来自定义发生故障后将 Neptune 副本提升为主实例的顺序。优先级介于 0(最高优先级)和 15(最低优先级)之间。如果主实例失败,则 Neptune 会将具有最高优先级的 Neptune 副本提升为新的主实例。您可以随时修改 Neptune 副本的优先级。修改优先级不会触发故障转移。
您可以使用 AWS CLI 来设置数据库实例的故障转移优先级,如下所示:
aws neptune modify-db-instance --db-instance-identifier
(the instance ID)
--promotion-tier(the failover priority value)
多个 Neptune 副本可同属一个优先级,这会产生提升层问题。如果两个或更多 Neptune 副本同属一个优先级,则 Neptune 将提升最大的副本。如果两个或多个 Neptune 副本的优先级和大小均相同,则 Neptune 将提升同一提升层中的任意副本。
如果数据库集群不包含任何 Neptune 副本,则将在故障事件期间重新创建主实例。故障事件将导致中断,其间的读取和写入操作将失败并引发异常。创建新的主实例时将还原服务,该操作所需的时间通常在 10 分钟内。将 Neptune 副本提升为主实例要比创建新的主实例快得多。