MST

星途 面试题库

面试题:MongoDB中如何通过配置阻止选举以避免不必要的故障切换

请描述在MongoDB副本集中,通过哪些方式可以阻止选举从而避免不必要的故障切换,并简要说明其原理。
40.1万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

在MongoDB副本集中,可以通过以下方式阻止选举从而避免不必要的故障切换:

  1. 设置优先级为0
    • 原理:副本集中每个成员都有一个优先级(priority),范围从0到1000。优先级为0的成员永远不会被选举为Primary,这样即使该节点的状态发生变化,也不会触发选举过程,避免了不必要的故障切换。例如,当你有一个专门用于备份或者只读查询的节点时,可以将其优先级设为0。
  2. 设置hidden为true
    • 原理:设置为hidden(隐藏)的成员不会参与选举。隐藏成员的数据会保持与其他成员同步,但从客户端的角度来看,它是不可见的,不会被选举为Primary。通常用于执行后台任务(如数据分析)的节点,既保证数据的一致性,又不会干扰正常的选举流程。
  3. 设置votes为0
    • 原理:副本集中每个成员都有投票权(votes),默认为1。将某个成员的votes设为0后,它虽然仍然可以接收数据同步,但在选举过程中没有投票权,降低了对选举结果产生影响的可能性,进而避免不必要的故障切换。