我有一台Linux Mint / Ubuntu机器,从ubuntu软件包管理器(APT-GET)安装了mongodb
。我尝试使用
/etc/mongod.conf
sudo nano /etc/mongod.conf
激活replySet
字段,使其显示为:
# Replication Options
# in replicated mongo databases, specify the replica set name here
replSet=rs0
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#keyFile=/path/to/keyfile
成功重启mongod实例:sudo service mongod restart
但是,每当我运行rs.initiate()
时,都会导致错误,表明mongod
无法找到它的配置文件
{
"info2" : "no configuration explicitly specified -- making one",
"me" : "Leony:27017",
"ok" : 0,
"errmsg" : "No host described in new configuration
1 for replica set rs0 maps to this node",
"code" : 93
}
有什么建议吗?
答案 0 :(得分:0)
我认为问题是由rs.initiate()调用和配置中指定的bindIp解析的主机名不匹配。 您是否尝试过向rs.initiate()调用提供json参数?如下所示?
rs.initiate({_id: "rs0", members: [{_id: 0,host: "hostname:port"}]})
另请参阅Mongodb中的JIRA ticket,Mongo工程师说,它实际上不是一个bug,但按设计工作。因此,需要在net.bindIp中的主机名以及副本集配置中的主机名具有一致性。
此外,在生产设置中,最好在/ etc / hosts中使用DNS名称或条目来轻松管理群集。没有DNS名称或可解析的主机名也不是不可能的,但这种方式更容易。
另请参阅this answer有关bindIp的配置文件选项