2012-09-20 43 views
0

我試圖配置一個具有兩個節點的副本集,但是當我執行rs.add("node2")然後rs.status()時,兩個節點都設置爲PRIMARY。另外,當我在另一個節點上運行rs.status()時,出現的唯一節點就是本地節點。mongodb - 副本集中的所有節點都是主要的

EDIT1: rs.status()輸出:

{ 
     "set" : "rs0", 
     "date" : ISODate("2012-09-22T01:01:12Z"), 
     "myState" : 1, 
     "members" : [ 
       { 
         "_id" : 0, 
         "name" : "node1:27017", 
         "health" : 1, 
         "state" : 1, 
         "stateStr" : "PRIMARY", 
         "uptime" : 70968, 
         "optime" : Timestamp(1348207012000, 1), 
         "optimeDate" : ISODate("2012-09-21T05:56:52Z"), 
         "self" : true 
       }, 
       { 
         "_id" : 1, 
         "name" : "node2:27017", 
         "health" : 1, 
         "state" : 1, 
         "stateStr" : "PRIMARY", 
         "uptime" : 68660, 
         "optime" : Timestamp(1348205568000, 1), 
         "optimeDate" : ISODate("2012-09-21T05:32:48Z"), 
         "lastHeartbeat" : ISODate("2012-09-22T01:01:11Z"), 
         "pingMs" : 0 
       } 
     ], 
     "ok" : 1 
} 

EDIT2:我試過3個不同的節點做同樣的事情,我得到了相同的結果(rs.status()說我有一個副本有三個主要節點設置)。這個問題是否可能是由網絡的某些特定配置引起的?

+2

您不應創建具有偶數個節點的ReplicaSet。如果您有空間問題,請添加一個仲裁節點(沒有存儲空間,但可以投票選擇主節點)作爲第三個節點。 –

+0

你可以用'rs.status()'的輸出更新你的問題嗎?確保在發佈之前使輸出匿名。 –

+0

已更新它。對於遲到的回覆感到抱歉 – miguel

回答

1

如果您在rs.add()之前從副本集的兩個成員中發出rs.initiate(),那麼兩者都會成爲主要副本。

您應該只使用rs.initiate()在副本集的成員之一,你打算是主要最初一個。那麼你可以將rs.add()的其他成員複製到集合中。

+0

我剛剛意識到這一點。謝謝! – miguel

+3

但你如何解決它? – schmoopy

0

答案上面並沒有回答如何解決它。我有點用試驗和錯誤來完成它。

我已經清除了數據目錄(如在rm -rf *)和重新啓動這些主節點,除了一個。我加回他們。它似乎工作。

EDIT1
下可愛的小伎倆似乎沒有爲我工作,


所以,我登錄到使用mongo <hostname>:27018

這裏的殼怎麼看起來像mongod控制檯:

rs2:PRIMARY> rs.conf() 
{ 
    "_id" : "rs2", 
    "version" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "host" : "ip-10-159-42-911:27018" 
     } 
    ] 
} 

我決定去查將它改爲次要的。所以,

rs2:PRIMARY> var c = { 
... "_id" : "rs2", 
... "version" : 1, 
... "members" : [ 
...  { 
...  "_id" : 1, 
...  "host" : "ip-10-159-42-911:27018", 
...  "priority": 0.5 
...  } 
... ] 
... } 

rs2:PRIMARY> rs.reconfig(c, { "force": true}) 
Mon Nov 11 19:46:39.244 DBClientCursor::init call() failed 
Mon Nov 11 19:46:39.245 trying reconnect to ip-10-159-42-911:27018 
Mon Nov 11 19:46:39.245 reconnect ip-10-159-42-911:27018 ok 
reconnected to server after rs command (which is normal) 

rs2:SECONDARY> 

現在它是次要的。我不知道是否有更好的方法。但是,這似乎工作。

HTH

相關問題