升级前必须备份所有重要数据,防止操作失误导致数据丢失。常用工具为mongodump,示例命令:
mongodump --out /path/to/backup
备份完成后,验证备份文件的完整性(如检查备份目录是否存在dump文件夹及其中的集合数据)。
使用以下命令查看当前MongoDB版本:
mongod --version
MongoDB不支持跨主要版本升级(如从3.6直接升级到4.2),必须按照官方推荐的顺序逐步升级(例如:3.6→4.0→4.2→…)。可通过MongoDB官方文档确认当前版本的最低升级目标。
升级前务必查阅目标版本的兼容性更改文档(如MongoDB 4.2的Compatibility Changes),重点关注以下内容:
ssl相关选项,需替换为tls);retryWrites特性);text/2dsphere索引升级后可能无法降级到2.4)。在生产环境升级前,必须在测试环境中模拟升级流程:
根据系统初始化工具选择对应命令:
sudo systemctl stop mongodsudo service mongod stopps aux | grep mongod确认进程已终止。若通过apt(Debian/Ubuntu)或yum(CentOS/RHEL)安装MongoDB,可直接使用包管理器升级:
sudo apt-get update
sudo apt-get install mongodb-org
sudo yum install mongodb-org
包管理器会自动处理依赖关系并保留原有配置。
若未使用包管理器,需手动下载目标版本的二进制包(如从MongoDB下载页面获取Linux版本的tgz文件):
# 下载(以4.4为例)
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.4.6.tgz
# 解压
tar -zxvf mongodb-linux-x86_64-4.4.6.tgz
# 替换旧版本二进制文件(假设旧版本在/usr/local/mongodb)
sudo mv mongodb-linux-x86_64-4.4.6 /usr/local/mongodb
sudo ln -sf /usr/local/mongodb/bin/mongod /usr/bin/mongod
sudo ln -sf /usr/local/mongodb/bin/mongo /usr/bin/mongo
手动升级需注意:备份原有配置文件(如/etc/mongod.conf),避免被新版本覆盖。
sudo systemctl start mongodsudo service mongod startsudo systemctl status mongod(或service mongod status)。连接到MongoDB实例,检查版本信息:
mongo --eval 'db.version()'
输出应为目标版本(如4.4.6)。进一步验证数据完整性:
mongo --eval 'db.runCommand({connectionStatus: 1})'
确保ok值为1,表示连接正常。
FCV(Feature Compatibility Version)决定了MongoDB实例是否支持新版本的功能。升级后需将FCV设置为目标版本:
mongo --eval 'db.adminCommand({setFeatureCompatibilityVersion: "4.4"})'
验证FCV设置:
mongo --eval 'db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1})'
输出应显示"version": "4.4"。
若升级成功且无回滚需求,可清理旧版本的残留文件:
/usr/bin/mongod旧链接);/etc/mongod.conf.bak);/var/lib/mongo旧数据,需确认备份已完成)。升级后24小时内密切监控数据库性能(如CPU、内存、磁盘IO)和日志(/var/log/mongodb/mongod.log),重点关注:
rs.status())。若当前版本与目标版本间隔超过1个主要版本(如从3.6升级到4.4),需逐版本升级(3.6→4.0→4.2→4.4)。例如:
升级后需检查配置文件(如/etc/mongod.conf)中的选项是否与新版本兼容:
ssl相关选项,替换为tls);tlsMode、tlsCertificateKeyFile)。升级前需制定回滚方案:
# 停止新版本服务
sudo systemctl stop mongod
# 替换回旧版本二进制文件
sudo mv /usr/local/mongodb.old /usr/local/mongodb
sudo ln -sf /usr/local/mongodb/bin/mongod /usr/bin/mongod
# 启动旧版本服务
sudo systemctl start mongod
```。