centos mongodb升级流程指南
小樊
54
2026-01-10 00:40:53
CentOS 上 MongoDB 升级流程指南
一 升级前准备
- 备份与回滚预案:全量备份数据与配置,准备回滚方案(如保留旧版本安装包、快照或复制集从节点回切)。
- 版本路径与兼容性:MongoDB 稳定版为偶数代(如 4.4、5.0、6.0、7.0),不支持跨大版本直接升级,需要逐级升级;补丁版本(同代小版本)可直接升级。升级前将 featureCompatibilityVersion(FCV) 设置为当前大版本(例如从 4.4 → 5.0,先将 FCV 设为 4.4)。从 6.0 起不再内置旧的 mongo shell,需使用 mongosh。
- 环境与工具:确认 CentOS 7/8、文件系统与磁盘空间、SELinux/防火墙策略;准备 mongodump/mongorestore、监控与日志采集;在应用侧安排维护窗口与兼容性验证。
二 升级路径与方式
- 方式一 YUM 仓库升级(推荐,适用于通过官方仓库安装的 RPM 包)
- 备份数据与配置;检查当前版本:mongod --version。
- 创建或更新仓库文件 /etc/yum.repos.d/mongodb-org.repo,示例(以 4.4 为例,其他版本替换版本号与 baseurl):
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
- 清理缓存并升级:sudo yum clean all && sudo yum update -y mongodb-org。
- 重启服务:sudo systemctl restart mongod。
- 验证:mongod --version 或 mongo/mongosh --eval “db.version()”。
说明:如需固定小版本,可在 repo 中锁定具体版本号,或按版本单独指定包组更新。
- 方式二 二进制替换升级(适用于解压安装或无法使用 YUM 的场景)
- 正常关闭实例:mongo/mongosh admin --eval “db.shutdownServer()”。
- 备份旧二进制(如 bin/ 目录),下载并解压目标版本,将新版的 mongod/mongos(以及 install_compass/mongo 若需)复制到旧目录覆盖。
- 启动实例:mongod -f /path/mongod.conf。
- 升级 FCV 到新大版本。
- 从 6.0 起使用 mongosh 连接(mongo 不再随包提供)。
三 分场景操作步骤
- 单机/副本集
- 前置检查:确认版本与 FCV(db.adminCommand({getParameter:1,featureCompatibilityVersion:1}))。
- 备份:mongodump --out /backup/。
- 逐代升级:按小版本或大版本逐级执行(YUM 或二进制),每步重启并校验。
- 升级 FCV:例如 4.4 → 5.0,先确保 FCV=4.4,升级完成后执行 db.adminCommand({setFeatureCompatibilityVersion:“5.0”})。
- 验证:版本、进程状态、复制延迟/回放进度、应用连通性与关键业务回归。
- 分片集群
- 维护窗口与流量控制:降低写入压力或短暂只读。
- 升级次序:先升级 Config Servers(多数部署为 3 节点,逐个滚动),再升级 Shard 副本集(逐个副本集滚动),最后升级 mongos 路由。
- 滚动升级要点:每个节点先摘除流量(如降低优先级/隐藏),正常关闭,升级二进制或 YUM,启动并等待追平 oplog,恢复流量;全程保持多数节点可用。
- 升级 FCV:在所有分片与配置服务器一致升级完成后,再统一设置到新大版本。
- 回归与观测:分片均衡、路由命中、错误日志与监控告警检查。
四 升级后验证与回滚
- 验证清单:
- 服务状态:systemctl status mongod;端口 27017 监听;日志无异常。
- 版本与 FCV:mongod --version;db.adminCommand({getParameter:1,featureCompatibilityVersion:1})。
- 数据一致性与复制:复制集/分片健康、oplog 回放无异常、关键集合/索引/视图可用。
- 应用连通:驱动版本兼容、慢查询与错误日志回归。
- 回滚策略:
- YUM 场景可降级到旧版本包并重启;二进制场景用备份的旧二进制替换并恢复配置。
- 如升级失败且无法快速修复,使用备份进行 mongorestore 恢复;必要时基于快照/从节点重建。
五 常见问题与注意事项
- 禁止跨大版本:如 4.2 → 5.0 必须先到 4.4;补丁版本可跨小版本升级。
- 必须先设置 FCV:升级前将 FCV 设为当前大版本,升级完成后再提升到新大版本。
- 正常关闭:避免 kill -9,异常关闭可能导致 mongod.lock 残留,需要清理后再启动。
- 4.0 → 4.2 兼容性检查:若 local.replset.minvalid 存在 oplogDeleteFromPoint 字段,需先处理后再升级。
- Shell 变化:6.0+ 不再内置 mongo,请使用 mongosh;如需旧 shell,单独下载。
- 配置与存储引擎:升级后核对 storage.engine(推荐 WiredTiger)、journal、网络与认证配置;变更配置建议逐项验证。