我已經設置了一個包含4個服務器的副本集。RS102 MongoDB on ReplicaSet
爲了測試目的,我使用GridFS編寫了一個腳本來填充我的數據庫至約150百萬行照片。我的照片大約在15KB左右。 (?!這不應該是使用GridFS的對小文件有問題)
後數小時後,有大約5000萬行,但我在日誌此消息:
replSet error RS102 too stale to catch up, at least from 192.168.0.1:27017
這裏是複製集狀態:
rs.status();
{
"set" : "rsdb",
"date" : ISODate("2012-07-18T09:00:48Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "192.168.0.1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1342601552000,
"i" : 245
},
"optimeDate" : ISODate("2012-07-18T08:52:32Z"),
"self" : true
},
{
"_id" : 1,
"name" : "192.168.0.2:27018",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64770,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 2,
"name" : "192.168.0.3:27019",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64735,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 3,
"name" : "192.168.0.4:27020",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 65075,
"optime" : {
"t" : 1342539085000,
"i" : 3838
},
"optimeDate" : ISODate("2012-07-17T15:31:25Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:46Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
}
],
"ok" : 1
設定仍然接受DATAS,但我有我的3個服務器「DOWN」我應該如何着手修理(更好不是刪除DATAS和重新同步WH呃會過時,但會起作用)?
特別是: 這是因爲太劇烈的腳本?這意味着它在生產中幾乎從未發生過?
我在CentOS 6上運行,我所有的服務器都有2TB,opfile的大小大概是100GB。對於我有4個成員的事實,你會建議將一個仲裁變成仲裁者?感謝您的詳細回覆! – 2012-07-18 10:30:35
另外,在插入大約12小時後出現過時的狀態,如您所說,意味着我的oplog在12小時後充滿了未同步的日誌? – 2012-07-18 10:36:34
最後,如果有三臺服務器中的一臺服務器出現故障,有一臺第四臺服務器的目的是提供安全保障,那麼您建議我們如何將此服務器的角色更改爲:仲裁器,延遲,隱藏..? – 2012-07-18 10:40:29