mongodb复制节点停留在“STARTUP2”,optimeDate为1970年

时间:2013-06-18 23:00:12

标签: mongodb

我刚刚设置了三个节点的副本集。第三个节点卡在stateStr STARTUP2上,带有“optimeDate”:ISODate(“1970-01-01T00:00:00Z”)。但它显示没有错误消息。这没关系。在主要rs.status()yeilds

{
    "set" : "qdit",
    "date" : ISODate("2013-06-18T22:49:41Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "q.example.com:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 2940,
            "optime" : {
                "t" : 1371593311,
                "i" : 1
            },
            "optimeDate" : ISODate("2013-06-18T22:08:31Z"),
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "q1.example.com:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 457,
            "optime" : {
                "t" : 1371593311,
                "i" : 1
            },
            "optimeDate" : ISODate("2013-06-18T22:08:31Z"),
            "lastHeartbeat" : ISODate("2013-06-18T22:49:40Z"),
            "lastHeartbeatRecv" : ISODate("2013-06-18T22:49:40Z"),
            "pingMs" : 0,
            "syncingTo" : "twitnot.es:27017"
        },
        {
            "_id" : 2,
            "name" : "q2.example.com:27017",
            "health" : 1,
            "state" : 5,
            "stateStr" : "STARTUP2",
            "uptime" : 300,
            "optime" : {
                "t" : 0,
                "i" : 0
            },
            "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
            "lastHeartbeat" : ISODate("2013-06-18T22:49:40Z"),
            "lastHeartbeatRecv" : ISODate("2013-06-18T22:49:41Z"),
            "pingMs" : 7
        }
    ],
    "ok" : 1
}

db.printSlaveReplicationInfo()on yield

source:   qdit1.queuedit.com:27017
     syncedTo: Tue Jun 18 2013 22:08:31 GMT+0000 (UTC)
         = 2894 secs ago (0.8hrs)
source:   qdit2.queuedit.com:27017
     syncedTo: Thu Jan 01 1970 00:00:00 GMT+0000 (UTC)
         = 1371596205 secs ago (380998.95hrs)

这没关系。另外,我如何测试我的复制,特别是第三个节点

1 个答案:

答案 0 :(得分:5)

一旦副本集完全同步,您的STARTUP2状态就会得到解决。这通常发生在副本由于硬件或任何其他问题而滞后时,您要么重新启动mongod实例,要么重新启动节点。请注意,STARTUP阶段与STARTUP2阶段完全不同,STARTUP2阶段已完成解析配置,并在后期阶段分支线程以及执行初始同步。仅当db.printReplicationInfo()中显示的oplog第一个事件时间晚于您在db.printSlaveReplicationInfo()命令中看到的相应从属节点的时间时,此阶段才会解析,在这种情况下,将完全手动重新同步必要。因此,如果此时间位于PRIMARY实例中oplog的第一个和最后一个事件时间内,则STARTUP2阶段应该只是暂时的。