温馨提示×

MongoDB在CentOS上如何升级版本

小樊
34
2025-12-09 13:28:25
栏目: 云计算

MongoDB在CentOS上的升级指南

一 升级前准备

  • 完整备份数据与配置:建议先做一次可恢复的备份(如文件系统快照或逻辑备份),并确保有回滚方案。升级过程中可能出现短暂不可用。
  • 确认当前版本与目标版本:执行 mongod --version 与 db.version(),明确升级路径。
  • 检查特性兼容版本:在 mongo shell 中执行
    db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1})
    升级前通常需确保 FCV 与目标大版本一致或按步骤调整(见下文)。
  • 升级路径规则:MongoDB 不支持跨多个大版本直接升级,需按相邻大版本逐级升级(例如:4.2 → 4.4 → 5.0)。
  • 变更窗口与连接:选择业务低峰期,确保应用具备自动重连机制。

二 使用YUM在线升级步骤(适用于已通过官方仓库安装)

  1. 备份与检查
    • 备份数据目录与配置文件(如 /var/lib/mongo 与 /etc/mongod.conf)。
    • 确认当前版本:mongod --version。
  2. 更新仓库元数据
    • 清理缓存:sudo yum clean all
  3. 执行升级(整包升级,保持组件版本一致)
    • 推荐:sudo yum update mongodb-org
    • 如需固定小版本(示例为 4.4):sudo yum update mongodb-org-4.4
  4. 重启服务
    • sudo systemctl restart mongod
  5. 验证版本
    • mongod --version 或 mongo --eval “db.version()”
  6. 调整特性兼容版本 FCV(重要)
    • 升级完成后,将 FCV 调整到目标大版本(示例:4.4):
      use admin
      db.adminCommand({setFeatureCompatibilityVersion: “4.4”})
    • 如需启用新特性,可在确认兼容后设置为目标版本(例如升级到 5.0 后设为 “5.0”)。
  7. 回滚预案
    • 如出现异常,可先恢复备份,再使用对应版本的 YUM 历史版本或 rpm 包回退。

三 使用RPM包手动升级步骤(适用于使用rpm安装的场景)

  1. 备份与检查(同上)。
  2. 下载目标版本的 RPM 包(示例组件:server、shell、tools),注意选择与系统匹配的版本与架构。
  3. 正常关闭实例
    • 在 mongo shell:use admin; db.shutdownServer();
  4. 执行升级(rpm -U 为升级安装)
    • 示例:sudo rpm -U mongodb-org-server-4.4.24-1.el7.x86_64.rpm
    • 按需升级其他组件(如 mongodb-org-shell、mongodb-org-tools)。
  5. 启动与验证
    • sudo systemctl start mongod
    • mongod --version 或 mongo --eval “db.version()”
  6. 调整 FCV(同上)。

四 不同部署形态与版本路径要点

  • 单机/副本集:按相邻大版本逐级升级;逐个节点滚动升级(先备后主),每步完成后校验复制与业务。
  • 分片集群:升级 mongos 节点,再逐个升级 config server,最后滚动升级各 shard(均为相邻大版本逐级)。升级过程中分片集群的平衡器会被关闭,升级完成后自动恢复。
  • 版本路径示例:
    • 4.2 升级到 5.0:必须先到 4.4,再到 5.0
    • 3.2 升级到 4.2:路径为 3.2 → 3.4 → 4.0 → 4.2
  • 重要变更提示:从 4.4 → 5.0 起,默认的 writeConcern 由 {w:1} 调整为 {w:majority},可能导致写入延迟上升,需在升级前评估。

五 常见问题与排查

  • 启动失败:检查 /var/log/mongodb/mongod.log 与 /etc/mongod.conf 配置兼容性;必要时回滚到上一个稳定版本。
  • FCV 不一致:升级后若功能异常,核对 FCV 是否已设置为目标大版本(如 4.45.0)。
  • 客户端兼容:驱动与特性随版本变化,升级后需回归测试应用。
  • 回滚:优先使用备份恢复;若用 rpm,可准备对应版本的旧包进行回退。

0