Mongodb副本集配置好以后,少不了维护,维护内容也不是很多,主要是现在状态和增删节点等。
在说维护之前,得先说说Mongodb副本集的同步机制。
数据复制的目的是使数据得到最大的可用性,避免单点故障引起的整站不能访问的情况的发生,Mongodb的副本集在同一时刻只有一台服务器是可以写的,副本集的主从复制也是一个异步同步的过程,是slave端从primary端获取日志,然后在自己身上完全顺序的执行日志所记录的各种操作(该日志是不记录查询操作的),这个日志就是local数据库中的oplog.rs表,默认在64位机器上这个表是比较大的,占磁盘大小的5%,oplog.rs的大小可以在启动参数中设定:--oplogSize 1000,单位是M。
在生产环境中建议此值设置的大一些,以防止无法同步的情况发生。
现在开始正式说维护命令
1,查看同步状态
命令db.printSlaveReplicationInfo()可以查看slave延迟情况。
source:从库的ip和端口
syncedTo:目前的同步情况,以及最后一次同步的时间
从上面可以看出,在数据库内容不变的情况下他是不同步的,数据库变动就会马上同步。
2增删节点
1,增加节点
Mongodb可以做到在不停机的情况下无缝增加节点。命令也很简单,两步就可以完成
1,启动新的Mongodb,并指定副本集
2,把副本集添加到"串"中
启动一个新的进程,我用的mongodb4这个目录,端口号4444,然后运行添加命令。
命令的格式是:rs.add("ip+端口号")
注意:这个命令只能用在主库中,可以看到我重新连接到了端口号是3333的主库。
然后查看下状态
可以看到4444已经做为从库添加到了副本集。
大家也可以发现这里多出了一个属性:stateStr和errmsg,这两个属性表示当前同步的状态,到了什么进度
stateStr:RECOVERING//表示正在同步数据,
SECONDARY//表示已经成功同步,可以正常使用。
2,删除节点
出于种种原因把,现在准备删除一个节点,空闲出一台服务器
这时使用命令rs.remove("IP+端口")即可移除该节点
现在我移除刚刚添加上的4444这个节点
4444已经被删除。
副本集的基本维护也就这么多了,能满足大部分的需求。