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

DotNet程序园

共 3679字,需浏览 8分钟

 ·

2020-09-09 23:28


背景

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

作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/13536628.html


原有集群配置如下

192.168.147.11192.168.147.16192.168.147.21
mongosmongosmongos
config serverconfig serverconfig server
shard server1 主节点shard server1 副节点shard server1 仲裁
shard server2 仲裁shard server2 主节点shard server2 副节点
shard server3 副节点shard server3 仲裁shard server3 主节点

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

mongos20000
config server21000
shard server127001
shard server227002
shard server327003

IP修改对应关系如下:

172.168.7.11172.168.7.11
172.168.7.16172.168.7.16
172.168.7.21172.168.7.21


更改IP步骤

升级过程是先升级 Config 服务,再分别升级三个 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修改结束。

往期精彩回顾




【推荐】.NET Core开发实战视频课程 ★★★

.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

【.NET Core微服务实战-统一身份认证】开篇及目录索引

Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)

.NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

10个小技巧助您写出高性能的ASP.NET Core代码

用abp vNext快速开发Quartz.NET定时任务管理界面

在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

现身说法:实际业务出发分析百亿数据量下的多表查询优化

关于C#异步编程你应该了解的几点建议

C#异步编程看这篇就够了

给我好看

您看此文用

  · 

秒,转发只需1秒呦~

好看你就

点点


浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报