MongoDB 3.4 升级到 4.4
提示
- 升级时长与 MongoDB 数据库中集合数量有直接关系
- 可通过
find /data/mingdao/script/volume/data/mongodb/ -name '*collection*' | wc -l
查看集合数量 - 例如:集合数在1万个以内需1分钟,10万约10分钟,30万约30分钟,另外也会受服务器磁盘性能影响重启升级时长
- 可通过
- 本文档示例命令中,使用的是 HAP 私有部署版默认数据路径
/data/mingdao
,如果你自定义修改过默认数据路径,请务必修改相应的路径。
停止服务
管理器根目录下执行命令:
bash ./service.sh stopall
备份数据
如果 mongodb 目录已备份可跳过此步骤
备份前需确认服务器磁盘剩余空间是否足够
du -sh /data/mingdao/script/volume/data/mongodb
创建备份,如(实际备份目录自行调整):
mkdir -p /backup && tar -zcvf /backup/mongodb3.4_$(date +%Y%m%d%H%M%S).tar.gz /data/mingdao/script/volume/data/mongodb
升级版本
MongoDB 升级需逐版本依次升级。3.4 升级到 4.4 需要依次升级到 3.6、4.0、4.2、4.4,一共需执行 4 次升级命令。
升级过程中如果提示版本不匹配,则需要重复执行上一个升级命令(如:3.4 升级到 3.6 执行成功后,3.6 升级到 4.0 提示失败,则需要再次执行 3.4 升级到 3.6 的命令,直到输出 exit upgrade),如果尝试多次依然出错则可通过/data/mingdao/script/volume/data/mongodb/upgrade-xxxx.log
查看具体原因。
拉取升级辅助镜像(离线包下载):
docker pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc-upgrade:1.0.0
执行升级命令:
3.4 到 3.6
docker run -i --rm -v /data/mingdao/script/volume/data/mongodb:/data/mongodb registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 3.4 3.6'
3.6 到 4.0
docker run -i --rm -v /data/mingdao/script/volume/data/mongodb:/data/mongodb registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 3.6 4.0'
4.0 到 4.2
docker run -i --rm -v /data/mingdao/script/volume/data/mongodb:/data/mongodb registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 4.0 4.2'
4.2 到 4.4
docker run -i --rm -v /data/mingdao/script/volume/data/mongodb:/data/mongodb registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 4.2 4.4'
最终输出 newRunVersion: 4.4 字样说明升级完成。 👏 👏
几种常见输出说明
已成功升级到目标版本
oldRunVersion: 4.0
Upgrade 4.0 to 4.2...
{ "ok" : 1 }
newRunVersion: 4.2