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


背景

重新組網,需要對現有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 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:'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修改結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM