前言
副本集中的隐藏节点(Hidden members)是一个不能成为Primary节点并且在客户端不可见【1】的节点。隐藏节点虽然不能参加选举成为一个Primary节点,但是它可以参与投票。
隐藏节点主要用于支持延迟节点(Delayed member)
【1】客户端不可见是指例如通过mongosh后者java等是无法通过看到这个节点的
场景
现在我们如下表格的一个副本集,现在想将节点1变为隐藏节点
PSS模式(还有PSA模式) | 地址 | 别名 |
Secondary | 192.168.40.128 | 节点1 |
Primary | 192.168.40.129 | 节点2 |
Secondary | 192.168.40.130 | 节点3 |
步骤
第一步:在Primary节点上通过mongosh连接mongodb。
第二步:获取副本集的配置,然后赋值给变量
cfg = rs.conf()
第三步:通过cfg这个变量将节点1修改为隐藏节点
cfg.members[1].priority = 0
cfg.members[1].hidden = true
#members[1]是因为要设置为隐藏节点的节点1在members数组索引1的位置上,看上图
要变为隐藏节点必须同时将hidden属性的值设置为true,将priority属性的值设置为0
第四步: 执行更新配置
rs.reconfig(cfg)
第五步:验证
此时在副本集的任何一个节点上执行rs.hello(),可以看到如下图中的返回信息中,节点1已经看不到。这也就是开头说的客户端不可见了。
到此设置就成功了。
写在最后
当设置了属性settings.chainingAllowedhttps://www.mongodb.com/docs/manual/reference/replica-configuration/#mongodb-rsconf-rsconf.settings.chainingAllowed
允许Secondary节点从其他Secondary节点同步数据时,Mongodb默认会先考虑从可见节点上进行同步,最后才会考虑从隐藏节点上同步数据。 如果你想让其从隐藏节点上进行同步,需要通过 replSetSyncFrom命令来重写默认值,来指定从哪个目标(隐藏节点)上进行同步,命令用法如下:
db.adminCommand( { replSetSyncFrom: "hostname<:port>" })
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)