我每次都收到这条消息
rs.initiate()
:
副本集 rs0 的新配置 1 中没有描述主机映射到此节点
这是我的 /etc/hosts/ 文件在两个副本集服务器上的样子。
服务器 1 和服务器 2“主机”文件
127.0.0.1 本地主机
转载
aa.bb.cc.dd DataMongo1
ee.ff.gg.hh DataMongo2
服务器1-mongod.conf文件
绑定ip aa.bb.cc.dd
Server 2 -mongod.conf 文件
绑定ip ee.ff.gg.hh
将 server1 主机名更改为 DataMongo1,将 server2 主机名更改为 DataMongo2
$主机名DataMongo1
端口 27071 在两台服务器上都没有注释
ReplicaSet 配置文件:
cfg={
_id:"rs0",
成员:[{_id:0,host:"DataMongo1:27071"},{_id:1,host:"DataMongo2:27071"}]}
请帮我解决这个问题。
我刚遇到这个问题,在我的情况下,症状是一切正常,直到我重新启动服务器。
然后我会得到以下错误:
NodeNotFound: No host described in new configuration $id for replica set $name maps to this node
只需重新启动 mongodb 守护程序即可修复它,因此它不可能是副本集配置问题。
更详细地检查日志后,我注意到以下错误消息:
NETWORK [replexec-0] getaddrinfo("$name.emilburzo.com") failed: Temporary failure in name resolution
-> bingo
它试图在网络完全启动之前查询主机名,因此副本集成员不知道自己的身份
将服务器的 FQDN 主机名添加到
/etc/hosts
修复它,例如:
127.0.1.1 shortname shortname.fqdn.com
貌似端口不对。 MongoDB 的默认端口是 27017,不是 27071。
如果您使用的是 mongo.conf 文件,那么首先注释“复制”部分,如下所示,
...
#operationProfiling:
# replication:
# replSetName: rs0-here
#sharding:
...
现在运行 mongod 并在 mongo 终端上配置副本集,如下所示,
rs.initiate({_id: "rs0-here", version: 1, members: [{ _id: 0, host : "your_host:27017" }]})
也可以在这里创建用户和数据库,然后退出。在 mongo.conf 中取消注释以下部分,
replication:
replSetName: rs0-here
再次运行 mongod 然后这个问题就会消失。
我在 docker 上运行配置服务器副本,并在
rs.initiate
中遇到了同样的问题。我能够通过将成员的主机更改为dockerContainerId:dockerContainerPort
来解决它。