MST

星途 面试题库

面试题:MongoDB副本集选举机制及创建中的影响因素

描述MongoDB副本集中的选举机制,在创建副本集时,哪些配置参数会对选举机制产生影响,如何影响的?
47.4万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

MongoDB副本集中的选举机制

  1. 基本原理
    • MongoDB副本集采用基于心跳检测的选举机制。副本集中每个成员通过心跳消息互相通信,监控彼此的状态。当主节点(Primary)出现故障时,副本集需要选举出一个新的主节点来继续处理写操作。
    • 选举过程基于多数原则,即需要大多数成员(超过一半)认为某个节点适合成为主节点,该节点才能当选。
  2. 选举条件
    • 数据一致性:节点的数据必须是最新的,拥有最新的操作日志(oplog)。
    • 节点状态:节点必须处于健康状态,能够正常响应心跳消息。
    • 优先级:每个节点都有一个优先级(priority)配置参数,优先级高的节点在选举中有更大优势。
    • 选举时间:节点需要在选举超时时间内获得足够的票数。如果在规定时间内没有选出主节点,会重新进行选举。

影响选举机制的配置参数及影响

  1. priority(优先级)
    • 影响:优先级是一个0 - 1000之间的数字,默认值为1。优先级为0的节点永远不会成为主节点,只能作为被动副本。优先级越高,在选举时越容易被选为新的主节点。例如,在一个三节点副本集中,如果其中一个节点的优先级设置为2,另外两个为1,在主节点故障时,优先级为2的节点更有可能当选为新主节点。
  2. votes(票数)
    • 影响:每个节点默认有一票。通过设置votes参数,可以调整节点在选举中的投票权重。比如,一个节点的votes设置为0,它将不能参与选举投票,也不会被选举为主节点。这个参数对于一些特殊用途的节点(如只用于数据备份但不参与选举的节点)很有用。
  3. hidden(隐藏节点)
    • 影响:如果一个节点被设置为hidden: true,它不会被客户端发现,也不会参与选举(优先级自动变为0)。隐藏节点主要用于一些后台任务,如数据备份、分析等,不影响正常的读写操作和选举过程。
  4. slaveDelay(延迟节点)
    • 影响:设置slaveDelay参数后,该节点的数据会滞后于主节点一定时间(以秒为单位)。延迟节点不会参与选举,因为它的数据不是最新的。这在数据恢复场景中很有用,比如误删除数据时,可以从延迟节点恢复数据,而不会影响正常的选举和读写操作。