MongoDB选举机制

MongoDB复制集由一个主服务器和多个备服务器组成,确保数据冗余和高可用。当主服务器故障时,复制集通过选举机制选出新的Primary。选举涉及心跳检查、发起和投票过程。心跳检查维护集群状态,选举发起需要满足特定条件,投票阶段节点依据多数原则决定新Primary。建议复制集成员为奇数,以避免选举僵局。PV1版本改进了选举协议,消除否决票并优化选举流程。
摘要由CSDN通过智能技术生成

复制集概述

MongoDB复制集是指MongoDB实例通过复制并应用其他实例的oplog达到数据冗余的技术。MongoDB复制集一般由一个主服务器(Primary)和若干个备服务器(Secondary)组成。其中Primary用于处理客户端的请求,通过Primary将数据写入;Secondary从Primary同步数据,保存副本。当Primary服务器崩溃时,MongoDB复制集通过选举机制将其中一个Secondary服务器升级为Primary,保证复制集的高可用。
MongoDB在3.2版本对选举机制进行了一次较大的改动,可以通过shell查看选举协议版本:

PRIMARY> rs.conf().protocolVersion
NumberLong(1)

新的版本protocolVerson为1,通过MongoDB r3.2.0代码可以看到,心跳和选举基本以protocolVersion是否为1分叉处理。下面主要以PV1版本开始介绍MongoDB的选举机制,围绕选举周边只做简单介绍。

选举机制

MongoDB节点之间维护心跳检查,主节点选举由心跳触发。

心跳检查

MongoDB复制集成员会向自己之外的所有成员发送心跳并处理响应信息,因此每个节点都维护着从该节点POV看到的其他所有节点的状态信息。节点根据自己的集群状态信息判断是否需要更换新的Primary。

在实现的时候主要由两个异步的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值