我正在尝试使用MongoDb创建副本集,服务器主机名为:
主机名 主机名-1 主机名-2
其中每个都有/ etc / hosts文件中详细说明的所有相关主机名(它们都是运行Ubuntu 10.04 64位)
当我在一个节点上执行rs.initiate时,一切似乎都开始好了。运行rs.status();所示:
{
"set" : "vega",
"date" : ISODate("2012-01-22T19:15:55Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "hostname:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1327254848000,
"i" : 1
},
"optimeDate" : ISODate("2012-01-22T17:54:08Z"),
"self" : true
}
],
"ok" : 1
}
当我尝试将新成员添加到副本集时,问题出现了。我使用命令rs.add(hostname-1);我收到以下错误:
{
"assertion" : "need most members up to reconfigure, not ok : vega-1:27017",
"assertionCode" : 13144,
"errmsg" : "db assertion failure",
"ok" : 0
}
我尝试了多种使用主机名,IP地址的组合,无论是否有端口号,我总是遇到同样的问题。主机名正在解析,我已经尝试过ping hostname-1,它运行正常。
是否有人对可能导致此问题的原因有任何想法?
不幸的是,在Mongo文档中没有在真实场景中设置副本集的示例,只在同一台机器上使用三个实例,这显然是无用的。
提前感谢您的帮助!
答案 0 :(得分:14)
在配置中删除它:
bind_ip = 127.0.0.1
该选项目前与mongodb副本集不兼容。
答案 1 :(得分:10)
当您添加尚未“up”的节点时,会发生该错误。听起来“主机名-1”无法访问(不在/ etc / hosts中,没有DNS),或者它可以访问,但没有运行带有replSet
配置参数集的mongodb
答案 2 :(得分:3)
{ "errmsg" : "exception: need most members up to reconfigure, not ok : server2:27017", "code" : 13144, "ok" : 0 }
我在Mongo 2.4.9中遇到了上述错误。我的错误是我没有在新副本成员的mongo配置中指定replSet
。 rs.add("server2:27017")
之后效果很好。
答案 3 :(得分:2)
不幸的是,在Mongo文档中没有在真实场景中设置副本集的示例,只在同一台机器上使用三个实例,这显然是无用的。
同意,这很糟糕。该示例应该从文档中完全删除。
还有另一种启动副本集的方法,即使用rs.configure()
命令。您还可以一次指定所有三个节点,然后发出rs.inititiate()
。
See here以获取在启动之前指定所有节点的示例。
See here了解有关各种命令的详细信息。
答案 4 :(得分:2)
答案 5 :(得分:0)
在将第二个节点添加到节点1之前,您可能需要检查mongodb是否在第二个节点上运行。如果它正在运行rs.add()然后检查rs.status()。