從新組網,須要對現有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 |
升級過程是先升級 Config
服務,再分別升級三個 Shard
配置,最後修改一個 mongos
的路由。固然了,在開始以前須要確保MongDB分片集羣都已經停掉了。
停掉的步驟也很簡單。 ps -ef | grep mongo
找到對應的線程id,而後 kill
掉便可。
服務器
standlone
模式啓動一個 Config
服務/usr/mongod/bin/mongod --port 21000 --dbpath=/usr/mongod/data
/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服務節點/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)
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'})
/usr/mongod/bin/mongod -f /usr/mongod/conf/shard1.conf
configserver
配置項爲最新的configderver地址vim /usr/mongod/conf/mongos.conf
/usr/mongod/bin/mongos -f /usr/mongod/conf/mongos.conf
/usr/mongod/bin/mongo --port 20000
至此,MongoDB分片集羣IP修改結束。server