Azure Cosmos DB for MongoDB vCore 中的高可用性
适用对象: MongoDB vCore
区域内高可用性 (HA) 通过维护群集中每个分片的备用副本,从而避免数据库停机。 如果某个分片因任何原因而变得无响应,Azure Cosmos DB for MongoDB vCore 会将传入连接从失败的分片切换到其备用分片。 当发生故障转移时,升级的分片始终通过同步复制拥有新的数据。
可将群集中的所有主分片都预配到一个可用性区域 (AZ) 中,以便改进分片之间的延迟。 将备用分片预配到另一个可用性区域。
即使未启用 HA,每个分片也有其自己的本地冗余存储 (LRS),其中 3 个同步副本由 Azure 存储服务维护。 这三个副本都位于群集的 Azure 区域中。 如果发生单个副本故障,Azure 存储服务将检测故障,并以透明方式重新创建失败的副本。 若要了解 LRS 存储持续性,请查看此页上的指标。
启用 HA 后,Azure Cosmos DB for MongoDB vCore 将为群集中的每个主分片运行一个备用分片。 每个主分片和备用分片都具有相同的计算和存储配置。 主分片及其备用分片都使用同步复制。 使用这种复制,群集中的主分片和备用分片上始终拥有相同的数据。 简单地说,我们的服务会检测主分片上的故障,并且可故障转移到备用分片而无数据丢失。
无论故障转移如何,群集连接字符串始终保持不变。 这样,服务就可以将处理请求的物理分片中的更改从应用程序中抽象出来。
在群集上启用区域内高可用性时,每个群集分片的可用性都在 99.99% 服务级别协议 (SLA) 的覆盖范围内。
可以在创建群集时启用高可用性。 也可以随时在现有 Azure Cosmos DB for MongoDB vCore 群集上启用和禁用高可用性。 在 Azure Cosmos DB for MongoDB vCore 群集上启用或禁用高可用性时,不会发生数据库停机。
故障转移期间会发生的情况
每个分片故障转移由三个阶段组成:不可用检测、切换到备用分片,以及重新创建备用分片。 该服务通过定期运行状况检查对群集中每个主分片和备用分片的可用性执行持续监视。 当运行状况检查可靠地指示分片变得无响应并且需要声明失败时,将启动到备用分片的实际故障转移(切换)。
在切换阶段,数据库读取和写入将被重定向到备用分片。 每个主分片和备用分片之间的同步复制可确保备用分片始终与其主分片具有相同的数据集。 这使得所有故障转移都能以零数据丢失的方式执行。 切换到备用分片无需停机进行读取。 写入操作可能需要在切换阶段进行内部服务重试。 这些重试可能会被视为应用程序端的写入速度缓慢。
分片故障转移完成后,群集即可完全正常运行。 返回到原始高可用性配置的最后一步是重新创建备用分片。 重新创建备用分片这一步不会对主分片造成停机或性能影响。