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