标签归档:mongodb-replica

Mongodb 副本集

介绍

Mongodb官方提供了一个复制功能,它提供冗余的功能,它可以将数据保存在不同服务器上,并保持多个服务器的数据一致性。

当主要提供数据的服务器出现了问题不能访问等问题,副本集中的其他服务器会自动替代主要提供数据的服务器进行提供数据功能。

副本集中有三个角色:

  1. 主节点:所有副节点的数据均来自于主节点,并且只能对主节点进行读写操作。
  2. 副节点:数据来自于主节点,可以进行读取操作,但是不能进行写操作。
  3. 仲裁者:不含数据也不与客户端交流,只在选举主节点的时候进行投票。

选举机制

Mongodb最多支持50个副本集成员以及最多7个选举成员,启动副本集后将开始第一次选举,在选举过程中,所有副本集成员都只能读取,直到选举出主节点后主节点才能进行读写,但是在这个期间副本成员可以提供查询服务。

而主节点要保持主节点的位置需要每两秒发送一个ping请求,如果10秒内没有得到响应则标记为不可访问,当一半以上的副本集成员不可访问,那么主节点将降级为副节点。

其中设置成员的priority值可以优先成员主节点,这个值介于0-1000之间,默认为1,如果这个值为0,那么它的votes值也为0,只要votes为0的成员不能投选举票,但是可以投否决票。但是我们也可以手动设置成员priority值为大于1的成员是否有投票权利

在进行选举的时候,其他成员会作以下几点判断来进行投票参与选举的成员是否能作为主节点,选举步骤:

  1. 自己是否能与主节点通讯。
  2. 参与选举的成员是否比其他参与选举的成员数据最新。
  3. 如果参与选举的成员数据相等则尝试使用具有最高priority的值的成员。

继续阅读