[Mongodb 5.0]配置副本集中的节点为延迟节点

前言

如果副本集中的某而节点设置成了延迟节点(Delayed Replica Set Member),那么这个节点将会在一定的延迟时间之后再去Primary节点赋值oplog到自己节点上,然后根据oplog中的内容,实现数据与Primary节点的同步

oplog:mongodb的副本集主要就是通过oplog这个东东,oplog中记录了Primary节点上对mongo数据库的操作,比如增删改查。其他节点的数据拿到这个oplog,然后执行里面的内容,就可以将Primary节点上内容同步到自己节点上,实现了副本集的作用。

场景

我们假设已创建了一个副本集(没创建的可参考前面的文章)如下表格所示:

PSS模式(还有PSA模式) 地址 别名
Secondary 192.168.40.128 节点1
Primary 192.168.40.129 节点2
Secondary 192.168.40.130 节点3

 现在我们要将节点1设置成一个延迟节点,实现在Primary节点上插入一条记录1个小时候,节点1才会将这个记录同步到自己的mongodb数据库中。

步骤

第一步:在Primary节点上通过mongosh连接mongodb。

第二步:获取副本集的配置,然后赋值给变量

cfg = rs.conf()

 [Mongodb 5.0]配置副本集中的节点为延迟节点_第1张图片

第三步:通过cfg这个变量将节点1修改为隐藏节点

cfg.members[1].priority = 0
cfg.members[1].hidden = true
cfg.members[1].secondaryDelaySecs = 3600
#members[1]是因为要设置为延迟节点(192.168.40.128)在members数组索引1的位置上,看上图

 

可以看出延迟节点就是在隐藏节点的基础上多设置一个secondaryDelaySecs属性值。

如果不知道什么是【隐藏节点】看前面文章

第四步: 执行更新配置

rs.reconfig(cfg)

 更新配置后,再次查看配置信息,会发现延迟属性已成功设置,如下:
[Mongodb 5.0]配置副本集中的节点为延迟节点_第2张图片

第五步:验证
我们通过在Primary节点上插入一条数据后,观察其他两个Secondary节点中数据的变化来验证延迟节点是否起效。
首先,我们在Primary节点上执行了一条插入语句,如下:


 然后,我们在节点3上执行查询语句,会发现数据已同步,可以查到在Primary节点上插入的数据,如下图

[Mongodb 5.0]配置副本集中的节点为延迟节点_第3张图片

提示:
要在Secondary节点上执行数据读取(查询)操作,别忘了先执行这条语句:db.getMongo().setReadPref("secondary")
设置副本集允许从Secondary上读数据,否则默认只能从Primary节点上读数据 

接着,我们在节点1(我们的设置成的延迟节点)也来执行查询语句,观察数据是否也同步了 ,结果查询到的数据并未包含Primary上插入的那条数据,如下图:

这说明延迟节点设置生效了,然后我们等待1个小时候,再次执行查询,发现数据同步了,如下:

到此整个过程结束。 

你可能感兴趣的:(mongodb,mongodb,数据库,database)