# 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

1789464024969.png

1789464919731.png

1789464900786.png

# 测试升级

# 安装新版本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

1789465747834.png

注意:该备份文件是压缩过的,还原时需要先解压

也可以停服后重新备份一个新文件,执行备份脚本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