MongoDB副本集成员添加与删除,属性修改(七)

Priority=0
优先级为0,最低权限、
3.6.2版本,仲裁节点和隐藏节点,无选举权节点的优先级都是且必须是0

优先级为0的节点的特点
  • 此节点丧失了当选Primary的机会。永远不会上位。
  • 此节点正常参与Primary产生的oplog的读取,进行数据备份和命令执行。
  • 此节点正常参与客户端对于数据的读取,进行担当负载均衡的工作。
  • 此节点虽然不能当选Primary但是却可以投票,很民主。
Hidden
Hidden节点,即隐藏节点,隐藏是相对于客户端而言,客户端如果要读取Secondary的数据,永远无法读取Hidden节点的数据,因为设置了Hidden的这个节点对于客户端是透明的,不可见。但是,对于自己的Secondary的群体和Primary来说都是可见的,所以,Hidden依然可以投票,依然要按照oplog进行命令的复制,只是,不参与负载了。Hidden属性的前提是必须是一个Priority=0的节点,所以会具备一些优先级=0的特点,具体如下。
Hidden节点的特点
  • 此节点丧失了当选Primary的机会。永远不会上位。
  • 此节点正常参与Primary产生的oplog的读取,进行数据备份和命令执行。
  • 此节点正常参与客户端对于数据的读取,进行担当负载均衡的工作。
  • 此节点不参与客户端对于数据的读取,不进行负载均衡
  • 此节点虽然不能当选Primary但是却可以投票,也很民主。
删除线体现出它与Priority=0的不同地方, 斜体表现出它比0优先级多出来的特性。如果节点是Hidden,它不参与负载,那么空闲出来的时间可以做一些赋予给它的特殊任务,比如数据备份等等。到应用场景的时候会有用处。
Delayed
Delayed节点的概述
字面上来说,迟延。迟延代表此节点的数据与Primary的数据有一定的迟延,通过设定一个迟延的属性来确定。假设,Primary的数据是10:00的最新数据,我们设置了一个3600秒的迟延参数,那么这个带有迟延的节点的数据或者说命令执行情况(在oplog中)应该只到9:00为止。与主节点有1小时的迟延。有些人可能会问,我们设计分布式数据库要的就是数据能够尽量避免迟延来达到一致,这样才能更好的提供服务,为什么要刻意制造迟延呢?试想这个场景:一个猪一样的队友在mongoDB的Replica集群上面执行了一个Drop操作,这个操作干掉了你的Primary的Collection,这个Drop同时被记录到oplog中去,其他的Secondary看到这个oplog后争相执行,各自干掉了自己的Collection,你苦心存储的岛国片link就这么消失了。。。再怎么抽这个队友没用啊。就像我刚才点其他的草稿把这篇几乎写完的文章冲掉是一个效果。所以,主动的过失避免就显得格外重要。如果你有一个Delayed节点,有一个1000秒的迟延,那么在你发现这个miss之后还有足够的时间可以响应去不让这个Delayed节点执行错误的command,从而挽回你的损失。具体如下。
Delayed节点的特点
  • 此节点必须是一个Priority=0且为Hidden的节点,因为Hidden必须是Priority=0的,所以此节点必须是Hidden的。
  • 此节点虽然又迟延又Hidden但是还是可以投票,也很民主,呵呵。
votes
votes表示成员的票数,一般为0或者1
当设置为0是,此节点不具有选举权,需要注意的是,没有选举权的节点的priority必须为0
更改方法 :
cfg = rs.conf()cfg.members[ 0 ].priority = 0 cfg.members[ 0 ].hidden = true
cfg.members[0].slaveDelay = 7200
cfg.members[0].votes=0rs.reconfig(cfg)

PS:cfg重定义文件,可以理解为变量
priority:权重,hidden:隐藏,salveDelay:延迟,votes:选举权
删除成员方法有两种
一:rs.remove('x.x.x.x.x')
二,cfg=rs.conf()
cfg.members.splice(2,1)
rs.feconfig(cfg)
PS:splice()写需要保留的节点ID,以数组起始

替换副本集成员主机名
cfg =rs.conf()
cfg.members[0].host ='x.x.x.x'
rs.reconfig(cfg)

你可能感兴趣的:(MongoDB)