在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()不起作用,这也不起作用。
答案 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()
命令来设置或重新配置副本。