MongoDB 复制集副本节点成员

2017-06-29  本文已影响90人  非典型程序员

优先级为0的节点(Priority 0 Replica Set Members)

优先级为 0 的副本节点不会被选举成为主节点,同时也不回触发选举执行。这个节点跟其他正常的副本节点一样,维护着一份数据的拷贝,接收 read 操作,也参与主节点的选取。优先级 0 的节点通常可以用作了冷备份节点。

节点配置:

  1. 获取复制集节点配置信息
test-set:PRIMARY> cfg = rs.conf()
test-set:PRIMARY>
  1. 修改节点 Priority
test-set:PRIMARY> cfg.members[2].priority = 0
0
test-set:PRIMARY>
  1. 重写配置
test-set:PRIMARY> rs.reconfig(cfg)
{ "ok" : 1 }
test-set:PRIMARY> 

这里需要注意的是,配置操作只能在 PRIMARY 节点进行。其次,如果需要将主节点的
Priority 设置为 0 ,必须使用 rs.stepDown()
将主节点降为副本节点。

隐藏节点(Hidden Replica Set Members)

隐藏节点首先是优先级为 0 的节点,同样维护着一份数据的拷贝,但是不接收 read 操作,也可不参与主节点选取投票。使用 db.isMaster()
也不会展示这个节点。

隐藏节点拥有与其他副本节点相当的工作负载能力。因为客户端的 read 请求不会被分发到隐藏节点,所以除了基本的复制操作之外不会其他的操作造成负载压力。基于这样的特性,隐藏节点可以做一些专门的操作,如备份和报告。

隐藏节点既可以参与主节点的选取投票,也可以不参与主节点选举投票。当设置为不参与投票时,需要确保剩下的节点能够成功选取出主节点。

节点配置:

test-set:PRIMARY> cfg = rs.conf()
test-set:PRIMARY> cfg.members[2].priority = 0
test-set:PRIMARY> cfg.members[2].hidden = true
#  votes  设置为0时,不能参与投票取主节点
test-set:PRIMARY> cfg.members[2].votes = 0 
test-set:PRIMARY> rs.reconfig(cfg)
{ "ok" : 1 }
test-set:PRIMARY> 

延时节点(Delayed Replica Set Members)

我们可以通过设置 “延时备份节点” 的方式来防止诸如误删除等的误操作,延时节点特性:

  1. 延时节点必须是优先级为 0 的节点,避免升级成为主节点。
  2. 应该设置成为隐藏节点,避免客户端请求被转发到该该节点。
  3. 当 votes 设置为1时,参与投票取主节点

节点配置:

test-set:PRIMARY> cfg = rs.conf()
test-set:PRIMARY> cfg.members[2].priority = 0
test-set:PRIMARY> cfg.members[2].hidden = true
#  votes  设置为0时,不能参与投票取主节点
test-set:PRIMARY> cfg.members[2].votes = 0 
# 单位秒
test-set:PRIMARY> cfg.members[2].slaveDelay = 3600
test-set:PRIMARY> rs.reconfig(cfg)
{ "ok" : 1 }
test-set:PRIMARY> 
上一篇下一篇

猜你喜欢

热点阅读