MongoDB最新4.2.7版本三分片集羣修改IP實操演練

背景

從新組網,須要對現有MongoDB分片集羣服務器的IP進行更改,所以也須要對MongoDB分片集羣的IP也進行相應的更新,而MongoDB分片集羣的IP修改不能單純的經過配置來進行,須要一番折騰後才能正常更新,這裏對整個MongoDB集羣的IP修改過程作下記錄,但願對有一樣需求的小夥伴有所幫助。html

做者:依樂祝
原文地址:http://www.javashuo.com/article/p-uhjhehwa-mx.htmlshell

原有集羣配置以下

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修改對應關係以下:vim

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 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 節點,修改分片信息code

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:'shard1'},cfg)
db.system.replset.findOne({_id: 'shard1'})
  • 重複上述步驟分別對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修改結束。server

相關文章
相關標籤/搜索