2013-08-12 37 views
0

我在EC2上設置mongodb的主/從複製。但我看不到複製發生。當我在master上「顯示dbs」時,它會顯示所有的dbs。mongodb複製未在EC2上運行

但是,當我在副本上做同樣的事情時,它不會顯示任何db。

請幫我排除故障。

在Ubuntu 12.04 EC2實例

dpkg -l | grep mongo 
ii mongodb-10gen     2.4.5      An object/document-oriented database 

rs.config() 
{ 
    "_id" : "ittw", 
    "version" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "host" : "ip-10-304-48-93:27017" 
     } 
    ] 
} 

rs.config() 
{ 
    "_id" : "ittw", 
    "version" : 2, 
    "members" : [ 
     { 
      "_id" : 0, 
      "host" : "domU-17-31-19-16-88-5F:27017" 
     }, 
     { 
      "_id" : 1, 
      "host" : "ec2-50-321-52-908.compute-1.amazonaws.com:27017" 
     } 
    ] 
} 
rs.status() // replica 
{ 
    "set" : "ittw", 
    "date" : ISODate("2013-08-12T06:55:57Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "$ip:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 356039, 
      "optime" : Timestamp(1375934685, 1), 
      "optimeDate" : ISODate("2013-08-08T04:04:45Z"), 
      "self" : true 
     } 
    ], 
    "ok" : 1 
} 



rs.status() //Master 
{ 
    "set" : "ittw", 
    "date" : ISODate("2013-08-12T06:57:19Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "PRI_IP:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 356543, 
      "optime" : Timestamp(1376289725, 1), 
      "optimeDate" : ISODate("2013-08-12T06:42:05Z"), 
      "self" : true 
     }, 
     { 
      "_id" : 1, 
      "name" : "REP_IP:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 355869, 
      "optime" : Timestamp(1375934685, 1), 
      "optimeDate" : ISODate("2013-08-08T04:04:45Z"), 
      "lastHeartbeat" : ISODate("2013-08-12T06:57:17Z"), 
      "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), 
      "pingMs" : 1 
     } 
    ], 
    "ok" : 1 
} 

我看到REPLIC日誌下面幾行:

Mon Aug 12 07:29:53.889 [initandlisten] connection accepted from $PRIMARY_IP:51376 #11921 (1 connection now open) 
Mon Aug 12 07:30:23.922 [conn11921] end connection $PRIMARY_IP:51376 (0 connections now open) 
Mon Aug 12 07:30:23.925 [initandlisten] connection accepted from $PRIMARY_IP:51377 #11922 (1 connection now open) 
Mon Aug 12 07:30:53.958 [conn11922] end connection $PRIMARY_IP:51377 (0 connections now open) 

編輯:於

做rs.initiate()和rs.add()後
rs.status() 
{ 
    "set" : "ittw", 
    "date" : ISODate("2013-08-12T18:25:20Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "PRIMARY_IP:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 1225, 
      "optime" : Timestamp(1376331887, 1), 
      "optimeDate" : ISODate("2013-08-12T18:24:47Z"), 
      "self" : true 
     }, 
     { 
      "_id" : 1, 
      "name" : "SECONDARY_IP:27017", 
      "health" : 1, 
      "state" : 2, 
      "stateStr" : "SECONDARY", 
      "uptime" : 33, 
      "optime" : Timestamp(1376331887, 1), 
      "optimeDate" : ISODate("2013-08-12T18:24:47Z"), 
      "lastHeartbeat" : ISODate("2013-08-12T18:25:20Z"), 
      "lastHeartbeatRecv" : ISODate("2013-08-12T18:25:20Z"), 
      "pingMs" : 10, 
      "syncingTo" : "ip-10-190-185-227:27017" 
     } 
    ], 
    "ok" : 1 
} 
+0

我打算假設你刪除了ips。你有兩個初選如何。有關於這個的一個錯誤,這是什麼MongoDB版本? – Sammaye

+0

這是shell版本,嗯,我會假設MongoDB的版本是2.4.5,但是很有必要仔細檢查一下。奇怪的是,副本似乎無法與原來的主通信.... hmm – Sammaye

+0

對我來說,它看起來像你根本沒有發出''rs.initiate()''。你可以在你的問題中添加rs.config()在兩臺機器上的外觀嗎? – Derick

回答

0

它似乎沒有選擇一個獨特的小學,嘗試如果這有助於選擇一個獨特的小學。

,當你開始你的兩個副本集成員,確保他們都對你提出的主要的複製集參數的值相同,問題

rs.initiate() 
rs.conf() 

。然後嘗試添加強制優先次序:

rs.add({ "_id": 1, "host": "mongodbd3.example.net:27017", "priority": 0 }) 

因此,它只能選擇次要。

+1

我認爲重點是在主體上它不應該既能夠選擇主要,也不管從物理上來說,事實上,在主要被引入並且輔助被添加到集合之後,輔助不能看到主要 – Sammaye