2016-02-26 27 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