2015-04-27 74 views
0

我想初始化一個mongodb副本集,但是每當我添加新節點時,它永遠不會讓它經過狀態3(RECOVERING)。下面是從rs.status()快照:初始化mongodb副本集永遠不會完成

rs0:OTHER> rs.status() 
{ 
    "set" : "rs0", 
    "date" : ISODate("2015-04-27T14:09:21.973Z"), 
    "myState" : 3, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "10.0.1.184:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 6899, 
      "optime" : Timestamp(1430143759, 9), 
      "optimeDate" : ISODate("2015-04-27T14:09:19Z"), 
      "lastHeartbeat" : ISODate("2015-04-27T14:09:20.133Z"), 
      "lastHeartbeatRecv" : ISODate("2015-04-27T14:09:20.160Z"), 
      "pingMs" : 0, 
      "electionTime" : Timestamp(1430127299, 1), 
      "electionDate" : ISODate("2015-04-27T09:34:59Z"), 
      "configVersion" : 109483 
     }, 
     { 
      "_id" : 1, 
      "name" : "10.0.1.119:27017", 
      "health" : 1, 
      "state" : 7, 
      "stateStr" : "ARBITER", 
      "uptime" : 6899, 
      "lastHeartbeat" : ISODate("2015-04-27T14:09:20.133Z"), 
      "lastHeartbeatRecv" : ISODate("2015-04-27T14:09:20.166Z"), 
      "pingMs" : 0, 
      "configVersion" : 109483 
     }, 
     { 
      "_id" : 2, 
      "name" : "10.0.1.179:27017", 
      "health" : 1, 
      "state" : 3, 
      "stateStr" : "RECOVERING", 
      "uptime" : 15651, 
      "optime" : Timestamp(1430136863, 2), 
      "optimeDate" : ISODate("2015-04-27T12:14:23Z"), 
      "infoMessage" : "could not find member to sync from", 
      "configVersion" : 109483, 
      "self" : true 
     } 
    ], 
    "ok" : 1 
} 

偶爾infoMessage「找不到成員從同步」是在新節點上可見。我注意到,當前小學的oplog只有0.12小時(1.7GB),並且大約需要花費大約1小時。 2小時複製大部分數據集(如網絡使用情況所示)。

假設oplog必須大於2小時才能成功完成初始同步,是否正確?

+0

oplog窗口是一個估計,但是 - 您的oplog必須足夠大以容納在初始同步的數據複製階段發生的所有寫入流量。這可以通過搜索您的10.0.1.179:27017「過於趕上」來證實,表明您已經從oplog中脫落。 –

+0

你解決了你的問題嗎? – kommradHomer

+0

@kommradHomer - 是的謝謝你。我們的數據吞吐量對於默認的OPLOG大小來說太高。將OPLOG增加到50GB允許同步完成。 – MarcF

回答

0

oplog確實需要比預期的兩個副本之間的數據同步時間更長(及時)。磁盤便宜,所以我們將OPLOG增加到了50GB,並重新啓動了同步,第一次工作。