MST

星途 面试题库

面试题:MongoDB副本集选举机制与配置关系

在MongoDB副本集中,选举机制是如何工作的?配置参数(如优先级、票数等)如何影响选举过程?请举例说明不同配置下选举结果可能出现的变化。
16.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

MongoDB副本集选举机制

  1. 选举发起条件
    • 当副本集的主节点(Primary)不可用时,副本集进入选举流程,以选出新的主节点。例如,主节点所在服务器硬件故障,网络中断等情况会触发选举。
  2. 参与选举成员类型
    • 主节点(Primary):负责处理客户端的读写操作。
    • 从节点(Secondary):复制主节点的数据,并可用于读操作。
    • 仲裁节点(Arbiter):不存储数据,仅参与选举投票,帮助确定主节点。
  3. 选举算法
    • MongoDB使用的是Raft协议的变体来进行选举。在选举过程中,节点会互相通信并交换状态信息。具有最新数据(即拥有最高的oplog时间戳)且符合选举条件的节点有更大机会成为主节点。

配置参数对选举的影响

  1. 优先级(priority)
    • 含义:优先级是每个节点配置中的一个参数,取值范围是0 - 1000,默认值为1。优先级越高的节点在选举时越有优势。优先级为0的节点不会参与主节点的选举,只能作为从节点。
    • 举例:假设有三个节点A、B、C,A的优先级为5,B的优先级为2,C的优先级为1。当主节点出现故障时,在其他条件相同的情况下,节点A最有可能被选举为新的主节点,因为它的优先级最高。
  2. 票数(votes)
    • 含义:票数决定了每个节点在选举中的投票权重,默认每个节点有一票。仲裁节点只有投票权,没有选举权,即不能成为主节点。
    • 举例:假设有一个副本集包含三个数据节点A、B、C和一个仲裁节点D。如果节点A的票数配置为2(通过特殊配置实现,通常默认是1),B和C票数为1,仲裁节点D票数为1。当进行选举时,A的投票权重更大,在选举过程中会更具优势。例如,若B和C都投给对方,而A投给自己,加上仲裁节点D随机投票,如果D投给A,那么A就会因为总票数3(自己2票 + D的1票)超过B和C(各1票)而当选主节点。