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

2023-04-27  本文已影响0人  Bogon

延迟节点反应的是数据库在较早时刻的状态,比如一个配置了延迟时间为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

上一篇下一篇

猜你喜欢

热点阅读