3

我刚刚设置了具有三个节点的副本集。第三个节点卡在 stateStr STARTUP2 并带有“optimeDate”:ISODate(“1970-01-01T00:00:00Z”)。但是它没有显示错误消息。这可以吗。在主要 rs.status() 产量

{
    "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() 关于产量

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)

这可以吗。另外我如何测试我的复制,尤其是第三个节点

4

1 回答 1

5

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

于 2014-02-05T20:59:12.140 回答