linux下mongodb的副本集(二)

2014-11-24 10:26:05 · 作者: · 浏览: 1
13 15:18:52 GMT+0800 (CST)
= 5337 secs ago (1.48hrs)
source: 127.0.0.1:10003
syncedTo: Tue Jul 16 2013 16:05:22 GMT+0800 (CST)
= 2547 secs ago (0.71hrs)
source: 127.0.0.1:10002
no replication info, yet. State: ARBITER
source:从库的ip和端口
syncedTo:目前的同步情况,以及最后一次同步的时间
从上面可以看出,在数据库内容不变的情况下他是不同步的,数据库变动就会马上同步。
db.printReplicationInfo()查看oplog的大小和oplog中操作的时间范围
如:configured oplog size: 50MB
log length start to end: 9071secs (2.52hrs)
oplog first event time: Tue Jul 16 2013 14:20:40 GMT+0800 (CST)
oplog last event time: Tue Jul 16 2013 16:51:51 GMT+0800 (CST)
now: Tue Jul 16 2013 17:10:35 GMT+0800 (CST)
这里说明了,oplog配置为50M,日志记录的时间长度等信息
8、删除节点
出于种种原因把,现在准备删除一个节点,空闲出一台服务器
这时使用命令rs.remove("IP+端口")即可移除该节点
如:rs.remove('10.0.0.3:27017')
输出结果:
Tue Jul 16 16:51:52.180 DBClientCursor::init call() failed
Tue Jul 16 16:51:52.210 JavaScript execution failed: Error: error doing query: failed at src/mongo/shell/query.js:L78
Tue Jul 16 16:51:52.229 trying reconnect to 127.0.0.1:10001
Tue Jul 16 16:51:52.231 reconnect 127.0.0.1:10001 ok
这样:我们用rs.status就可以查看到该节点已经没有了
9、同步文件
主节点的操作记录在oplog里 (operation logs) ,oplog存储在一个特殊的数据库中,叫:local,而oplog就在oplog.rs里面
我们可以通过:db.oplog.rs.find()查看操作日志记录
oplog中每个文档记录了主节点的一个操作:文档中的键:
ts:操作的时间戳,由4个字节的时间戳和4个字节的计数器组成
op:操作类型,只有一个字节的代码(如:u--update,i-insert n--null)
ns:执行操作的命名空间,就是集合名
o:指定了执行的文档,就是要插入的数据,更新的数据等等
10、从节点的同步问题
从节点第一次启动,会对主节点数据进行完整的同步,这样花费大量的时间,如果从节点的操作已经被主节点落下太远了,从节点就会跟不上,因为主节点数据太新了,这里可能是从节点出现故障或者宕机,或者是从节点分担了主节点作为读服务器,这样资源被消耗,疲于应付读取而无法同步,这样从节点的数据就更不上了
我们可以通过:{‘resync’:1}命令来手动执行重新同步,也可以在启动从节点的时候加入参数:--autoresync来重新同步。重新同步代价很高,应尽量避免,方法就是配置足够大的oplog