美文网首页
【mongoDB】mongoDB设置节点为延迟节点

【mongoDB】mongoDB设置节点为延迟节点

作者: Bogon | 来源:发表于2023-04-27 07:39 被阅读0次

    延迟节点反应的是数据库在较早时刻的状态,比如一个配置了延迟时间为3600秒的延迟节点,那么这个延迟节点的数据就是primary一个小时之前的状态。

    延迟节点存在的意义主要是解决应用层面数据错误的问题,假设管理员对数据库做了一个误操作,如果数据是时时传输的话,那么这个误操作立刻就会被备库同步,这样就导致了备库数据的损坏。而延迟节点就可以解决这样的问题,因为这个误操作需要等待一个延迟时间才能同步到备库。

    image.png image.png

    延迟节点的要求:

    1. 必须是优先级为0,因为延迟节点的延迟属性,很显然它不具备成为主库的条件
    
    2. 必须配置掩藏属性,因为要始终防止应用程序查看和查询延迟成员
    
    3. 配置投票属性为0,不参与选举,可以提高数据库主从切换性能
    

    具体步骤如下:

    1. 确认当前节点的副本集名称和节点名称,使用rs.status()命令查看。

    2. 连接到主节点,使用rs.add()命令将节点添加为延迟成员,并设置hidden属性为true,示例命令:

    
    rs.add({"host": "xx.xx.xx.xx:XX", "priority": 0, "slaveDelay": 86400, "hidden":true,"votes": 0})
    
    
    rs.add(
    {
        "host": "xx.xx.xx.xx:XX",
        "priority": 0,
        "slaveDelay": 86400,
        "hidden": true,
        "votes": 0
    }
    )
    
    

    其中,priority为节点优先级,设置为0表示延迟节点不参与选举; slaveDelay为延迟时间,单位为秒;hidden为掩藏属性,设置为true;votes为是否参与选举投票,设置为0表示不参与

    1. 使用rs.status()命令查看节点状态,确认延迟成员已经成功添加,并且hidden属性已经设置为true。

    2. 在应用程序中,使用rs.slaveOk()命令开启读操作,确保应用程序只能从主节点或其他可读成员中读取数据,而不能直接访问延迟成员。

    注意:

    1. 设置掩藏属性后,延迟成员仍然可以从主节点同步数据,但是不能参与读写操作。如果需要将延迟成员恢复为可读成员,可以使用rs.reconfig()命令重新配置副本集。

    2.在修改投票属性之后,需要等待一段时间,让副本集重新选举主节点,才能生效。同时,需要注意投票属性的设置,以确保副本集的可用性和稳定性。

    在MongoDB中,可以使用rs.reconfig()命令来重新配置副本集,修改节点的投票属性。具体步骤如下:

    确认当前节点的副本集名称和节点名称,使用rs.status()命令查看。

    连接到主节点,使用rs.reconfig()命令重新配置副本集,示例命令:

    rs.reconfig(
    {
        "_id": "副本集名称",
        "members": [{
            "_id": 0,
            "host": "xx.xx.xx.xx:XX",
            "priority": 1
        }, {
            "_id": 1,
            "host": "xx.xx.xx.xx:XX",
            "priority": 1
        }, {
            "_id": 2,
            "host": "xx.xx.xx.xx:XX",
            "priority": 1
        },{
            "_id": 3,
            "host": "xx.xx.xx.xx:XX",
            "priority": 0,
             "votes": 0,
             "slaveDelay": 86400,
             "hidden": true
        }]
    }
    )
    
    

    参考

    MongoDB添加延时节点
    https://www.cnblogs.com/xinghebuluo/p/6025610.html

    MongoDB中PSD(Primary-Secondary-Delay)延迟节点架构的坑
    https://blog.51cto.com/u_15078930/5411876

    MongoDB复制集设置复制延迟节点
    https://www.cnblogs.com/abclife/p/16851637.html

    MongoDB 读偏好设置中增加最大有效延迟时间的参数
    https://www.cnblogs.com/xuliuzai/p/10951666.html

    MongoDB中的Capped Collection
    https://www.cnblogs.com/abclife/p/17264528.html

    设置隐藏节点和不可投票节点
    https://www.cnblogs.com/abclife/p/17345803.html

    关于MongoDB Oplog窗口时间
    https://www.jianshu.com/p/e988b5184780

    一次线上MongoDB慢查询问题排查处理记录
    https://www.jianshu.com/p/e988b5184780

    记一次MongoDB故障排查的过程
    https://mp.weixin.qq.com/s/_XEV_1FCJ0x3iwRVex3mIw

    相关文章

      网友评论

          本文标题:【mongoDB】mongoDB设置节点为延迟节点

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