oplog过小会引起主从同步失败,调整oplog大小是比较常用的操作。步骤如下
1、登录到要调整oplog大小的机器,如果这台机器是主节点,让主节点退位
rs.stepDown() ##退位主节点,可选
2、关闭当前节点(保证该节点已经是从几点了)
db.shutdownServer()
3、将当前节点以单机模式运行,只需修改下端口号和复制集名称即可
vim ./mongodb.conf
port=47030 #端口需要临时改成别的
#replSet=test#注释掉复制集名称
mongd --config ./mongodb.conf ##启动
4、临时将oplog中最后一条insert操作保存到其它集合
use local
var cursor=db.oplog.rs.find()
var cursor = db.oplog.rs.find({"op":"i"})
var lastInsert = cursor.sort({"$natural":-1}).limit(1).next()
db.tempLastOp.save(lastInsert)
db.tempLastOp.findOne() ##验证下确保插入了,非常重要
5、删除当前oplog
db.oplog.rs.drop()
6、创建一个新的oplog,下面是200M的oplog(以字节表示)
db.createCollection("oplog.rs",{"capped":true,"size":209715200})
7、将最后一条操作记录写回oplog
var temp=db.tempLastOp.findOne()
db.oplog.rs.insert(temp)
db.oplog.rs.findOne() ##验证下确实插入成功,非常重要
8、恢复之前的mongdb的配置。改回之前的端口,和复制集的名称
9、重新启动,会自动进行同步
10、等一会后,可以调整之前的节点优先级使之成为主节点
附加:oplog调大即可,不用刻意调小。他不会占用过多的cpu和内存资源。