(1)Arbiter节点——只参与投票,不能被选举为Primary,并且不从Primary同步数据;它本身不存储数据,是非常轻量级的服务;从3.6版本起,Arbiter必须设置Priority为0。推荐在生产库中尽量不要使用Arbite节点。
(2)Priority节点——选举优先级为0,不会被选举为Primary。从3.2版本起,Priority大于0的vote必须为1,而vote为0的Priority必须为1;若低优先级的Secondary被高优先级的Secondary选举为Primary,则它会继续选举直到高优先级的Secondary成为Primary。
(3)Vote 0
MongoDB 3.0复制集成员最多为50个,参与Primary选举投票的成员最多为7个,其他成员(Vote0)的vote属性必须设置为0,即不参与投票。
从3.2版本起,vote为0的节点不能成为主节点,vote为1的节点只能从vote为1的节点同步。
能发起选举的节点是属于以下五种状态中的某一种:
- PRIMARY
- SECONDARY
- RECOVERING
- ARBITER
- ROLLBACK
(4)Hidden节点——不会被选举为主节点,并且对Driver不可见,可以用来做数据备份和离线计算。
(5)Delayed节点——必须是Hidden节点,并且数据落后于Primary一段时间(时间长短可以配置),该类节点可以用来恢复数据。
(6)副本集rollback过程
回滚只会发生在主节点的写操作没能成功在从节点上应用就“Down"掉的情况下,当主节点重新以一个从节点加入复制集时,它将进行“回滚”,并且将回滚的数据写到单独的rollback目录下,进节点上的写操作将于复制集中其他成员的写操作保持一致。此外,rollback的数据不能超过300MB。