您的位置 首页 java

MongoDB最新4.2.7版本三分片集群修改IP实操演练

背景
重新组网,需要对现有MongoDB分片集群服务器的IP进行更改,因此也需要对MongoDB分片集群的IP也进行相应的更新,而MongoDB分片集群的IP修改不能单纯的通过配置来进行,需要一番折腾后才能正常更新,这里对整个MongoDB集群的IP修改过程做下记录,希望对有同样需求的小伙伴有所帮助。

原有集群配置如下

这里的端口分配如下所示:

IP修改对应关系如下:

更改IP步骤

升级过程是先升级UConfig 服务,再分别升级三个 Shard 配置,最后修改一个 mongos 的路由。当然了,在开始之前需要确保MongDB分片集群都已经停掉了。
停掉的步骤也很简单。 ps -ef | grep mongo 找到对应的线程id,然后 kill 掉即可。

修改config 节点的IP

  • 用如下命令,以 standlone 模式启动一个 Config 服务
 /usr/mongod/bin/mongod --port 21000 --dbpath=/usr/mongod/data

  
  • 新打开一个shell,连接上这个config服务
 /usr/mongod/bin/mongo --port 21000

  
  • 进入到 local 数据库查看 replset 集合,并修改对应的host
 use local
db.system.replset.find()
cfg = db.system.replset.findOne({_id: 'configs'})
cfg.members[0].host = "172.168.7.11:21000"
cfg.members[1].host = "172.168.7.16:21000"
cfg.members[2].host = "172.168.7.21:21000"
db.system.replset.update({_id: 'configs'}, cfg)
db.system.replset.find()

  
  • 上面最后一行是把修改好的内容查出来以便于查看下修改是否成功。
  • 按照同样的步骤以 standlone 模式启动启动另外两个config节点,并修改另外两个config服务节点的信息。
  • 停掉这三个以 standlone 模式启动的config服务节点
  • 分别按照正常集群模式启动这三个config节点
 /usr/mongod/bin/mongod -f /usr/mongod/conf/config.conf

  
  • 看到如下所示,说明选举成功了。
  • 登录到 primary 节点,修改分片信息
 use config

cfg=db.shards.findOne({_id:'shard1'})
cfg.host="shard1/172.168.7.11:27001,172.168.7.16:27001"
db.shards.update({_id:'shard1'},cfg)
cfg = db.shards.findOne({_id: 'shard2'})

cfg.host = "shard2/172.168.7.16:27002,172.168.7.21:27002"
db.shards.update({_id: 'shard2'}, cfg)

cfg = db.shards.findOne({_id: 'shard3'})
cfg.host = "shard3/172.168.7.11:27003,172.168.7.21:27003"
db.shards.update({_id: 'shard3'}, cfg)

  
  • 至此config服务节点的修改完成,接下来进行shard节点的修改

修改shard分片的IP信息

  • 以 standlone 模式启动分片1,然后登录进去
 /usr/mongod/bin/mongod --port 27001 --dbpath=/usr/mongod/shard1/
/usr/mongod/bin/mongo --port 27001

  
  • 切换到 admin 数据库的 version 集合查看下 config 配置信息,如果有 _id:shardIdentity 的数据则进行下更新,当然这里如果有 _id:minOpTimeRecovery 的数据也需要更新
 use admin
db.system.version.find()
db.system.version.update({"_id" : "shardIdentity"},{"$set":{"configsvrConnectionString" : "configs/172.168.7.11:21000,172.168.7.16:21000,172.168.7.21:21000"}})
db.system.version.update({"_id" : "minOpTimeRecovery"},{"$set":{"configsvrConnectionString" : "configs/172.168.7.11:21000,172.168.7.16:21000,172.168.7.21:21000"}})

  
  • 修改复制集的配置信息,复制集的配置信息都保存在 local 库的 system.replset 集合中
 use local
cfg = db.system.replset.findOne({_id: 'shard1'})
cfg.members[0].host="172.168.7.11:27003"
cfg.members[1].host="172.168.7.16:27003"
cfg.members[2].host="172.168.7.21:27003"
db.system.replset.update({_id:'shard3'},cfg)
db.system.replset.findOne({_id: 'shard3'})

  
  • 重复上述步骤分别对shaed2,shard3进行ip的更改
  • 最后按照集群的模式启动你的三个分片即可。
 /usr/mongod/bin/mongod -f /usr/mongod/conf/shard1.conf

  

修改mongos服务的路由信息

  • 用vim打开mongos的配置文件,修改对应的 configserver 配置项为最新的configderver地址
 vim /usr/mongod/conf/mongos.conf

  

  • 按集群模式启动mongos服务即可
 /usr/mongod/bin/mongos -f /usr/mongod/conf/mongos.conf

  
  • 登录验证下即可
 /usr/mongod/bin/mongo --port 20000

  

至此,MongoDB分片集群IP修改结束。

文章来源:智云一二三科技

文章标题:MongoDB最新4.2.7版本三分片集群修改IP实操演练

文章地址:https://www.zhihuclub.com/186021.shtml

关于作者: 智云科技

热门文章

网站地图