测试主副本故障转移
注意
此功能不适用于M0
免费集群和 Flex 集群。要详细学习;了解哪些功能不可用,请参阅 Atlas M0 (免费集群)、M2 和 M5 限制。
Atlas在进行配置更改时(例如补丁更新、扩展事件以及发生故障时)会进行副本集选举。 您的应用程序应在不停机的情况下处理副本集选举。 要学习;了解如何构建弹性应用程序,请参阅使用MongoDB Atlas构建弹性应用程序。
您可以在 Atlas URI 连接字符串中添加 retryWrites=true 来启用可重试写入。要了解更多信息,请参阅可重试写入。
您可以使用 Atlas 用户界面和 API 测试 Atlas 集群中副本集主节点的故障,并观察应用程序如何处理副本集故障转移。
必需的访问权限
要启动故障转移测试,您必须拥有项目的Organization Owner
、 Project Owner
、 Project Cluster Manager
或Project Stream Processing Owner
访问权限。
先决条件
在测试副本集主节点的故障之前,您必须满足以下条件:
对集群的所有待处理更改都必须完成。
集群的所有节点必须处于健康状态并具有最新的监控数据。
每个副本集或分片必须有一个主节点。
集群的任何成员的复制延迟必须小于 10 秒。
集群的所有成员必须至少有 5% 的剩余可用磁盘空间。
所有主节点 oplog 都必须具有足够的空间来支持三小时的操作。
测试主节点故障转移进程
重要
测试主节点故障转移之前,请确保 Atlas 集群运行正常。 否则,Atlas 可能会拒绝您的请求。
您提交测试主节点故障转移的请求时,Atlas 会模拟故障转移事件。 在此过程中:
Atlas 会关闭当前的主节点。
副本集的节点将进行选举以选择哪个从节点将成为新的主节点。
Atlas 将原始主节点作为从节点导回副本集。旧主节点重新加入副本集时,将与新主节点同步,从而获取停机期间发生的写入操作。
以下语句描述了在分片集群中翻转和测试故障转移时的 Atlas 行为:
如果原始主节点在主节点退出时接受了尚未成功复制到从节点的写入操作,则主节点在重新加入副本集并开始同步时将回滚这些写入操作。 要了解更多信息,请参阅副本集故障转移期间的回滚。 请联系MongoDB 支持部门以获取解决回滚问题的帮助。
只有与分片集群中副本集的主节点位于同一实例上的
mongos
进程才会重新启动。并行重启分片集群中副本集的主节点。
如需使用 Atlas CLI 启动项目中指定集群的故障转移测试,请运行以下命令:
atlas clusters failover <clusterName> [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas 集群故障转移。
要使用 Atlas 用户界面执行主节点故障转移测试:
在Atlas中, Go项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
对于要执行故障转移测试的集群,请单击 ... 按钮。
单击 Test Resilience(连接)。
在Test Resilience模态上,单击Primary Failover标签页。 Atlas 显示模拟故障转移事件所需的步骤。 要了解更多信息,请参阅测试故障转移进程。
单击 Restart Primary 开始测试。Atlas 在 Test Resilience 模态窗口中显示模拟故障转移过程的结果。
验证故障转移
验证故障转移是否成功:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
故障转移问题故障排除
如果应用程序无法从容应对故障转移,请确保以下几点:
您正在使用 SRV 连接格式。
您正在使用最新版本的驱动程序。
您已在应用程序中实施了适当的重试逻辑。