我有一個副本集,我試圖升級主內存到更多的內存和升級的磁盤空間。因此,我在新的主服務器上搜索了幾個磁盤,並從輔助服務器rsync了數據並將其添加到副本集。檢查完rs.status()之後,我注意到所有輔助節點都在主節點後面約12小時。所以當我試圖強制新服務器到主要位置時,它將不起作用,因爲它不是最新的。MongoDB的輔助程序沒有趕上
這似乎是一個大問題,因爲如果主要失敗,我們至少需要12個小時,並且有一些將近48個小時。
oplogs全部重疊,oplogsize相當大。我唯一能想到的是我在主服務器上執行了大量的寫入/讀取操作,這可能會使服務器處於鎖定狀態,無法正常工作。
有沒有辦法可能迫使一個輔助追趕主要?
目前有5個服務器最後2個替換2個其他節點。 _id爲6的節點將成爲替換主節點的節點。離主要運行時間最遠的節點超過了48小時。
{
"set" : "gryffindor",
"date" : ISODate("2011-05-12T19:34:57Z"),
"myState" : 2,
"members" : [
{
"_id" : 1,
"name" : "10******:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 20231,
"optime" : {
"t" : 1305057514000,
"i" : 31
},
"optimeDate" : ISODate("2011-05-10T19:58:34Z"),
"lastHeartbeat" : ISODate("2011-05-12T19:34:56Z")
},
{
"_id" : 2,
"name" : "10******:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 20231,
"optime" : {
"t" : 1305056009000,
"i" : 400
},
"optimeDate" : ISODate("2011-05-10T19:33:29Z"),
"lastHeartbeat" : ISODate("2011-05-12T19:34:56Z")
},
{
"_id" : 3,
"name" : "10******:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 20229,
"optime" : {
"t" : 1305228858000,
"i" : 422
},
"optimeDate" : ISODate("2011-05-12T19:34:18Z"),
"lastHeartbeat" : ISODate("2011-05-12T19:34:56Z")
},
{
"_id" : 5,
"name" : "10*******:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 20231,
"optime" : {
"t" : 1305058009000,
"i" : 226
},
"optimeDate" : ISODate("2011-05-10T20:06:49Z"),
"lastHeartbeat" : ISODate("2011-05-12T19:34:56Z")
},
{
"_id" : 6,
"name" : "10*******:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"optime" : {
"t" : 1305050495000,
"i" : 384
},
"optimeDate" : ISODate("2011-05-10T18:01:35Z"),
"self" : true
}
],
"ok" : 1
}
你可以發佈rs.status()的輸出作爲從其中一個副本運行嗎? – 2011-05-12 14:45:23
我想如果你在StackOverflow的姊妹網站ServerFault.com上提出這個問題,你會得到更好的答案 – Theo 2011-05-12 19:42:09
謝謝,我只是這麼做的。 http://serverfault.com/questions/269184/mongodb-secondaries-not-catching-up – Bryan 2011-05-12 19:49:42