Mongodb叢集修改IP
1 系統說明
開源元件如下:
元件及版本 |
元件功能 |
引入原因 |
Mongodb3.6.2 |
提供高效能的檔案式資料儲存和檢索的分散式平臺 |
提供結構化模型資料的持久化和檢索功能 |
2 mongodb叢集修改IP
2.1 單副本集修改IP
2.1.1 修改配置檔案
1.修改primary.conf
vi ./config/primary.conf
紅框處改為新IP
2.修改secondary.conf
vi ./config/secondary.conf
紅框處改為新IP
3.修改arbiterOnly.conf
vi ./config/arbiterOnly.conf
紅框處改為新IP
4.關閉所有mongod服務
2.1.2 配置新副本集
1. 伺服器IP更換為新IP
2. 啟動副本集
./bin/mongod -f ./config/primary.conf
./bin/mongod -f ./config/secondary.conf
./bin/mongod -f ./config/arbiter.conf
3. 配置新副本集
./bin/mongo IP:27017 //IP為新IP
config = {
"members" : [
{"_id" : 1,"host" : "
新IP:27017"},{"_id" : 2,"host" : "新IP:27018"},
{"_id" : 3,"host" : "新IP:27019","arbiterOnly" : true}
]
}
rs.reconfig(config, {force: true})
4. 退出shell,再次進入./bin/mongo IP:27017即可
2.2 叢集修改IP
現在需要將IP改為正式環境的IP,IP對應關係如下:
10.41.11.51-->10.41.11.31 //一個configsvr,一個mongos,一個分片副本集
10.41.11.52-->10.41.11.32 //一個configsvr,一個分片副本集
10.41.11.53-->10.41.11.33 //一個configsvr,一個分片副本集
2.2.1 修改服務配置資訊
1. 修改配置節點資訊
修改副本集IP資訊
10.41.11.51上執行
./bin/mongo 10.41.11.51:20000
use local
cfg = db.system.replset.findOne({_id: 'configSvr'})
cfg.members[0].host = "10.41.11.31:20000" //IP修改為10.41.11.31
cfg.members[1].host = "10.41.11.32:20000" //IP修改為10.41.11.32
cfg.members[2].host = "10.41.11.33:20000" //IP修改為10.41.11.33
db.system.replset.update({_id: 'configSvr'}, cfg)
副本集其他節點執行同樣操作
10.41.11.52上執行
./bin/mongo 10.41.11.52:20000
use local
cfg = db.system.replset.findOne({_id: 'configSvr'})
cfg.members[0].host = "10.41.11.31:20000" //IP修改為10.41.11.31
cfg.members[1].host = "10.41.11.32:20000" //IP修改為10.41.11.32
cfg.members[2].host = "10.41.11.33:20000" //IP修改為10.41.11.32
db.system.replset.update({_id: 'configSvr'}, cfg)
副本集其他節點執行同樣操作
10.41.11.53上執行
./bin/mongo 10.41.11.53:20000
use local
cfg = db.system.replset.findOne({_id: 'configSvr'})
cfg.members[0].host = "10.41.11.31:20000" //IP修改為10.41.11.31
cfg.members[1].host = "10.41.11.32:20000" //IP修改為10.41.11.32
cfg.members[2].host = "10.41.11.33:20000" //IP修改為10.41.11.32
db.system.replset.update({_id: 'configSvr'}, cfg)
修改分片資訊
./bin/mongo 10.41.11.51:20000 //PRIMARY節點啟動
use config
cfg=db.shards.findOne({_id:'shardn'}) //shardn為分片名
cfg.host="shardn/10.41.11.31:27017,10.41.11.31:27018" //IP改為10.41.11.31
db.shards.update({_id:'shardn'},cfg)
cfg=db.shards.findOne({_id:'shard2'}) //shard2為分片名
cfg.host="shard2/10.41.11.32:27017,10.41.11.32:27018" //IP改為10.41.11.32
db.shards.update({_id:'shard2'},cfg)
cfg=db.shards.findOne({_id:'shard3'}) //shard3為分片名
cfg.host="shard3/10.41.11.33:27017,10.41.11.33:27018" //IP改為10.41.11.33
db.shards.update({_id:'shard3'},cfg)
2. 修改分片節點資訊
修改第一個分片,10.41.11.51上執行
./bin/mongo 10.41.11.51:27017 //登入primary節點
修改配置伺服器資訊
use admin
db.system.version.find()
db.system.version.update({"_id" : "shardIdentity"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000,10.41.11.33:20000"}}) //IP修改為10.41.11.31,10.41.11.32, 10.41.11.33
db.system.version.update({"_id" :"minOpTimeRecovery"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000,10.41.11.33:20000"}}) //如果find結果有"_id" :"minOpTimeRecovery",需要執行這行命令
修改副本集資訊
use local
cfg = db.system.replset.findOne({_id: 'shardn'}) //shardn為分片名
cfg.members[0].host="10.41.11.31:27017" //IP修改為10.41.11.31
cfg.members[1].host="10.41.11.31:27018" //IP修改為10.41.11.31
cfg.members[2].host="10.41.11.31:27019" //IP修改為10.41.11.31
db.system.replset.update({_id:'shardn'},cfg)
./bin/mongo 10.41.11.51:27018 //登入secondary節點
use local
cfg = db.system.replset.findOne({_id: 'shardn'}) //shardn為分片名
cfg.members[0].host="10.41.11.31:27017" //IP修改為10.41.11.31
cfg.members[1].host="10.41.11.31:27018" //IP修改為10.41.11.31
cfg.members[2].host="10.41.11.31:27019" //IP修改為10.41.11.31
db.system.replset.update({_id:'shardn'},cfg)
./bin/mongo 10.41.11.51:27019 //登入arbiter節點
use local
cfg = db.system.replset.findOne({_id: 'shardn'}) //shardn為分片名
cfg.members[0].host="10.41.11.31:27017" //IP修改為10.41.11.31
cfg.members[1].host="10.41.11.31:27018" //IP修改為10.41.11.31
cfg.members[2].host="10.41.11.31:27019" //IP修改為10.41.11.31
db.system.replset.update({_id:'shardn'},cfg)
修改第二個分片,10.41.11.52上執行
./bin/mongo 10.41.11.52:27017 //登入primary節點
修改配置伺服器資訊
use admin
db.system.version.find()
db.system.version.update({"_id" : "shardIdentity"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000"}}) //IP修改為10.41.11.31,10.41.11.32
db.system.version.update({"_id" :"minOpTimeRecovery"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000"}}) //如果find結果有"_id" :"minOpTimeRecovery",需要執行這行命令
修改副本集資訊
use local
cfg = db.system.replset.findOne({_id: 'shard2'}) //shard2為分片名
cfg.members[0].host="10.41.11.32:27017" //IP修改為10.41.11.32
cfg.members[1].host="10.41.11.32:27018" //IP修改為10.41.11.32
cfg.members[2].host="10.41.11.32:27019" //IP修改為10.41.11.32
db.system.replset.update({_id:'shard2'},cfg)
./bin/mongo 10.41.11.52:27018 //登入secondary節點
use local
cfg = db.system.replset.findOne({_id: 'shard2'}) //shard2為分片名
cfg.members[0].host="10.41.11.32:27017" //IP修改為10.41.11.32
cfg.members[1].host="10.41.11.32:27018" //IP修改為10.41.11.32
cfg.members[2].host="10.41.11.32:27019" //IP修改為10.41.11.32
db.system.replset.update({_id:'shard2'},cfg)
./bin/mongo 10.41.11.52:27019 //登入arbiter節點
use local
cfg = db.system.replset.findOne({_id: 'shard2'}) //shard2為分片名
cfg.members[0].host="10.41.11.32:27017" //IP修改為10.41.11.32
cfg.members[1].host="10.41.11.32:27018" //IP修改為10.41.11.32
cfg.members[2].host="10.41.11.32:27019" //IP修改為10.41.11.32
db.system.replset.update({_id:'shard2'},cfg)
修改第三個分片,10.41.11.53上執行
./bin/mongo 10.41.11.53:27017 //登入primary節點
修改配置伺服器資訊
use admin
db.system.version.find()
db.system.version.update({"_id" : "shardIdentity"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000,10.41.11.33:20000"}}) //IP修改為10.41.11.31,10.41.11.32, 10.41.11.33
db.system.version.update({"_id" :"minOpTimeRecovery"},{"$set":{"configsvrConnectionString" : "configSvr/10.41.11.31:20000,10.41.11.32:20000,10.41.11.33:20000"}}) //如果find結果有"_id" :"minOpTimeRecovery",需要執行這行命令
修改副本集資訊
use local
cfg = db.system.replset.findOne({_id: 'shard3'}) //shard3為分片名
cfg.members[0].host="10.41.11.33:27017" //IP修改為10.41.11.33
cfg.members[1].host="10.41.11.33:27018" //IP修改為10.41.11.33
cfg.members[2].host="10.41.11.33:27019" //IP修改為10.41.11.33
db.system.replset.update({_id:'shard3'},cfg)
./bin/mongo 10.41.11.53:27018 //登入secondary節點
use local
cfg = db.system.replset.findOne({_id: 'shard3'}) //shard3為分片名
cfg.members[0].host="10.41.11.33:27017" //IP修改為10.41.11.33
cfg.members[1].host="10.41.11.33:27018" //IP修改為10.41.11.33
cfg.members[2].host="10.41.11.33:27019" //IP修改為10.41.11.33
db.system.replset.update({_id:'shard3'},cfg)
./bin/mongo 10.41.11.53:27019 //登入arbiter節點
use local
cfg = db.system.replset.findOne({_id: 'shard3'}) //shard3為分片名
cfg.members[0].host="10.41.11.33:27017" //IP修改為10.41.11.33
cfg.members[1].host="10.41.11.33:27018" //IP修改為10.41.11.33
cfg.members[2].host="10.41.11.33:27019" //IP修改為10.41.11.33
db.system.replset.update({_id:'shard3'},cfg)
2.2.2 修改配置檔案
10.41.11.51 上執行
killall mongod
killall mongos
vi config/primary.conf
紅框處為修改後的IP
vi config/secondary.conf
紅框處為修改後的IP
vi config/arbiter.conf
紅框處為修改後的IP
vi config/configsvr.conf
紅框處為修改後的IP
vi config/mongos.conf
紅框處為修改後的IP
10.41.11.52 上執行
killall mongod
killall mongos
vi config/primary.conf
紅框處為修改後的IP
vi config/secondary.conf
紅框處為修改後的IP
vi config/arbiter.conf
紅框處為修改後的IP
vi config/configsvr.conf
紅框處為修改後的IP
10.41.11.53 上執行
killall mongod
killall mongos
vi config/primary.conf
紅框處為修改後的IP
vi config/secondary.conf
紅框處為修改後的IP
vi config/arbiter.conf
紅框處為修改後的IP
vi config/configsvr.conf
紅框處為修改後的IP
更換伺服器IP
10.41.11.51 上執行
./bin/mongo config/configsvr.conf
10.41.11.52 上執行
./bin/mongo config/configsvr.conf
10.41.11.53 上執行
./bin/mongo config/configsvr.conf
10.41.11.51 上執行
./bin/mongo config/primary.conf
./bin/mongo config/secondary.conf
./bin/mongo config/arbiter.conf
./bin/mongo config/mongos.conf
10.41.11.52 上執行
./bin/mongo config/primary.conf
./bin/mongo config/secondary.conf
./bin/mongo config/arbiter.conf
./bin/mongo config/mongos.conf
10.41.11.53上執行
./bin/mongo config/primary.conf
./bin/mongo config/secondary.conf
./bin/mongo config/arbiter.conf
./bin/mongo config/mongos.conf
若全部能正常啟動,則修改成功