Mongodb副本集故障测试
副本节点故障测试
关闭192.168.1.101副本节点:
发现,主节点和仲裁节点对101从节点的心跳失败。因为主节点还在,因此,没有触发投票选举。
如果此时,在主节点写入数据。
db.comment.insert({"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在 手机上,健康很重要,一杯温水幸福你我他。","userid":"1002","nickname":"相忘于江 湖","createdatetime":new Date("2019-08- 05T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"})
启动从节点,会发现,主节点写入的数据,会自动同步给从节点。
主节点故障测试
关闭192.168.1.100节点,从节点和仲裁节点对100节点的心跳失败,当失败超过10秒,此时因为没有主节点了,会自动发起投票。而副本节点有192.168.1.101,开始投票。102向101投了一票,101本身自带一票,因此共两票,超过了“大多数” 102是仲裁节点,没有选举权,101不向其投票,其票数是0.最终结果,101成为主节点。具备读写功能。
在192.168.1.101写入数据查看。
db.comment.insert({"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"})
再启动 100节点,发现100变成了从节点,101仍保持主节点。登录100节点,发现是从节点了,数据自动从101同步。从而实现了高可用。
仲裁节点和主节点故障
先关掉仲裁节点192.168.1.102
关掉现在的主节点192.168.1.100
登录101后,发现,101仍然是从节点,副本集中没有主节点了,导致此时,副本集是只读状态,无法写入。
为啥不选举了?因为101的票数,没有获得大多数,即没有大于等于2,它只有默认的一票(优先级是1)
如果要触发选举,随便加入一个成员即可。
- 如果只加入 102仲裁节点成员,则主节点一定是101,因为没得选了,仲裁节点不参与选举,但参与投票。(不演示)
- 如果只加入 103节点,会发起选举。因为101和103都是两票,则按照谁数据新,谁当主节点
仲裁节点和从节点故障
先关掉仲裁节点102,
关掉现在的副本节点101
10秒后,101主节点自动降级为副本节点。(服务降级)
副本集不可写数据了,已经故障了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!