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