从mongodb中的副本配置开始

时间:2012-11-28 10:38:56

标签: mongodb replication

在mongodb中配置副本集时出错了。我认为我做错了是我在两个节点上都做了一个rs.initialize(),这让它们在某种程度上混淆了。我不确定。

现在我要做的就是重新开始,但我找不到解除初始化节点的方法。所以我按照建议删除了本地* db文件,从而重置了配置。我做到了,现在没有任何作用。

> rs.initiate()
{
    "info2" : "no configuration explicitly specified -- making one",
    "me" : "0.0.0.0:27017",
    "errmsg" : "couldn't initiate : can't find self in the replset config",
    "ok" : 0
}
> rs.conf()
null

我试图删除并重新安装软件包(我在Ubuntu服务器上这样做)这意味着我的mongodb.conf消失了,我的init脚本停止工作。这当然很容易解决。

那么我该如何重新开始?

注意:我确实看过this answer,但由于rs.conf()不起作用,这也不起作用。

3 个答案:

答案 0 :(得分:54)

如果您的计算机的主机名未映射回127.0.0.1,您也会收到此错误。更新你的/ etc / hosts和/或/ etc / hostname,没有配置的rs.initiate()应该可以工作。

答案 1 :(得分:25)

如果使用您生成的配置强制重新配置,它是否解决了问题?

您可以执行类似{{mongo}} shell中的以下操作:

> cfg = {
...     "_id" : "rs0",
...     "version" : 1,
...     "members" : [
...         {
...             "_id" : 0,
...             "host" : "0.0.0.0:27017"
...         }
...     ]
... }

>rs.reconfig(cfg, {force:true})

如果repl集找不到正在运行的节在配置中。

答案 2 :(得分:9)

如果您只是在bind_ip中注释/etc/mongod.conf,这将获得正确的结果,以便您可以重新发出rs.initiate()命令来设置或重新配置副本。