温馨提示×

centos mongodb版本升级攻略

小樊
39
2025-11-21 20:12:10
栏目: 云计算

CentOS 上 MongoDB 版本升级攻略

一 升级总览与准备

  • 升级前务必完成:全量备份(如 mongodump)、确认当前版本(mongod --version 或 shell 内 db.version())、在测试环境演练、规划维护窗口并通知业务方。升级以“小步快跑、可回滚”为原则,减少风险窗口。

二 升级路径与兼容性关键点

  • 逐级升级:MongoDB 不支持跨多个主版本直接升级,需按相邻主版本逐步升级(例如:4.2 → 4.4 → 5.0)。每一步升级后都建议先验证应用与数据一致性,再继续下一步。
  • 特性兼容性版本 FCV:升级前将 featureCompatibilityVersion(FCV) 设置为当前版本(如从 4.2 → 4.4 前,确保 FCV=4.2),升级完成并验证无误后再提升到新版本(如 4.4)。示例:
    • 查看:db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1})
    • 设置:db.adminCommand({setFeatureCompatibilityVersion: “4.2”})
  • 特殊版本注意:从 4.0 → 4.2 需检查 local.replset.minvalid 集合是否存在 oplogDeleteFromPoint 字段,若存在需先清理或调整后再升级,避免不兼容导致启动失败。

三 升级方式一 YUM 在线升级(推荐)

  • 步骤概览:
    1. 备份数据与配置;2) 配置或确认 MongoDB 官方 YUM 仓库;3) 执行升级命令;4) 重启服务;5) 验证版本与 FCV;6) 按需提升 FCV。
  • 仓库配置示例(按需选择目标版本仓库,以下为 4.4 示例):
    • 新建文件:/etc/yum.repos.d/mongodb-org-4.4.repo
    • 内容: [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 install -y mongodb-org
    • 重启:sudo systemctl restart mongod
    • 验证:mongod --version 或 mongo --eval “db.version()”
    • 提升 FCV(确认无误后):db.adminCommand({setFeatureCompatibilityVersion: “4.4”})
  • 说明:不同版本请切换对应的 repo 段(如 4.2、4.4 等),保持仓库与安装包版本一致,避免混装。

四 升级方式二 离线 RPM 或二进制替换

  • RPM 就地升级(适用于无外网环境):
    • 备份数据与配置;2) 下载目标版本 RPM(建议整包:server/shell/tools);3) 正常关闭实例(mongo shell 内 db.shutdownServer());4) 执行升级:sudo rpm -U *.rpm;5) 启动:sudo systemctl start mongod;6) 验证版本与 FCV;7) 按需提升 FCV。
  • 二进制替换(Tarball 场景):
    • 备份与正常关闭;2) 解压新版本,备份并替换 bin/ 下的关键可执行文件(如 mongod、mongos、mongo、install_compass);3) 启动并验证;4) 按需提升 FCV。
  • 异常关闭处理:若以 kill 等异常方式终止,可能残留 mongod.lock,需清理后再启动(仅在确认异常关闭的前提下执行)。

五 升级后验证与回滚策略

  • 验证清单:
    • 服务状态:systemctl status mongod;日志无异常(journal 或 logpath);
    • 版本:mongod --version / db.version();
    • FCV:db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1});
    • 复制集/分片:rs.status()、sh.status() 正常;
    • 应用连通性与关键业务回归;监控 mongostat、mongotop 观察性能与异常。
  • 回滚建议:
    • 优先基于备份恢复(mongorestore);YUM 场景可降级到旧版本包并重启;RPM 场景可用 rpm -U 回退或重装旧包;回退后按需将 FCV 调回原版本。任何回滚前再次确认数据与配置的回滚一致性。

0