原文地址:https://blog.csdn.net/qq_30831237/article/details/123912005
隐藏节点
隐藏成员必须始终是优先级为0的成员,因此不能成为主节点。isMaster()方法不显示隐藏成员,然而,隐藏成员可以在选举中投票
设置隐藏节点
cfg = rs.conf()
cfg.members[0].priority = 0
cfg.members[0].hidden = true
rs.reconfig(cfg)
设置完毕后,该从节点的优先级将变为 0 来防止其升职为主节点,同时其也是对应用程序不可见的。在其他节点上执行 isMaster 或是 db.isMaster() 将不会显示隐藏节点。
延迟节点
设置延迟节点
cfg = rs.conf()
cfg.members[0].priority = 0
cfg.members[0].hidden = true
cfg.members[0].slaveDelay = 3600
rs.reconfig(cfg)
PRIMARY
人工干预主从:Primary、Second
1、通过修改权重来改变主从关系
PRIMARY> config=rs.conf() //查看当前配置,存入config变量中。
PRIMARY> config.members[0].priority =5 //修改config变量,第三组成员的优先级为3. [id]值
PRIMARY> rs.reconfig(config) //配置生效
2、通过降级来改变主从关系
rs.freeze(30) //通过执行"rs.freeze(30)"命令,将端口在28011的实例“冰冻”。其中“30”的单位是秒,说明 30秒内这个实例不会参与primary的内部选举工作,即 30秒内此实例不会变成primary角色,那么就充分利用 30秒 的时间来完成切换的工作吧
rs.stepDown(30)//通过执行"rs.stepDown(30)"命令将当前主库“降级”,30秒内这个实例不会把自己选为 primary角色,相当于在30秒内此实例被“降级”了。
总结:但是过了这个时间,将会以权重的方式选举主节点
3、通过停用主节点 然后改变主从关系
SECOND
禁止从升级为主我们可以将 secondary 的优先级设置为 0 来阻止其在选举中升职为 primary
ARBITER
members[0]是指执行rs.config()命令,从上到下排序的值(即你看到的节点是第几个),这个值是从0开始的。比如一共有四个节点的副本集,从上到下的排序为0-1-2-3。0代表第一个;6表示优先级大小,数值越大优先级越高。