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

发表时间:2019-10-30 16:12 | 分类:数据库运维 | 浏览:4,400 次

默认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.zhangnq.com:27017"
cfg.members[1].host = "mgdb2.zhangnq.com:27017"
cfg.members[2].host = "mgdb3.zhangnq.com: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.zhangnq.com:27001"
replication:OTHER> cfg.members[1].host="mgdb2.zhangnq.com:27002"
replication:OTHER> cfg.members[2].host="mgdb3.zhangnq.com: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/

本文标签:

本文链接:https://www.sijitao.net/3155.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

现在只有1个回复
Comment (1)
Trackbacks (0)
  1. 夏日博客  ( 2019.11.2 18:38 ) : #-9

    支持博主

  1. 还没有Trackbacks
一键脚本 博客历程 留言联系 文章归档 网站地图 谷歌地图
Copyright © 2010-2024 章郎虫博客 All Rights Reserved.