在这里插入图片描述

上一篇:MongoDB(9)—副本集数据读写

1.什么时候副本集会自动选举主节点?

  在MongoDB的副本集中,主节点出现下面的条件会触发选举机制:

1.主节点出现故障宕机了

2.主节点网络不可达(心跳机制:默认10s无响应则判定主节点挂掉)

3. 人工指定主节点

4. 修改节点的优先级

2.选举规则?

1.票数最高,且获得半数以上成员支持的节点获胜

  当副本集存活的成员不及半数时,将无法选举主节点。也就无法写数据,此时整个副本集只能读取数据。

2.票数相同且均获得了大部分成员支持,则其数据在最新的节点获胜

  两个节点谁的数据最新,同步主节点数据的速度最快,谁就获取胜利。

3.优先级会严重影响获取选票的情况

  优先级的设置范围是0~100,默认情况下,优先级为1。通过设置节点的优先级,使得优先级更高的节点更有可能成为主节点,而优先级更低的节点更不可能成为主节点。(人为干预:比如哪台服务器配置好可以将其节点的优先级设置高一点)

3.节点优先级?

1.查看节点的优先级

  我们可以使用命令rs.config()查看节点的 优先级。

在这里插入图片描述
我们发现:27017端口和27018一主一从两个节点的优先级都是1,但是27019这个仲裁节点的端口的优先级却是0。说明仲裁节点永远不会成为主节点。

2.设置节点的优先级

  我们可以在添加节点时指定优先级,如下:

rs.add({_id:0,host:'192.168.247.14:27017',priority:2})

也可以为已有的节点设置优先级:

//获取原始config文件
config=rs.config()
//设置config中节点的优先级
config.members[0].priority=99
//更新config
rs.reconfig(config)

比如我们要将27017端口的优先级设置为5:
在这里插入图片描述
27017端口在members这个数组中下标为0。接下来设置他的优先级:
在这里插入图片描述
然后更新config配置:
在这里插入图片描述
然后重新查询一下现在副本集的config:
在这里插入图片描述
  发现27017端口的优先级由1更改为了5。如果现在我们将从节点27018的优先级改到最高,则27017节点将不再是我们的主节点,主节点更改为27018

下一篇:MongoDB(11)—分片基础概念

posted on 2020-02-24 15:04  无关痛痒qaq  阅读(197)  评论(0编辑  收藏  举报