你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB for MongoDB vCore 中的可用性(可靠性)和灾难恢复 (DR):幕后信息

适用对象: MongoDB vCore

本文深入探讨 Azure Cosmos DB for MongoDB vCore 的高可用性 (HA)跨区域灾难恢复 (DR) 的内部原理,并概述这些功能的设计和功能。 其中为有效的区域内和跨区域策略规划提供了见解,以确保实现可靠性和业务连续性。

Azure Cosmos DB for MongoDB vCore 群集剖析

Azure Cosmos DB for MongoDB vCore 群集由一个或多个物理分片(节点)组成。 每个物理分片包括一个专用计算节点和远程高级 SSD 存储。 物理分片的计算和存储资源专属于单一数据库,而不会在群集或数据库之间共享。

在包含多个分片的群集中,每个分片具有相同的计算和存储配置。 无论分片数量有多少,所有群集资源都托管在同一个 Azure 区域内。

Azure Cosmos DB for MongoDB vCore 使用本地冗余存储 (LRS),确保所有数据在群集的物理位置内同步复制三次。 Azure 存储以透明的方式管理这些副本,使用循环冗余校验 (CRC) 验证数据完整性,并使用冗余数据修复任何检测到的损坏情况。 此外,对网络流量应用校验和,以防止存储和检索过程中发生数据损坏。

Azure Cosmos DB for MongoDB vCore 群集组件的示意图。图 1.Azure Cosmos DB for MongoDB vCore 群集组件。

无论应用程序连接到单个分片还是多分片群集,它都会使用单个连接字符串和终结点。 这种抽象简化了分布式数据库操作,使得连接到多分片设置与连接到独立的 MongoDB 数据库一样简单。

区域内高可用性 (HA)

对于生产工作负载,强烈建议启用区域内高可用性 (HA),以满足新式可靠性标准。 虽然可以对开发或试验群集禁用 HA 来降低成本,但 HA 对于维持生产环境中的数据库可用性至关重要。

可以在群集配置期间或群集创建后的任何时间切换 HA。 它适用于所有支持 Azure Cosmos DB for MongoDB vCore 的 Azure 区域,无论特定的区域功能如何。

启用 HA 后,群集中的每个主物理分片都会与一个备用分片配对。 备用分片镜像其主分片的计算和存储配置。 这样,每个分片就有六个数据副本 — 主分片上有三个,备用分片上也有三个。 在包含可用性区域 (AZ) 的 Azure 区域中,主分片和备用分片部署在不同的可用性区域中。

数据在每个主分片和备用分片之间同步复制。 仅当写入成功提交到两个分片后才会确认,从而确保 HA 群集中的强一致性。 换言之,备用物理分片是其主物理分片的始终保持最新的完整副本,可在高可用性群集中提供强一致性

Azure Cosmos DB for MongoDB vCore 群集中的高可用性启用示意图。图 2.已启用和未启用区域内高可用性 (HA) 的 Azure Cosmos DB for MongoDB vCore 群集。

如果主分片发生故障,服务会自动故障转移动到其备用分片。 在故障转移期间,所有读写请求都将重定向到备用分片,该分片将成为新的主分片。 故障转移期间正在进行的写入操作将在服务内重试,以确保连续性。 然后创建一个替代分片来重新建立同步复制,该分片成为新的备用分片。

跨区域复制:区域灾难恢复 (DR)

区域性中断可能会中断对数据库的访问,不过这种情况非常少见。 跨区域复制提供了强大的灾难恢复 (DR) 策略,确保即使在大规模中断期间也能访问数据。

通过跨区域复制,可以在不同的 Azure 区域中创建副本群集。 副本群集中的每个分片都从主群集中的对应分片异步复制数据。 此复制模型可确保最终一致性,同时最大程度地减少对主群集的性能影响

异步复制避免了在将“写入完成”确认发送回应用程序之前需要立即将每个写入操作传送到副本并由副本确认的需要。 但是,这意味着主群集上完成的一些写入可能尚未复制到副本群集,从而导致复制滞后。 复制滞后的程度取决于主群集上的写操作的强度以及主群集和副本群集上的总体负载。

在此设置中:

  • 区域 A 中的主群集处理所有读取和写入。
  • 区域 B 中的副本群集支持只读访问,从而能够更接近该区域中的应用程序或用户实现高性能读取操作。

应用程序可以在区域 A 中的主群集上执行 OLTP 查询,并且可以将 OLAP/报告查询等密集读取操作指向区域 B 中的副本群集。

应用程序可以使用动态全局读写连接字符串,该连接字符串始终指向随时可供写入的群集。 在区域中断期间,可以提升区域 B 中的副本群集以接受写入。 全局连接字符串会自动更新以指向提升的群集,确保写入操作不会中断。

Azure Cosmos DB for MongoDB vCore 中用于实现灾难恢复的跨区域副本提升示意图。图 3.使用启用了跨区域复制的 Azure Cosmos DB for MongoDB vCore 群集实现区域灾难恢复 (DR)。区域 B 中的群集已提升为新的读写群集。区域 A 中的群集成为副本群集。

区域内可用性和跨区域 DR 功能摘要

下表汇总了启用和管理区域内高可用性和跨区域灾难恢复策略的主要注意事项。

场景 Azure Cosmos DB for MongoDB vCore 功能 无数据丢失 防止区域范围的中断 自动故障转移 无需更改连接字符串
物理分片故障 区域内高可用性 (HA) ✔️ ✔️ ✔️
区域中断 跨区域副本群集 ✔️ ✔️†

† 使用全局读写连接字符串时。