2016-02-26 68 views
-1

我有2個mongo副本。一個是主要的,另一個是次要的。如果我停止輔助副本,主副本變爲次要副本,並且我失去了寫入權限。MongoDb主副本成爲次要的,如果次要失敗

這裏是我的CONFIGS:

replica:PRIMARY> rs.status() 
{ 
     "set" : "replica", 
     "date" : ISODate("2016-02-26T11:27:50.140Z"), 
     "myState" : 1, 
     "members" : [ 
       { 
         "_id" : 1, 
         "name" : "192.168.5.44:27017", 
         "health" : 1, 
         "state" : 1, 
         "stateStr" : "PRIMARY", 
         "uptime" : 80, 
         "optime" : Timestamp(1456486069, 1), 
         "optimeDate" : ISODate("2016-02-26T11:27:49Z"), 
         "electionTime" : Timestamp(1456485992, 1), 
         "electionDate" : ISODate("2016-02-26T11:26:32Z"), 
         "configVersion" : 82935, 
         "self" : true 
       }, 
       { 
         "_id" : 2, 
         "name" : "192.168.5.34:27017", 
         "health" : 1, 
         "state" : 2, 
         "stateStr" : "SECONDARY", 
         "uptime" : 79, 
         "optime" : Timestamp(1456486067, 2), 
         "optimeDate" : ISODate("2016-02-26T11:27:47Z"), 
         "lastHeartbeat" : ISODate("2016-02-26T11:27:48.874Z"), 
         "lastHeartbeatRecv" : ISODate("2016-02-26T11:27:48.930Z"), 
         "pingMs" : 1, 
         "syncingTo" : "192.168.5.44:27017", 
         "configVersion" : 82935 
       } 
     ], 
     "ok" : 1 
} 

replica:SECONDARY> rs.status() 
{ 
     "set" : "replica", 
     "date" : ISODate("2016-02-26T11:21:38.574Z"), 
     "myState" : 2, 
     "syncingTo" : "192.168.5.44:27017", 
     "members" : [ 
       { 
         "_id" : 1, 
         "name" : "192.168.5.44:27017", 
         "health" : 1, 
         "state" : 1, 
         "stateStr" : "PRIMARY", 
         "uptime" : 1306, 
         "optime" : Timestamp(1456485695, 3), 
         "optimeDate" : ISODate("2016-02-26T11:21:35Z"), 
         "lastHeartbeat" : ISODate("2016-02-26T11:21:36.602Z"), 
         "lastHeartbeatRecv" : ISODate("2016-02-26T11:21:37.412Z"), 
         "pingMs" : 0, 
         "electionTime" : Timestamp(1456484393, 1), 
         "electionDate" : ISODate("2016-02-26T10:59:53Z"), 
         "configVersion" : 82935 
       }, 
       { 
         "_id" : 2, 
         "name" : "192.168.5.34:27017", 
         "health" : 1, 
         "state" : 2, 
         "stateStr" : "SECONDARY", 
         "uptime" : 1306, 
         "optime" : Timestamp(1456485697, 1), 
         "optimeDate" : ISODate("2016-02-26T11:21:37Z"), 
         "syncingTo" : "192.168.5.44:27017", 
         "configVersion" : 82935, 
         "self" : true 
       } 
     ], 
     "ok" : 1 
} 
replica:SECONDARY> cfg = rs.conf() 
{ 
     "_id" : "replica", 
     "version" : 82935, 
     "members" : [ 
       { 
         "_id" : 1, 
         "host" : "192.168.5.44:27017", 
         "arbiterOnly" : false, 
         "buildIndexes" : true, 
         "hidden" : false, 
         "priority" : 2, 
         "tags" : { 

         }, 
         "slaveDelay" : 0, 
         "votes" : 1 
       }, 
       { 
         "_id" : 2, 
         "host" : "192.168.5.34:27017", 
         "arbiterOnly" : false, 
         "buildIndexes" : true, 
         "hidden" : false, 
         "priority" : 1, 
         "tags" : { 

         }, 
         "slaveDelay" : 0, 
         "votes" : 1 
       } 
     ], 
     "settings" : { 
       "chainingAllowed" : true, 
       "heartbeatTimeoutSecs" : 10, 
       "getLastErrorModes" : { 

       }, 
       "getLastErrorDefaults" : { 
         "w" : 1, 
         "wtimeout" : 0 
       } 
     } 
} 

即使我關閉主副本,二級不會成爲主要的。

如果您需要任何其他細節通知我。 謝謝你的幫助!

回答

2

MongoDB需要成員的多數完成選舉。在2個成員複製集中,兩個成員都必須可以達到多數。如果一個人失敗了,另一個人不能當選爲小學生。

+0

我可以有2個副本和一個仲裁器嗎? 好的得到了答案。 2副本和一個仲裁者是好:) –

+2

@JurePotocnik你可以。這是官方文檔中推薦的最小複製副本設置。 – gzc