Azure Cosmos DB for MongoDB vCore 中的跨区域复制
适用对象: MongoDB vCore
本文讨论 Azure Cosmos DB for MongoDB vCore 的跨区域灾难恢复 (DR)。 本文还介绍了其他区域中群集副本的读取功能,以便读取操作可伸缩性。
跨区域复制功能允许将数据从群集复制到另一个 Azure 区域中的只读群集。 副本使用异步复制技术进行更新。 对于主要 Azure Cosmos DB for MongoDB vCore 群集,可以在另一个区域中具有一个群集副本。 在极少见的区域中断情况下,可以升级另一个区域中的群集副本,使其成为新的读写群集,以便持续运行 MongoDB 数据库。 将另一区域中的群集副本提升为新的主群集后,应用程序可能会继续使用相同的连接字符串。
副本是新的群集,可以像管理常规群集一样对其进行管理。 每个只读副本按照预配计算资源的 vCore 数量以及每月 GiB 存储量计费。 副本群集的计算和存储成本的结构与创建副本群集的常规群集和价格相同。
使用群集只读副本进行灾难恢复
跨区域复制是 Azure 业务连续性和灾难恢复 (BCDR) 策略中的几个重要支柱之一。 跨区域复制可跨其他 Azure 区域异步复制相同的应用程序和数据,以进行灾难恢复保护。 并非所有 Azure 服务都会自动复制数据,或自动从故障区域回退以跨区域复制到另一个已启用区域。 Azure Cosmos DB for MongoDB vCore 提供了一个选项,可在另一个区域中创建群集副本,并将主群集上写入的数据自动复制到该副本。 如果需要手动启动主要区域中的中断,则回退到群集副本。
在 Azure Cosmos DB for MongoDB vCore 群集上启用跨区域复制时,会将每个分片连续复制到另一个区域。 此复制会维护所选区域中数据的副本。 在极少见的主要区域中断的情况下,此类副本已准备好用作灾难恢复计划的一部分。 复制是异步的。 在发送成功写入确认之前,主群集分片上的写入操作不会等待复制到相应副本分区的操作完成。 异步复制有助于避免在主群集上执行写入操作的延迟增加。
对群集副本和连接字符串执行连续写入操作和读取操作
Azure Cosmos DB for MongoDB 中的全局读写连接字符串始终将写入定向到启用了写入的活动群集。 启动副本群集升级时,区域 B 中的副本群集将切换到写入模式,而区域 A 中的原始主群集将转换为只读模式。 在升级之前,全局读写连接字符串以区域 A 中的主群集为目标,然后会在承担写入责任后更新为指向区域 B。 对于使用全局读写连接字符串的应用程序,写入操作会在整个升级过程中无缝地继续,从而保持数据流不间断。
副本群集也可用于读取。 它有助于从主群集卸载密集型读取操作,或者为靠近复制区域的客户端提供更低的读取操作延迟。 启用跨区域复制后,应用程序可以使用副本群集自连接字符串从群集副本执行读取。 主群集可用于使用其自己的自连接字符串进行读取和写入操作。
通过启用跨区域复制创建副本时,它不会继承网络设置,例如主群集的防火墙规则。 必须单独为副本设置这些设置。 副本从主群集继承管理员帐户。 需要在主群集上管理用户帐户。 可以使用同一用户帐户连接到主群集及其副本群集。
副本群集升级
如果发生区域中断,则可以通过升级另一个区域中的群集副本来执行灾难恢复操作,以便可供写入使用。 在副本升级操作期间,将执行以下步骤:
- 除了读取以外,还启用了对区域 B 中副本的写入。 之前的副本将成为新的读写群集。
- 区域 B 中升级后的副本群集将使用其连接字符串和全局读写连接字符串接受写入。
- 区域 A 中的群集设置为只读,并保留其连接字符串。
重要
由于复制是异步的,因此在升级区域 B 中的群集副本时,区域 A 中的某些数据可能不会复制到区域 B。 如果出现这种情况,升级将导致未复制的数据在两个群集上都不存在。