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