1. 首页
  2. 数据库运维

修改MongoDB副本集中节点的主机名或IP地址

默认MongoDB副本集初始化的时候是使用服务器的主机名,在生产中由于某种需要可能需要修改。MongoDB副本集的信息写在local数据库的system.replset中的。要修改这个数据,需要先将MongoDB以单节点启动,再修改local数据库中的副本集相关信息,最后重新启动并reconfig副本集。

第一步:停止所有MongoDB副本集节点

service mongod stop

第二步:单节点方式启动MongoDB

修改/etc/mongod.conf配置,注释“replication”。修改port端口,例如37017,防止维护时其他应用连接。

mongod replica set config

如果有认证登录,还需要去除MongoDB的认证。

第三步:连接

mongo --port 37017
use local
cfg = db.system.replset.findOne( { "_id": "rs" } )
cfg.members[0].host = "mgdb1.blog.nbqykj.cn:27017"
cfg.members[1].host = "mgdb2.blog.nbqykj.cn:27017"
cfg.members[2].host = "mgdb3.blog.nbqykj.cn:27017"
db.system.replset.update( { "_id": "rs" } , cfg )

修改好后关闭MongoDB。

第四步:恢复配置

恢复第一步中修改的mongod.conf配置(端口和replication),添加认证。

第五步:查看配置

登录MongoDB副本集,输入命令: rs.status() 查看副本集状态。

附:副本集配置修改

# 获取副本集配置
replication:OTHER> cfg=rs.conf()
replication:OTHER> printjson(cfg)
# 查看配置节点
replication:OTHER> printjson(cfg.members[0])
# 修改节点端口
replication:OTHER> cfg.members[0].host="mgdb1.blog.nbqykj.cn:27001"
replication:OTHER> cfg.members[1].host="mgdb2.blog.nbqykj.cn:27002"
replication:OTHER> cfg.members[2].host="mgdb3.blog.nbqykj.cn:27003"
# 重新配置
replication:OTHER> rs.reconfig(cfg)    # 可能会报错"errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is REMOVED; use the "force" argument to override",
# 报错的话,根据报错信息加强制指令执行
replication:OTHER> rs.reconfig(cfg, {force : true})

 

参考连接:https://docs.mongodb.com/manual/tutorial/change-hostnames-in-a-replica-set/

1 评论
内联反馈
查看所有评论
夏日博客
5 年 前

支持博主

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code