# MongoDB跨大版本升级方案
# 迁移案例
背景:受安全漏洞 CVE-2025-14847 影响,要对mongodb进行升级(https://www.mongodb.com/resources/products/alerts) 目标:把 MongoDB 4.0.13 的数据迁移到 MongoDB 7.0.43。 方式:逻辑迁移(dump 成 BSON 再 restore),因此可以跨大版本一步到位,不受"原地升级必须逐个大版本"的限制。 前提:接受一次停机(或只读)窗口。
注意:
- MongoDB8不支持centos7系统,选择新版本下载时请先确认客户提供的操作系统版本
- 官方下载地址: MongoDB Community Server: https://www.mongodb.com/try/download/community Mongo Shell: https://www.mongodb.com/try/download/shell MongoDB Database Tool: https://www.mongodb.com/try/download/database-tools



# 测试升级
# 安装新版本MongoDB
1、下载上述3个rpm包(Mongod、mongoshell、mongodump和mongorestore)
2、将其上传到测试服务器,并安装
# 安装服务端
yum install mongodb-org-server-7.0.43-1.el7.x86_64.rpm -y
# 安装客户端shell工具
yum install mongodb-mongosh-2.11.1.x86_64.rpm -y
# 安装数据库工具(备份还原)
yum install mongodb-database-tools-rhel70-x86_64-100.18.0.rpm -y
3、启动mongo
# 查看mongod服务
systemctl status mongod
# 启动mongodb
systemctl start mongod
# 设置开机启动
systemctl enable mongod
# 关闭mongodb
systemctl stop mongod
# 备份老版本MongoDB数据
从原mongodb目录下获取历史备份文件,一般情况下原环境设置有每日备份,备份脚本为:/usr/local/ehr/mongodb目录/mongodb_data_bak.sh
备份目录:/home/local/ehr/mongodb/data_bak

注意:该备份文件是压缩过的,还原时需要先解压
也可以停服后重新备份一个新文件,执行备份脚本mongodb_data_bak.sh,或手动执行命令:
# 该命令会备份到当前目录:ehr_data_202xxxxx
/home/local/ehr/mongodb/bin/mongodump -h 127.0.0.1:27011 -u ehr -p 密码 -d ehr --gzip -o ehr_data_`date +%Y%m%d%H%M%S`
# 还原至新版本MongoDB
将备份文件拷贝至测试服务器(新Mongodb),如果取的历史备份文件,请先解压: tar -zvxf ehr_202xxxxxx.tar.gz。
上述命令手动备份的是一个目录,不需要解压。
# 假设已拷贝并解压到 /tmp/ehr_data/ehr
mongorestore -h 127.0.0.1:27017 -d ehr --drop --gzip /tmp/ehr_data/ehr
编撰人:wangyxyf