解决:mongodb的rs.add()报错can't use localhost in repl set member names
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这个问题多出现在虚拟机单机多实例的情况下,并且rs.initiate()配置里使用了localhost。如下面的配置在一个虚拟机启动了多个mongod实例,在不同端口监听mongod --replSe
千家信息网最后更新 2025年02月02日解决: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安全错误
数据库的锁怎样保障安全
2021年网络安全博览会主题
网络技术职业方案书
香肠派对用哪个服务器下载
邮件服务器 php
网络技术和软件与应用哪个专业好
石器时代服务器出租
网络安全保卫支队个人总结
神鸟云服务器
企业邮箱收件服务器
银行个人储蓄管理系统数据库
职业技术学院软件开发教材
为什么用服务器总是跑不上网
互联网app软件开发的前景
刚下载的数据库如何建立连接
软件开发过程中的技术评审
永恒大陆服务器喇叭
江西软件开发中专
所有软件开发的第一步是什么
4g网络技术的网速是多少
数据库加密和恢复
龙江银行软件开发中心
众信网络技术是真的吗
软件开发做什么事儿
四川软件开发服务上市公司
中国工商银行服务器安全链接
第三方vpn服务器
mysql数据库需要分离吗
东芝电梯服务器
软件开发培训班怎么选
服务器无法登录是什么原因