ITPub博客

首页 > 数据库 > NoSQL > Mongodb从库不同步故障处理

Mongodb从库不同步故障处理

原创 NoSQL 作者:wzgchen 时间:2015-11-26 19:59:31 0 删除 编辑
mongodb不同步问题:

日志报错如下:
2015-11-23T08:44:46.697+0800 I REPL     [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-23T08:54:46.972+0800 I REPL     [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-23T09:04:47.176+0800 I REPL     [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-23T09:14:47.401+0800 I REPL     [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-23T09:24:47.622+0800 I REPL     [rsBackgroundSync] replSet error RS102 too stale to catch up


通过 rs.status()查看


rs.status()


         "_id" : 5,
                        "name" : "101.130.92.32:27018",
                        "hbglth" : 1,
                        "state" : 3,
                        "stateStr" : "RECOVERING",                                     --状态不是正常的SECONDARY,PRIMARY等状态
                        "optime" : {
                                "t" : 1375816685000,
                                "i" : 2
                        },
                        "optimeDate" : ISODate("2013-08-06T19:18:05Z"),  -- 同步时间也不对,确认各个主从库时间是否一样
                        "self" : true
                },
                {


解决办法:
On the secondary, you can:


    stop the failed mongod
    delete all data in the dbpath (including subdirectories)
    restart it and it will automatically resynchronize itself


SECONDARY 的同步可能无法更上 PRIMARY 插入的速度。这时候当我们查看 rs.status() 状态的时候就会出现 “error RS102 too stale to catch up” 的错误。
Resyncing a Very Stale Replica Set Member 给出了当我们遇到 Error RS102 错误时,该做些什么事。还可以根据 Halted Replication 中的 Increasing the OpLog Size ,调整 OPLOG 的大小为适当的值。我测试中我把OPLOG的值调为20000
复制集过旧,不同步报错
启动slave上的mongodb主进程后一会儿mongodb进程自动退出,在日志里看到有如上所以报错信息:
删除mongodb数据库所在目录下的内容即可,如果mongodb在/a/b/mongodb目录下那么就把/a/b/mongodb目录内的所有的东西都清空即可

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91975/viewspace-1847424/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-05-01

  • 博文量
    383
  • 访问量
    187704