在mongodb中使用副本配置重新开始
在mongodb中配置副本集时出错。我认为我做错的是我在两个节点上都做了rs.initialize(),这在某种程度上使它们混淆了。我不确定 现在我只想重新开始,但我找不到一种方法来取消初始化节点。因此,我按照建议删除本地*db文件,从而重置配置。我那样做了,现在什么都没用了在mongodb中使用副本配置重新开始,mongodb,replication,Mongodb,Replication,在mongodb中配置副本集时出错。我认为我做错的是我在两个节点上都做了rs.initialize(),这在某种程度上使它们混淆了。我不确定 现在我只想重新开始,但我找不到一种方法来取消初始化节点。因此,我按照建议删除本地*db文件,从而重置配置。我那样做了,现在什么都没用了 > rs.initiate() { "info2" : "no configuration explicitly specified -- making one", "me" : "0.0.0.0:2
> 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脚本停止工作。这当然很容易解决
那我该如何重新开始呢
注意:我确实看过,但由于rs.conf()不起作用,这也不起作用。如果您强制重新配置已生成的配置,是否解决了问题 您可以从{{mongo}}shell执行类似于以下的操作:
> cfg = {
... "_id" : "rs0",
... "version" : 1,
... "members" : [
... {
... "_id" : 0,
... "host" : "0.0.0.0:27017"
... }
... ]
... }
>rs.reconfig(cfg, {force:true})
您可能需要调整
cfg
变量以获得您的主机名和端口名,因为如果repl集在配置中找不到运行它的节点,那么在新的replset配置中找不到self
错误将返回到shell。如果您的计算机主机名没有映射回127.0.0.1,您也会收到此错误。更新你的/etc/hosts和/或你的/etc/hostname,rs.initiate()不带任何配置应该可以工作。如果你只是在/etc/mongod.conf
中注释掉bind\u ip
,这将获得正确的结果,这样你就可以重新发出rs.initiate()
命令来设置或重新配置副本。我不得不使用rs.initiate(cfg)
而不是rs.reconfig
,否则效果很好!对我来说,我不得不使用“主机”:“127.0.0.1:27017”
和rs.initiate
。不过,ubuntu Precise上的mongo服务器2.0.4-1ubuntu2.1
,我也不得不使用rs.initiate(cfg)为我修复了这个问题,谢谢。如果你在云实例上更改了主机名,请确保将新主机名添加到/etc/hosti。我还通过确保分配的IP地址也绑定到/etc/mongod.conf文件中的bind_IP设置来纠正这个问题。显然,将其绑定到127.0.0.1并不总是足够的。我必须做些什么milar:由于LAN IP已解析,但不是127.0.0.1,因此我添加了两个-bind_IP=10.10.1.1127.0.0.1
。