• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

​MongoDB复制集相关方法使用(五)

MongoDB 彭东稳 9年前 (2016-03-19) 30090次浏览 已收录 0个评论

这里我们把复制集中可用的方法都实验一遍,帮助我们更好地来理解复制集。提前说明这些方法的使用是基于Mongodb3.2版本来的,看这篇文章之前需要先看上一篇文章。

介绍一下复制集可用的相关方法

rs.help()

#查看(rs)复制集相关的方法.

rs.status()

#返回复制集的当前状态,使用的数据来源于副本集中其他成员发送的心跳包.

rs.initiate()

#简单初始化一个新的复制集.

rs.initiate(cfg)

#配置复制集,采用新的复制集配置对象(配置文件).

rs.conf()

#返回复制集配置文件.

rs.reconfig(cfg)

#通过重新应用复制集配置文件来为复制集更新新配置,这个操作只能在主节点执行,会短暂断开连接.

rs.add(hostportstr)

#添加一个成员到复制集,会短暂断开连接.

rs.add(membercfgobj)

#添加一个成员到配置文档,会短暂断开连接.

rs.addArb(hostportstr)

#添加一个ARBITER成员到复制集.

rs.stepDown([stepdownSecs, catchUpSecs])

#让当前的主节点变为从节点并触发选举,会短暂断开连接.

rs.syncFrom(hostportstr)

#设置复制集节点从哪个节点处同步数据,将会覆盖默认选取逻辑.

rs.freeze(secs)

#控制当前节点在一段时间内选举成为主节点.

rs.remove(hostportstr)

#从复制集中移除一个成员,会短暂断开连接.

rs.slaveOk()

#用来开启从节点是否有查询权限,值为true时表示开启查询(需要在从节点执行rs.slaveOk.

rs.printReplicationInfo()

#检查主节点oplog大小和时间范围.

rs.printSlaveReplicationInfo()

#检查从节点复制状态.

db.isMaster() & rs.isMaster()

#检查谁是主节点,如果isMastertrue则表示此节点为主节点,而应用程序就是靠isMaster来识别主从节点并且isMaster对隐藏节点不可见,而rs.status可以显示所有成员信息.

 

rs.stepDown([stepdownSecs, catchUpSecs])

让当前主节点成为从节点并触发选举,并可以在切换时给一个时间(秒),表示在这个时间内此节点不能被选为主节点。这里我的主节点是27017.

192.168.60.10:27017

你可以看到,当主节点执行延迟2秒进行主从切换操作后,主节点立马会变成从节点,标识符PRIMARY会变成SECONDARY,使用rs.isMaster看看状态信息,发现主从已经调换但投票节点还是投票节点,它不会有任何改变。

192.168.60.10:27018

看看从节点会话,标识符会立马从SECONDARY变成PRIMARY

 

rs.reconfig(cfg)

通过重新应用复制集配置文件来为复制集更新新配置,这个操作只能在主节点执行。复制集的配置文档存在local.system.replset集合中。

 

rs.remove(hostportstr)

从复制集中移除一个成员,会短暂断开连接,现在我们来移除ARBITER节点,目前复制集还有两个成员,一个主节点(192.168.60.10:27018)和一个从节点(192.168.60.10:27017.具体操作如下:

移除完192.168.60.10:27019节点后,可以看到复制集状态信息中已经没有这个节点的信息了,包括复制集配置文档中也没有此节点信息了。当复制集还剩下两个节点时,如果此时有一个节点挂掉的话,那么复制集容灾就不满足2/1原则(剩余节点没有大于总节点数),那么接下来剩余的一个节点就会是从节点故而整个复制集变得不可用。下面模拟27017故障然后看看27018节点的变化。

192.168.60.10.:27017

192.168.60.10.:27018

 

rs.addArb(hostportstr)

添加一个ARBITER成员到复制集,只能在主节点上操作,所以我们要先把27017节点启动起来,重新选举一个主节点。

192.168.60.10:27017

192.168.60.10:27019

 

rs.add(hostportstr)

添加一个成员到复制集,会短暂断开连接。下面创建一个新的节点(27010)并启动,然后加入到现在的复制集中。

192.168.60.10:27010

192.168.60.10:27017

192.168.60.10:27010

 

rs.printReplicationInfo()

检查主节点oplog大小和时间范围.

 

rs.printSlaveReplicationInfo()

检查从节点复制状态.


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (3)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!