解决:mongodb的rs.add()报错can't use localhost in repl set member names
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这个问题多出现在虚拟机单机多实例的情况下,并且rs.initiate()配置里使用了localhost。如下面的配置在一个虚拟机启动了多个mongod实例,在不同端口监听mongod --replSe
千家信息网最后更新 2025年11月13日解决:mongodb的rs.add()报错can't use localhost in repl set member names这个问题多出现在虚拟机单机多实例的情况下,并且rs.initiate()配置里使用了localhost。
如下面的配置在一个虚拟机启动了多个mongod实例,在不同端口监听mongod --replSet rs1 --keyFile /data/k1 --fork --port 27017 --dbpath /data/db1 --logpath /data/log/r1.log --logappend
mongod --replSet rs1 --keyFile /data/k2 --fork --port 27018 --dbpath /data/db2 --logpath /data/log/r2.log --logappend
mongod --replSet rs1 --keyFile /data/k3 --fork --port 27019 --dbpath /data/db3 --logpath /data/log/r3.log --logappend
使用下面的配置初始化[root@vm3 ~]# mongo
MongoDB shell version: 2.2.2
connecting to: test
rs1:PRIMARY> rs.initiate({_id:'rs1',members:[{_id:0,host:'localhost:27017',priority:1},{_id:1,host:'localhost:27018'},{_id:2,host:'localhost:27019'}]})
当我们想添加其他机器的mongodb实例进入集群时,问题来了,出现下面错误:[root@vm3 ~]# mongo
MongoDB shell version: 2.2.2
connecting to: test
rs1:PRIMARY> rs.add('192.168.18.241:27020')
{
"errmsg" : "exception: can't use localhost in repl set member names except when using it for all members",
"code" : 13393,
"ok" : 0
}通过错误提示可以看出不能在repl set成员名字中使用localhost我们自己想想也是有道理的,因为当这个配置传输到别的机器实例后,那台机器会查找配置里的master,而master的配置是 localhost:27017(初始时由priority:1决定),相当于master在本机,而本机却没有master,所以添加失败
一般在生产环境不容易遇到这个问题
我建议使用内网ip来代替localhost,如192.168.xxx.xxx,也不要用127.0.0.1,建议配置如下:rs.initiate({_id:'rs1',members:[{_id:0,host:'192.168.18.240:27017',priority:1},{_id:1,host:'192.168.18.240:27018'},{_id:2,host:'192.168.18.240:27019'}]})
如下面的配置在一个虚拟机启动了多个mongod实例,在不同端口监听mongod --replSet rs1 --keyFile /data/k1 --fork --port 27017 --dbpath /data/db1 --logpath /data/log/r1.log --logappend
mongod --replSet rs1 --keyFile /data/k2 --fork --port 27018 --dbpath /data/db2 --logpath /data/log/r2.log --logappend
mongod --replSet rs1 --keyFile /data/k3 --fork --port 27019 --dbpath /data/db3 --logpath /data/log/r3.log --logappend
使用下面的配置初始化[root@vm3 ~]# mongo
MongoDB shell version: 2.2.2
connecting to: test
rs1:PRIMARY> rs.initiate({_id:'rs1',members:[{_id:0,host:'localhost:27017',priority:1},{_id:1,host:'localhost:27018'},{_id:2,host:'localhost:27019'}]})
当我们想添加其他机器的mongodb实例进入集群时,问题来了,出现下面错误:[root@vm3 ~]# mongo
MongoDB shell version: 2.2.2
connecting to: test
rs1:PRIMARY> rs.add('192.168.18.241:27020')
{
"errmsg" : "exception: can't use localhost in repl set member names except when using it for all members",
"code" : 13393,
"ok" : 0
}通过错误提示可以看出不能在repl set成员名字中使用localhost我们自己想想也是有道理的,因为当这个配置传输到别的机器实例后,那台机器会查找配置里的master,而master的配置是 localhost:27017(初始时由priority:1决定),相当于master在本机,而本机却没有master,所以添加失败
一般在生产环境不容易遇到这个问题
我建议使用内网ip来代替localhost,如192.168.xxx.xxx,也不要用127.0.0.1,建议配置如下:rs.initiate({_id:'rs1',members:[{_id:0,host:'192.168.18.240:27017',priority:1},{_id:1,host:'192.168.18.240:27018'},{_id:2,host:'192.168.18.240:27019'}]})
配置
实例
机器
问题
建议
错误
面的
本机
不同
想想也是
单机
名字
多个
情况
成员
环境
端口
集群
传输
提示
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库查询表在哪
广西鸿雪互联网科技有限公司
网络安全的美篇
app数据库建立需要什么
大连java软件开发招聘
陕西服务器阵列卡电池性能
自动查询数据库
上海社交软件开发
网络安全防线训练
网络安全保障专班
常州管理系统软件开发
展示柜设计软件开发
普法教育你我他网络安全
数据库查询一年前数据
崇明区工业软件开发服务
无锡好的软件开发项目信息
东村视频软件开发
从事危害网络安全的活动即时
人间地狱刷不出来服务器
层级结构数据库建表
欣盛网络技术有限公司
人工智能时代的网络安全
计算机网络技术介绍自己的文案
服务器做网络代理
小学治理网络安全方案
服务器部署多个apache项目
服务器数据安全管理软件
数据库中试图分为
无锡好的软件开发项目信息
锦游网络技术有限公司