时间:2020-08-21来源:www.pcxitongcheng.com作者:电脑系统城
重新组网,需要对现有MongoDB分片集群服务器的IP进行更改,因此也需要对MongoDB分片集群的IP也进行相应的更新,而MongoDB分片集群的IP修改不能单纯的通过配置来进行,需要一番折腾后才能正常更新,这里对整个MongoDB集群的IP修改过程做下记录,希望对有同样需求的小伙伴有所帮助。原有集群配置如下
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 |
升级过程是先升级 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
节点,修改分片信息
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:'shard3'},cfg)
db.system.replset.findOne({_id: 'shard3'})
/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修改结束。
2023-03-15
Navicat远程连接MongoDB最全实现方法以及报错解决2023-03-15
MongoDB的启动方法详细总结2023-03-11
详解分库分表后非分片键如何查询GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组,下面这篇文章主要给大家介绍了关于高版本Mysql使用group by分组报错的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下...
2023-03-06