温馨提示×

Ubuntu上MongoDB如何升级

小樊
40
2025-12-06 19:55:50
栏目: 云计算

Ubuntu 上 MongoDB 升级指南

一 升级前准备

  • 备份数据:使用 mongodump 全量导出,确保可回滚。示例:mongodump --out /path/to/backup_$(date +%F)
  • 检查现状:确认当前 MongoDB 版本与运行状态。示例:mongod --versionsudo systemctl status mongod
  • 阅读版本说明:对照官方发布说明,确认目标版本与现有数据的兼容性升级路径(尤其是跨大版本)。
  • 规划维护窗口:选择低峰期,通知业务方,准备回滚方案。
    以上为通用且必要的前置步骤,强烈建议在每次升级前执行。

二 原地升级步骤(推荐)

  • 步骤概览:停服务 → 更新 APT 索引 → 配置官方仓库 → 执行升级 → 启动并验证。
  • 停服务:sudo systemctl stop mongod
  • 更新索引:sudo apt-get update
  • 导入 GPG 公钥(示例为 4.4,其他版本请替换为对应公钥 URL):
    wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
  • 添加官方源(将 focal 替换为你的 Ubuntu 代号,如 jammynoble;将 4.4 替换为目标系列):
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
  • 执行升级:
    • 直接升级到仓库最新版:sudo apt-get install -y mongodb-org
    • 或指定具体版本(示例锁定整套组件版本):
      sudo apt-get install -y mongodb-org=4.4.24 mongodb-org-server=4.4.24 mongodb-org-shell=4.4.24 mongodb-org-mongos=4.4.24 mongodb-org-tools=4.4.24
  • 启动与验证:
    sudo systemctl start mongod
    mongod --versionmongo --version
  • 可选 版本锁定(防止意外升级):
    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
    以上流程覆盖主流 Ubuntu 版本与常见升级需求。

三 跨大版本与特殊版本注意事项

  • 严格按官方支持矩阵进行跨版本升级,必要时逐版本升级(如先 4.4 → 5.0 → 6.0),避免一次性跨多代。
  • 老版本(如 3.2)在部分系统上可能未自带 systemd 单元,需手动创建 /etc/systemd/system/mongod.service 后再 systemctl daemon-reload && sudo systemctl start mongod
  • 升级后首次启动失败,优先检查日志:/var/log/mongodb/mongod.log,常见原因包括配置不兼容、权限/目录问题、WiredTiger 存储引擎版本变更等。
  • 升级完成后,使用 mongostatmongotop 观察性能与连接情况,确保业务稳定。

四 回滚方案

  • 立即停止服务:sudo systemctl stop mongod
  • 卸载新版本:sudo apt-get purge mongodb-org*
  • 恢复备份:先安装目标旧版本(或保留的旧仓库),再用 mongorestore 导入:
    mongorestore /path/to/backup_YYYY-MM-DD
  • 启动并验证:sudo systemctl start mongodmongod --version
    回滚的核心是“旧包 + 旧数据”的组合,确保版本与数据格式匹配。

0