升级前准备
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
查看系统版本必须为3.6
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
在所有分片上都得到一下信息
副本集成员状态
确保没有副本集成员处于ROLLBACK或 RECOVERING状态。
1删除支持MONGODB-CR
从4.0版开始,MongoDB删除了对不推荐使用的MongoDB Challenge-Response(MONGODB-CR)身份验证机制的支持。
如果部署具有存储在MONGODB-CR 架构中的用户凭据,则必须先升级到Salted Challenge Response Authentication Mechanism(SCRAM), 然后再升级到4.0版。有关升级到的信息SCRAM,请参阅 升级到SCRAM。
2删除支持$isolated
MongoDB不再支持$isolated运营商。如果您有包含$isolated运算符的现有部分索引或包含运算符的视图,请$isolated在升级之前在定义中重新创建不带运算符的索引或视图。
3删除pv0副本集¶
从4.0版开始,MongoDB删除不推荐使用的副本集协议版本0 pv0。
在升级到MongoDB 4.0之前,您必须升级到pv1。
要升级到pv1,请将mongoshell 连接到副本集主服务器并执行以下操作序列:
cfg = rs.conf();
cfg.protocolVersion=1;
rs.reconfig(cfg);
4.执行
db.fsyncLock()锁定全部磁盘不可写
最后执行
db.fsyncUnlock()锁定全部磁盘解锁锁
rs.status()查看集群信息
执行
6.在mongodb 3.6二进制中执行下面命令导出数据库
./mongodump -h 127.0.0.1 --oplog --port 7901 -o /home/aculearn/disk/dbmongo
如过失败重新将从节点加入集群试着解决错误
有碰到用户权限问题查看所有用户
db.getUsers() 进入每个库查看用户信息
在删除用户之前请记录用户信息并在生成的新库中创建当然这并不影响集群的创建
db.dropAllUsers() //从当前数据库删除所有用户 下面代码删除全库用户
db.system.users.remove(query) db.removeUser(username)
5.执行命令关闭从节点
db.adminCommand( "shutdown" ) 从所有的从节点开始关闭 并作升级
用4.0版本启动mongodb 从库
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7901 --replSet mongo --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data --logpath /home/aculearn/disk/mongodb4.0/logs/mongo1.log &
看是否本节点成为丛节点 确实是从节点 执行
db.adminCommand( "shutdown" )
取消副本集配置餐参数 以单机模式启动
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7901 --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data1 --logpath /home/aculearn/disk/mongodb4.0/logs/mongo1.log &
执行
./mongorestore --host 127.0.0.1 --port 7901 --db shihangyu --drop --dir /home/aculearn/disk/dbmongo/shihangyu
./mongorestore --host 127.0.0.1 --port 7901 --oplogReplay --drop --dir /home/aculearn/disk/dbmongo 全库导入
导入完成查看是否有库
执行
db.adminCommand( "shutdown" )
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7901 --replSet mongo --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data --logpath /home/aculearn/disk/mongodb4.0/logs/mongo1.log &
如果从节点加入成功副本模式升级成功
然后升级领一个从节点按上面同样形式升级
7 主节点升级
注意从新创建一个目录装主节点里面的数据信息
./mongodump -h 127.0.0.1 --oplog --port 7900 -o /home/aculearn/disk/dbmongo1
执行
db.adminCommand( "shutdown" )
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7900 --replSet mongo --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data --logpath /home/aculearn/disk/mongodb4.0/logs/mongo.log &
看是否建立连接
执行
db.adminCommand( "shutdown" )
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7900 --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data1 --logpath /home/aculearn/disk/mongodb4.0/logs/mongo.log &
执行
./mongorestore --host 127.0.0.1 --port 7901 --oplogReplay --drop --dir /home/aculearn/disk/dbmongo1 全库导入
查看库中是否有数据有的话
执行
sudo ./mongod --storageEngine wiredTiger --profile=1 --port 7900 --replSet mongo --bind_ip_all --slowms=50 --dbpath /home/aculearn/disk/mongodb4.0/data --logpath /home/aculearn/disk/mongodb4.0/logs/mongo.log &
如果此节点加入集群mongodb 升级成功
执行 db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
启用向后兼容的4.0功能
最后执行
db.fsyncUnlock()锁定全部磁盘解锁锁