博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB最新4.2.7版本三分片集群修改IP实操演练
阅读量:4033 次
发布时间:2019-05-24

本文共 3319 字,大约阅读时间需要 11 分钟。

背景

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

作者:依乐祝

原文地址:https://www.cnblogs.com/yilezhu/p/13536628.html

原有集群配置如下

192.168.147.11 192.168.147.16 192.168.147.21
mongos mongos mongos
config server config server config server
shard server1 主节点 shard server1 副节点 shard server1 仲裁
shard server2 仲裁 shard server2 主节点 shard server2 副节点
shard server3 副节点 shard server3 仲裁 shard server3 主节点

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

mongos 20000
config server 21000
shard server1 27001
shard server2 27002
shard server3 27003

IP修改对应关系如下:

172.168.7.11 172.168.7.11
172.168.7.16 172.168.7.16
172.168.7.21 172.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 localdb.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 configcfg=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 admindb.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 localcfg = 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修改结束。

往期精彩回顾

给我好看 您看此文用  · 秒,转发只需1秒呦~好看你就点点我
你可能感兴趣的文章
[LeetCode By Python]118. Pascal's Triangle
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
[LeetCode By Python]122. Best Time to Buy and Sell Stock II
查看>>
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>
[LeetCode By Python]172. Factorial Trailing Zeroes
查看>>
[LeetCode By MYSQL] Combine Two Tables
查看>>
python jieba分词模块的基本用法
查看>>
[CCF BY C++]2017.12 最小差值
查看>>
[CCF BY C++]2017-12 游戏
查看>>
如何打开ipynb文件
查看>>
[Leetcode BY python ]190. Reverse Bits
查看>>
面试---刷牛客算法题
查看>>
Android下调用收发短信邮件等(转载)
查看>>
Android中电池信息(Battery information)的取得
查看>>
SVN客户端命令详解
查看>>
Android/Linux 内存监视
查看>>
Linux系统信息查看
查看>>
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>