MongoDB 3.4 升级到 4.4
-
升级级时长与 MongoDB 数据库中集合数量有直接关系
可通过find /data/mongodb/ -name '*collection*' | wc -l查看集合数量
例如:集合数在1万个以内需1分钟,10万约10分钟,30万约30分钟,另外也会受服务器磁盘性能影响重启升级时长 -
本文档示例命令中,MongoDB 程序所在路径为
/usr/local/mongodb/,数据目录为/data/mongodb/,如有不同注意修改对应命令
单节点
提前准备
-
参考 Docker 安装章节 在 MongoDB 服务器上安装 Docker
-
拉取升级辅助镜像(离线包下载):
docker pull nocoly/hap-sc-upgrade:1.0.0 -
下载 MongoDB v4.4.29 安装包,并上传至服务器
- RedHat / CentOS 7.0 x64
- RedHat / CentOS 8.0 x64
- Debian 10.0+ x64
- 其他
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.29.tgzhttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.29.tgz- 如果操作系统高于 Debian 10,则先安装 libssl1.1 依赖
下载链接:https://pdpublic.nocoly.com/offline/common/libssl1.1_1.1.1w-0+deb11u1_amd64.deb
安装命令:dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb- 下载 MongoDB 安装包
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian10-4.4.29.tgz- 其他操作系统的安装包可到 MongoDB 官方下载地址 进行挑选下载
- EulerOS、麒麟、UOS 等信创操作系统,通常可使用 CentOS 7/8 相同的安装包
-
解压 MongoDB v4.4.29安装包,并检查安装包中
mongod程序是否缺少依赖,如缺少依赖根据实际情况进行安装- RedHat / CentOS 7.0 x64
- RedHat / CentOS 8.0 x64
- Debian 10.0+ x64
解压 MongoDB v4.4.29 安装包
tar xvf mongodb-linux-x86_64-rhel70-4.4.29.tgz检查安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-rhel70-4.4.29/bin/mongod解压 MongoDB v4.4.29 安装包
tar xvf mongodb-linux-x86_64-rhel80-4.4.29.tgz检查安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-rhel80-4.4.29/bin/mongod解压 MongoDB v4.4.29 安装包
tar xvf mongodb-linux-x86_64-debian10-4.4.29.tgz检查安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-debian10-4.4.29/bin/mongod
开始升级
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/mongodb/upgrade-xxxx.log查看具体原因。
-
停止微服务
-
对 MongoDB 进行数据备份
-
停止现有 MongoDB 实例
systemctl stop mongodb -
升级 MongoDB 版本
3.4 到 3.6
docker run -i --rm -v /data/mongodb:/data/mongodb nocoly/hap-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 3.4 3.6'3.6 到 4.0
docker run -i --rm -v /data/mongodb:/data/mongodb nocoly/hap-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 3.6 4.0'4.0 到 4.2
docker run -i --rm -v /data/mongodb:/data/mongodb nocoly/hap-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 4.0 4.2'4.2 到 4.4
docker run -i --rm -v /data/mongodb:/data/mongodb nocoly/hap-sc-upgrade:1.0.0 <<< 'upgradeMongodb.sh 4.2 4.4' -
将现有的安装包替换为 v4.4.29 版本的安装包
mv /usr/local/mongodb /usr/local/mongodb.bak-v3.4
cp -r mongodb-linux-x86_64-rhel70-4.4.29 /usr/local/mongodb
chown -R mongodb:mongodb /usr/local/mongodb /data/mongodb- 拷贝 MongoDB v4.4.29 安装包名称以实际为准
-
修改 MongoDB 启动命令参数,添加
--bind_ip 0.0.0.0参数vim /etc/systemd/system/mongodb.service
# 在 ExecStart 启动命令后追加 --bind_ip 0.0.0.0 参数 -
重载 systemd 并启动 MongoDB
systemctl daemon-reload
systemctl start mongodb -
登录 MongoDB,查询 featureCompatibilityVersion
/usr/local/mongodb/bin/mongo -u root -p 密码 --authenticationDatabase admin
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )- 输出
{ "featureCompatibilityVersion" : { "version" : "4.4" }, "ok" : 1 }代表升级成功 👏 👏
- 输出
副本集
提前准备
-
下载升级所需各版本的 mongodb 安装包,并上传至各服务器
- RedHat / CentOS 7.0 x64
- RedHat / CentOS 8.0 x64
- Debian 10.0+ x64
- 其他
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.23.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.25.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.29.tgzhttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.23.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.2.25.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.29.tgz- 如果操作系统高于 Debian 10,则先安装 libssl1.1 依赖
下载链接:https://pdpublic.nocoly.com/offline/common/libssl1.1_1.1.1w-0+deb11u1_amd64.deb
安装命令:dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb- 下载 mongodb 安装包
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.23.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian10-4.2.25.tgz
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian10-4.4.29.tgz- 其他操作系统的安装包可到 MongoDB 官方下载地址 进行挑选 下载
- EulerOS、麒麟、UOS 等信创操作系统,通常可使用 CentOS 7/8 相同的安装包
-
解压各版本安装包,并检测各安装包中的
mongod程序是否缺少依赖,如缺少依赖根据实际情况进行安装- RedHat / CentOS 7.0 x64
- RedHat / CentOS 8.0 x64
- Debian 10.0+ x64
解压各版本安装包
tar xvf mongodb-linux-x86_64-3.6.23.tgz
tar xvf mongodb-linux-x86_64-4.0.28.tgz
tar xvf mongodb-linux-x86_64-rhel70-4.2.25.tgz
tar xvf mongodb-linux-x86_64-rhel70-4.4.29.tgz检查各版本安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-3.6.23/bin/mongod
ldd mongodb-linux-x86_64-4.0.28/bin/mongod
ldd mongodb-linux-x86_64-rhel70-4.2.25/bin/mongod
ldd mongodb-linux-x86_64-rhel70-4.4.29/bin/mongod解压各版本安装包
tar xvf mongodb-linux-x86_64-3.6.23.tgz
tar xvf mongodb-linux-x86_64-4.0.28.tgz
tar xvf mongodb-linux-x86_64-rhel80-4.2.25.tgz
tar xvf mongodb-linux-x86_64-rhel80-4.4.29.tgz检查各版本安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-3.6.23/bin/mongod
ldd mongodb-linux-x86_64-4.0.28/bin/mongod
ldd mongodb-linux-x86_64-rhel80-4.2.25/bin/mongod
ldd mongodb-linux-x86_64-rhel80-4.4.29/bin/mongod解压各版本安装包
tar xvf mongodb-linux-x86_64-3.6.23.tgz
tar xvf mongodb-linux-x86_64-4.0.28.tgz
tar xvf mongodb-linux-x86_64-debian10-4.2.25.tgz
tar xvf mongodb-linux-x86_64-debian10-4.4.29.tgz检查各版本安装包中的
mongod程序是否缺少依赖ldd mongodb-linux-x86_64-3.6.23/bin/mongod
ldd mongodb-linux-x86_64-4.0.28/bin/mongod
ldd mongodb-linux-x86_64-debian10-4.2.25/bin/mongod
ldd mongodb-linux-x86_64-debian10-4.4.29/bin/mongod