首页 / 资讯中心 / 文章详情

MongoDB副本集故障转移演练记录

MongoDB副本集故障转移演练记录 ★ FEATURED ARTICLE
基于rs0副本集一主两从27017主27018、27019从部署主机10.10.10.128操作系统CentOS Linux7.9.2009MongoDB版本4.2.25部署日期2026‑09‑20一、部署概述基于已搭建rs0副本集做两类故障演练1.主节点主动降级 rs.stepDown()观察自动选举新主节点。2.模拟主进程宕机kill进程观测故障转移、角色切换故障节点恢复后自动加入副本集作为从节点。副本集初始状态 localhost:27017 PRIMARY priority5 localhost:27018 SECONDARY priority3 localhost:27019 SECONDARY priority1二、演练1主节点主动降级 stepDown#登录当前主节点27017mongo --port 27017#执行主动降级让出主节点角色rs.stepDown(30)#执行之后27017会变为SECONDARY副本集会根据priority优先级选举新PRIMARY。#本环境priority27018(priority3) 27019(priority1)27018被选举成为新主节点。#查看副本集状态rs.status()#查看当前主节点db.hello().primary三、写入验证新主节点可正常写数据#连接新主节点27018mongo --port 27018use appdbdb.test.insertOne({test:stepdown_new_master})#登录从节点执行rs.slaveOk()确认数据复制同步正常。四、演练2模拟主节点进程崩溃kill模拟宕机#假设当前主节点为27018kill掉mongod进程模拟硬件故障ps -ef | grep mongodkill -9 27018进程PID#等待选举超时副本集剩余节点27017、27019进行投票选举新PRIMARY#执行rs.status()观察27018状态为not reachablehealth0#连接存活节点查看集群状态mongo --port 27017rs.status()db.hello().primary五、故障节点恢复#重新启动被kill的27018实例mongod --port 27018 -dbpath /var/lib/mongo1 -logpath /var/log/mongod/mongod1.log -replSet rs0 --fork --wiredTigerCacheSizeGB 0.25#启动完成节点自动加入副本集自动同步缺失oplog日志角色变为SECONDARY不需要手动修改配置。 rs.status()六、关键概念说明1.priority数值越大越优先选为PRIMARY0代表永远不能成为主。2.选举需要副本集多数节点存活3成员副本集至少2个节点在线才可以完成选举。3.故障节点恢复依靠oplog操作日志同步丢失数据注意oplog空间大小长时间宕机oplog被覆盖会需要全量重同步。七、常见问题现象节点无法加入副本集同步数据排查点防火墙、端口连通性时间同步oplog大小是否不足以覆盖宕机时间。八、常用演练命令rs.status() #副本集完整状态rs.stepDown(sec) #主节点主动降级db.hello().primary #快速获取当前主节点地址rs.printReplicationInfo() #查看oplog大小、时间窗口九、实验结论1.MongoDB副本集在主节点故障时集群自动完成投票选举出新主实现故障转移高可用。2.故障节点恢复后自动同步oplog自动作为从节点加入集群无需人工干预配置。3.副本集高可用前提保证集群存活节点达到法定多数。
阅读完成 · 觉得有帮助?
咨询建站