君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

转载自 http://www.cnblogs.com/spnt/

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已经被删除。

副本集的基本维护也就这么多了,能满足大部分的需求。

posted on 2012-12-23 21:59  刺猬的温驯  阅读(175)  评论(0编辑  收藏  举报