Azure DocumentDB 允许连续数据流式传输到另一个或同一 Azure 区域中的副本群集。 此功能提供跨区域的灾难恢复(DR)保护,支持在跨区域和同一区域中的读性能伸缩性。 本文档为想要了解如何管理群集复制的开发人员提供快速指南。
先决条件
- 一份 Azure 订阅。 如果没有 Azure 订阅,请创建一个试用帐户。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用本地安装,请使用 az login 命令登录到Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 将扩展与 Azure CLI 配合使用。
运行az version命令,以查看已安装的版本和依赖库。 若要升级到最新版本,请运行az upgrade。
启用跨区域或同一区域复制
可以在新群集预配期间或在现有群集上随时创建副本群集。
在新群集预配期间创建副本群集
若要 在创建群集期间在新群集上启用复制,请执行以下步骤:
- 按照步骤 开始创建群集,并完成新 Azure DocumentDB 群集的 “基本信息 ”选项卡。
- (可选)在“网络”选项卡上为群集选择所需的网络访问设置。
- 在“多区域分发”选项卡上,为群集副本选择“启用”。
- 在“只读副本名称”字段中提供副本群集名称。
- 在 只读副本区域中选择一个区域。 副本群集托管在所选 Azure 区域中。
- 在“查看 + 创建”选项卡上,查看群集配置详细信息,然后选择“创建”。
注释
副本群集在与其主群集相同的 Azure 订阅和资源组中创建。
为现有群集创建副本群集
若要在 创建群集后随时在新群集上启用复制,请执行以下步骤:
- 按照步骤 创建新的 Azure DocumentDB 群集。
- 跳过 “多区域分发 ”选项卡。此选项卡用于在主群集预配期间创建群集副本。
- 创建群集后,在群集边栏的 “设置”下,选择 “多区域分发”。
- 选择 “添加新只读副本”。
- 在“只读副本名称”字段中提供副本群集名称。
- 在 只读副本区域中选择一个区域。 副本群集托管在所选 Azure 区域中。
- (可选)在“数据加密”部分选择“客户管理密钥”,以便在副本群集上使用客户管理的密钥(CMK)启用数据加密。 然后按照 步骤启用 CMK。
- 验证所选内容,然后选择“保存”按钮以确认副本创建。
若要使副本群集可用于读取操作,请通过配置用于公共访问的防火墙规则或添加用于实现安全专用访问的专用终结点来调整其网络设置。
使用 Azure CLI 创建副本群集
使用 az documentdb mongocluster replica create.. 创建同一区域或跨区域副本。 源群集在创建时必须已启用 GeoReplicas 预览功能。 该值--source-cluster可以是群集名称,也可以是完整的Azure资源 ID。
az documentdb mongocluster replica create \
--name <replica-cluster-name> \
--resource-group <target-resource-group> \
--location <target-region> \
--source-cluster <source-cluster-name-or-resource-id> \
--no-wait
等待副本群集完成预配。
az documentdb mongocluster wait \
--name <replica-cluster-name> \
--resource-group <target-resource-group> \
--created
列出与源群集关联的副本。
az documentdb mongocluster replica list \
--source-cluster <source-cluster-name> \
--resource-group <source-resource-group> \
--output table
触发强制升级
本部分介绍副本群集的 强制 升级。 强制提升可让你对时机拥有最大的控制权,但它属于非计划故障转移,由于复制是异步进行的,因此可能会导致数据丢失。 对于可实现零数据丢失的替代方案,请使用 平滑提升。 若要让Azure在区域性中断期间自动升级副本,请启用服务管理的故障转移。
若要将群集副本提升为读写群集,请执行以下步骤:
- 选择要在门户中提升的群集副本。
- 在群集边栏的 “设置”下,选择 “多区域分布”。
- 在 “多区域分发 ”页上,选择 “强制升级”。
- 阅读警告文本,然后选择“ 确认”。
提升群集副本后,它将成为可读和可写群集。 如果在主群集(读/写)群集上启用了高可用性 (HA),则需要在升级后在副本群集上重新进行启用。
若要使用Azure CLI触发强制升级,请运行az documentdb mongocluster replica promote。 该命令在升级开始前验证是否 --source-cluster 是目标副本的源。
az documentdb mongocluster replica promote \
--name <replica-cluster-name> \
--resource-group <replica-resource-group> \
--source-cluster <source-cluster-name-or-resource-id> \
--mode Switchover \
--promote-option Forced \
--yes
触发平滑提升
平滑提升是一次计划内切换,并在零数据丢失的情况下完成。 Azure DocumentDB 会暂停主群集上的写入,排空复制队列,使副本完全追上主群集的状态,然后将该副本提升为主副本。 对于计划维护或计划中的区域迁移,请使用平滑切换。 有关背景信息,请参阅 平滑晋升。
触发平滑提升:
- 选择要在门户中提升的群集副本。
- 在群集边栏的 “设置”下,选择 “多区域分布”。
- 在“多区域分发”页面上,选择“平滑提升”。
- 阅读警告文本,然后选择“ 确认”。
在故障转移期间,写入请求将返回暂时性错误,直到交换机完成。 全局读写连接字符串会自动更新并指向新的主集群。 使用先前主库自身连接字符串的应用程序必须更新,以将写入操作指向新的主库。
启用由服务管理的故障转移
服务托管故障转移可让 Azure DocumentDB 在检测到主区域发生区域中断时自动将副本群集提升为主群集。 启用后,区域中断期间不需要操作员操作。 有关背景信息,请参阅 服务托管的故障转移。
注释
服务管理的故障转移是计划外故障转移,由于复制延迟,可能会导致数据丢失。 若要在计划内维护期间以零数据丢失的方式切换区域,请改用 平滑提升。 这两个选项可以一起使用。
可在 Azure 门户中主群集的 多区域分发 页面上按群集配置服务托管故障转移。 启用后,Azure DocumentDB 监视主要区域,并在确定主要区域不可用时自动升级副本群集。 您可以随时在同一页面上禁用由服务管理的故障切换;禁用期间,如果发生区域性中断,您需要触发强制提升。
检查群集复制角色和复制区域
若要检查群集的复制角色,请执行以下步骤:
- 选择现有的 Azure DocumentDB 群集。
- 选择“概述”页。
- 检查“读取区域”(在主群集上)或“写入区域”(在副本群集上)值。
如果未启用读取区域值,则此群集已禁用复制。
禁用跨区域或同一区域复制
若要禁用复制,请执行以下步骤:
- 选择 Azure DocumentDB 副本 群集。
- 选择 “概述”。
- 确认它是副本群集。
- 在 Azure 门户中的副本群集的“概述”页上,选择“删除”。
- 在“删除 <副本名称>”屏幕上,阅读警告文本,然后在“确认帐户名称”字段中输入群集的名称。
- 选择“删除”以确认删除该副本。
如果需要删除主群集和副本群集,则需要先删除副本群集。
若要使用Azure CLI删除副本群集,请运行以下命令:
az documentdb mongocluster delete \
--name <replica-cluster-name> \
--resource-group <replica-resource-group> \
--yes
使用连接字符串
可以像连接到常规读写群集一样连接到群集副本。 请按照以下步骤获取不同情况的连接字符串:
- 在门户中选择主群集或其群集副本。
- 在群集边栏的“设置”下选择“连接字符串”。
- 复制当前所选群集的自连接字符串,以连接到该群集。
- (可选,仅限主群集上)复制始终指向可用于写入的群集的全局读写连接字符串。
自连接字符串会在进行群集副本升级后保留。 你可以继续使用字符串或全局读写连接字符串来支持读取操作。 如果使用自连接字符串支持写入操作,则需要将应用程序中的连接字符串更新为指向升级的副本群集,以便在升级完成后继续写入到相应数据库。