[英]Mongodb replica Set initially starting in SECONDARY Mode
我已經制作了一個具有一個主要,次要和仲裁者的mongodb copysetSet。
我面臨的問題是,當我最初啟動mongodb服務器時,它是在輔助模式下啟動的
最初是在終端上鍵入mongo時顯示為
ubsc:SECONDARY>
我已經使用創建了一個副本集
config = {with all my server details }
rs.reconfig(config)
我也嘗試過使用rs.add(serverhoststr)選項。
這在我的mongo shell輸出和日志文件下面
ubsc:PRIMARY> rs.status()
{
"set" : "ubsc",
"date" : ISODate("2013-10-31T19:09:26Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "mongoA:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2210,
"optime" : Timestamp(1383246016, 1),
"optimeDate" : ISODate("2013-10-31T19:00:16Z"),
"self" : true
},
{
"_id" : 1,
"name" : "mongoB:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 576,
"optime" : Timestamp(1383246016, 1),
"optimeDate" : ISODate("2013-10-31T19:00:16Z"),
"lastHeartbeat" : ISODate("2013-10-31T19:09:26Z"),
"lastHeartbeatRecv" : ISODate("2013-10-31T19:09:24Z"),
"pingMs" : 0,
"syncingTo" : "192.168.2.67:27017"
},
{
"_id" : 2,
"name" : "mongoC:27019",
"health" : 1,
"state" : 10,
"stateStr" : "ARBITER",
"uptime" : 550,
"lastHeartbeat" : ISODate("2013-10-31T19:09:26Z"),
"lastHeartbeatRecv" : ISODate("2013-10-31T19:09:25Z"),
"pingMs" : 0
}
],
"ok" : 1
}
mongodb日志
Fri Nov 1 01:22:00.981 [initandlisten] MongoDB starting : pid=13177 port=27017 dbpath=/data/mongodb 64-bit host=MLDev5
Fri Nov 1 01:22:00.982 [initandlisten] db version v2.4.6
Fri Nov 1 01:22:00.982 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673
Fri Nov 1 01:22:00.982 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Fri Nov 1 01:22:00.982 [initandlisten] allocator: tcmalloc
Fri Nov 1 01:22:00.982 [initandlisten] options: { config: "mongod1.conf", dbpath: "/data/mongodb", fork: "true", logpath: "/data/mongodb/mongodb.log", nojournal: "true", port: 27017, replSet: "ubsc", rest: "true" }
Fri Nov 1 01:22:01.000 [initandlisten] waiting for connections on port 27017
Fri Nov 1 01:22:01.004 [websvr] admin web console waiting for connections on port 28017
Fri Nov 1 01:22:01.008 [rsStart] replSet I am MongoA:27017
Fri Nov 1 01:22:01.009 [rsStart] replSet STARTUP2
rs.conf
ubsc:PRIMARY> rs.conf()
{
"_id" : "ubsc",
"version" : 10,
"members" : [
{
"_id" : 0,
"host" : "mongoA:27017"
},
{
"_id" : 1,
"host" : "mongoB:27018"
},
{
"_id" : 2,
"host" : "mongoC:27019",
"arbiterOnly" : true
}
]
}
請讓我知道為什么最初在輔助模式下啟動服務器?
抱歉給大家帶來麻煩,但是找不到任何解決方案
沒問題要解決-這就是副本集的工作方式。
如果沒有選舉,則節點不能成為主節點。 因此,每個節點(除ARBITER以外的其他節點)都會出現並成為SECONDARY,然后它們中的任何一個節點才能成為PRIMARY(通過選舉)。
因此,這是正常且預期的,不是問題,因此沒有解決方案。
您尚未在任何副本集成員上設置優先級,因此MongoDB可以自由選擇將哪個作為主要對象。 就您而言,MongoA。 MongoC是仲裁者,因此無法成為主要仲裁者。
如果您不想強迫成員成為主要成員,請增加其優先級。 默認優先級為1。
為了確保MongoA是主要的:
var cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
rs.reconfig(cfg)
要確保MongoB是主要的:
var cfg = rs.conf()
cfg.members[0].priority = 1
cfg.members[1].priority = 2
rs.reconfig(cfg)
http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.