MongoDB在Linux上如何进行版本升级
小樊
43
2025-11-20 22:05:47
Linux 上 MongoDB 升级操作指南
一 升级前准备
- 备份数据:使用 mongodump 全量备份,确保可回滚。示例:
mongodump --out /path/to/backup_$(date +%F)。
- 检查与记录版本:确认当前 mongod/mongosh 版本,便于回滚与验证。
- 选择升级路径:大版本通常需按序逐步升级,不能跨多个大版本;同一大版本内的小版本可直接升级。
- 检查特性兼容版本:在升级前将 featureCompatibilityVersion(fcv) 设置为当前大版本,升级完成并验证后再提升到新版本。
- 客户端与驱动:同步评估并更新 MongoDB 驱动 与依赖库,避免兼容性问题。
- 变更窗口与回滚预案:选择业务低峰期,准备回滚包与回滚步骤。
以上要点与路径约束、fcv 检查和驱动兼容性在官方与行业实践中均有明确建议与要求。
二 升级路径与方式
- 小版本升级(同大版本内,如 4.2.x → 4.2.y):可直接升级包并重启服务。
- 大版本升级(如 4.2 → 4.4 → 5.0):需按序逐步升级,不可跳级;每一步升级后先验证再进入下一步。
- 方式一 包管理器升级(推荐,适用于 RHEL/CentOS 的 RPM、Ubuntu/Debian 的 DEB)
- 备份与停服:
mongodump;sudo systemctl stop mongod
- 安装新版本:
- RPM:
sudo yum install /path/to/mongodb-org-<new-version>.rpm 或 sudo dnf install ...
- DEB:
sudo dpkg -i /path/to/mongodb-org-<new-version>.deb
- 启动与验证:
sudo systemctl start mongod;mongosh --version 或连接后 db.version()
- 方式二 二进制替换升级(适用于 tar.gz 手工部署)
- 备份与正常停服(优先
db.shutdownServer())
- 解压新包并替换二进制:
tar -zxvf mongodb-linux-<arch>-<version>.tgz;将新 bin/ 下的可执行文件替换旧版(建议先备份旧 bin)
- 使用原配置启动:
/usr/local/mongodb/bin/mongod --config /etc/mongod.conf
- 验证版本与功能
以上路径、方式与命令示例可直接用于生产前演练与实施。
三 关键步骤与验证清单
- 设置并核对 fcv:
- 升级前:
db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1})(应返回当前大版本,如 “4.2”)
- 升级完成后:
db.adminCommand({setFeatureCompatibilityVersion: "<new-major-version>"})
- 启动与连接:
sudo systemctl start mongod;mongosh --host localhost:27017;db.version()
- 日志与告警:检查 mongod.log 无异常重启、无启动失败与数据文件错误。
- 应用回归:核心业务读写、索引/聚合、认证授权、复制集/分片状态与监控告警均回归通过。
fcv 的检查与设置是确保大版本升级前后兼容性与数据安全的关键环节。
四 常见注意事项与风险
- 禁止跨多个大版本:例如从 4.2 直接到 5.0 不被允许,应按 4.2 → 4.4 → 5.0 逐步升级。
- 协议与兼容性:自 MongoDB 4.2 起废弃了 OP_COMMAND/OP_COMMANDREPLY 网络协议;部分命令/权限/计数语法更严格,需评估应用侧影响。
- 写入语义变化:自 5.0 起默认 writeConcern 为 {w: majority},从 4.4 → 5.0 可能出现写入延迟上升,需在升级前评估与压测。
- 升级影响(分片集群):升级采用滚动方式,期间会发生 2–3 次自动重启并有关闭/重开平衡器的动作,请在低峰期执行并确保应用具备 自动重连 能力。
- 版本降级:大版本升级后通常不支持降级;回滚需基于备份恢复到旧版本实例。
- 云托管场景:若使用云数据库 MongoDB,请遵循其控制台升级指引与限制(不同架构/版本支持升级的目标版本不同)。
以上风险点与限制来自官方与云厂商的升级说明与兼容性更新文档。