背景介绍
在MongoDB副本集中,有时需要指定某些节点不可被选为主节点,或者必须从某些节点中选出主节点。你可以通过修改节点优先级实现此目的,具体操作可以参考官方文档:https://docs.mongodb.com/manual/tutorial/force-member-to-be-primary/

操作演示
设置节点选主优先级
(1) 查看当前副本集状态
udb-h332hu4d:PRIMARY> rs.status()
(2) 输出当前副本集配置
udb-h332hu4d:PRIMARY> cfg = rs.conf()
(3) 修改节点优先级
udb-h332hu4d:PRIMARY> cfg.members[0].priority = 2 # 修改当前primary节点优先级为2
2
udb-h332hu4d:PRIMARY> cfg.members[1].priority = 10 # 修改当前secondary节点优先级为10
10
(4) 生效优先级配置
udb-h332hu4d:PRIMARY> rs.reconfig(cfg)
从节点执行命令报错
在进行节点优先级修改之后,primary节点和secondary节点的身份可能会发生切换,此时原来的primary节点可能变成了secondary节点。那么如何在从节点执行相关查看命令呢?有以下几种方案:
(1) 基于session的,退出就失效
udb-h332hu4d:SECONDARY> db.getMongo().setSlaveOk()
(2) 临时生效
udb-h332hu4d:SECONDARY> rs.slaveOk()
(3) 永久生效,编辑用户家目录的隐藏文件.mongorc.js,在其中加入如下行即可:
rs.slaveOk()
验证修改后Primary与Secondary切换情况
在进行节点优先级修改后,如果有非Primary节点的优先级被提高到大于Primary节点的优先级,很快就会从高优先级的节点中重新选举新主节点。在修改过程中,需要注意以下几点:
- 优先
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7317.html
