我刚刚设置了三个节点的副本集。第三个节点卡在 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)
这可以吗。另外我如何测试我的复制,尤其是第三个节点
最佳答案
一旦副本集完全同步,您的 STARTUP2 状态应该会得到解决。当副本由于硬件或任何其他问题而滞后并且您重新启动 mongod 实例或重新启动节点时,通常会发生这种情况。请注意,STARTUP 阶段与 STARTUP2 阶段完全不同,STARTUP2 阶段已完成配置解析,并在稍后阶段 fork 线程以及执行初始同步。只有当 db.printReplicationInfo() 中看到的 oplog 第一个事件时间晚于您在相应从节点的 db.printSlaveReplicationInfo() 命令中看到的时间时,此阶段才会解决,在这种情况下,将进行完全手动重新同步必要的。所以如果这个时间在 PRIMARY 实例中 oplog 的第一个和最后一个事件时间之内,那么 STARTUP2 阶段应该只是暂时的。
关于mongodb 复制节点卡在 "STARTUP2",optimeDate 为 1970,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17180392/