前言:
本文对应Adjust Priority for Replica Set Member — MongoDB Manual
priority的值在选择Primary节点时会起到作用,每个节点都会有这个属性值,他的值越大,就会优先被选为primary节点。文本将对这个属性值的修改操作进行讲解

场景:
当前我们已经搭建了一个副本集(如果还未搭建可参考前面的文章)如下:

PSS模式(还有PSA模式)地址别名
Primary192.168.40.128节点1
Secondary192.168.40.129节点2
Secondary192.168.40.130节点3

现在为了能在节点1这个Primay节点出现问题时,让节点2有更高的优先级级来成为Primary节点,所以需要进行一些设置。
 

步骤
第一步:找到副本集中的Primary节点,然后通过mongosh连接到mongodb


第二步:使用如下命令获取到副本集中的配置信息,并赋值给变量(后面将通过这个变量修改配置)

cfg = rs.conf()

 命令执行完后,会将所有的节点打印出来如下图:

第三步:通过上面的变量cfg来修改某个节点的优先级属性priority的值,如下:

cfg.members[2].priority = 2 #members[2]是因为我要修改的节点在配置中索引为2的位置上,看上图

第四步:通过下面命令更新副本集的配置

rs.reconfig(cfg) #cfg就是上面定义的变量

  

第五步:验证
再次执行rs.config(),看到里面我们修改的节点的中的priority的值为更改过的2就对了。
然后执行db.hello(),会看到节点3已经成为Primary节点了

到此关于priority的修改操作就完成了。

写在最后
关于priority属性的值,下面还有一些需要注意的点

1. priority的取值范围为0到1000,默认值为1

2. 如果不想让某个节点参加选举或者想把某个节点设置为隐藏节点(Hidden Member)或者延迟节点(Delayed Member),那么也需要把priority的值设置为0

3. Arbiter节点的priority的值也是0

4. 设置优先级会导致当前primary下台(取消自己作为Primary节点),然后进行重新选举。

另外在【步骤中第二步】的截图中,我们会发现还有一个叫做votes的属性,它与priority存在一定的关系,如下:

  • Non-voting (i.e. votes is 0) members must have priority of 0.
    意思就是说votes为0时,priority的值也必须是0
  • Members with priority greater than 0 cannot have 0 votes.
    意思就是说priority值大于0时,votes的值不能为0
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐