美文网首页
MongoDB 复制集副本节点成员

MongoDB 复制集副本节点成员

作者: 非典型程序员 | 来源:发表于2017-06-29 15:35 被阅读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> 
    

    相关文章

      网友评论

          本文标题:MongoDB 复制集副本节点成员

          本文链接:https://www.haomeiwen.com/subject/vsbgqxtx.html