我制作了一个mongodb replicaSet,其中包含一个主要,次要和仲裁者。
我面临的问题是,当我最初启动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 log
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
}
]
}
请让我知道为什么最初服务器正在以辅助模式启动?
很抱歉给大家带来麻烦,但找不到任何解决方案
答案 0 :(得分:5)
没有问题需要解决 - 这就是副本设置的工作原理。
如果没有选举,节点就不能成为PRIMARY。因此,每个节点(ARBITER除外)都会出现并成为一个SECONDARY,然后其中一个节点可以成为一个主要节目(通过选举)。
所以这是正常的,预期的,并不是问题,因此没有解决方案。
答案 1 :(得分:2)
您尚未在任何副本集成员上设置优先级,因此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/