温馨提示×

MongoDB如何在Linux上进行版本升级

小樊
43
2025-12-28 05:59:07
栏目: 云计算

Linux 上 MongoDB 版本升级实操指南

一 升级前准备

  • 完整备份:使用 mongodump 对业务数据进行逻辑备份,确保可回滚。示例:mongodump --out /path/to/backup_$(date +%F)
  • 核查版本与部署形态:确认当前 mongod/mongo shell 版本、存储引擎(如 WiredTiger)、是否为 副本集/分片集群。命令:mongod --versionmongo --version
  • 检查兼容性:阅读目标版本的 Release Notes/兼容性变更,评估驱动、特性与参数变更影响。
  • 维护窗口与回滚方案:选择业务低峰期,准备回滚包或快照,确保应用具备 自动重连 能力。
  • 配置与权限:保留现有 /etc/mongod.confkeyFile/证书;如使用认证,确保升级前后 用户与角色 一致。
  • 注意:升级前务必先备份,升级过程中密切监控并准备回滚。

二 升级路径与方式

  • 小版本升级(如 4.4.x → 4.4.y):一般可直接通过包管理器在线升级二进制与工具。
  • 大版本升级(如 4.2 → 4.4 → 5.0 → 6.0 → 7.0 → 8.0):通常需按官方支持的相邻版本 逐级升级,不建议跨多个大版本直接升级。
  • 升级方式:
    • 包管理器(推荐):APT/YUM 更新仓库后执行升级,便于依赖与服务的统一管理。
    • 手动安装:下载 .tgz 二进制替换,灵活但需自行维护路径、环境变量与启停脚本。
  • 集群滚动升级要点:先 SecondaryPrimary,逐节点重启;分片集群升级期间 平衡器关闭,升级完成后恢复。
  • 重要差异示例:自 MongoDB 5.0 起,默认 writeConcern{w:1} 调整为 {w:majority},从 4.4 → 5.0 可能出现写入延迟上升,需提前评估与压测。

三 分步操作示例

  • Debian/Ubuntu(APT,小版本与大版本均适用)
    1. 备份与停服:mongodump --out /path/to/backup_$(date +%F)sudo systemctl stop mongod
    2. 更新仓库(以 Debian 11 bullseye、版本 6.0 为例,实际请替换为你的发行版与目标版本):
      wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
      echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
      sudo apt-get update
    3. 执行升级:
      • 小版本:sudo apt-get install --only-upgrade mongodb-org
      • 大版本:sudo apt-get install -y mongodb-org=<new_version>(按需固定版本)
    4. 启动与验证:sudo systemctl start mongodmongod --versionmongo --eval 'db.version()'(新版 shell 可能为 mongosh
  • RHEL/CentOS(YUM)
    1. 备份与停服:mongodump --out /path/to/backup_$(date +%F)sudo systemctl stop mongod
    2. 配置仓库(以 4.4 为例,实际替换为你的目标版本):
      cat <<EOF | sudo tee /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
      EOF
    3. 执行升级:
      • 小版本:sudo yum update mongodb-org
      • 大版本:sudo yum install -y mongodb-org-<new_version> mongodb-org-server-<new_version> mongodb-org-shell-<new_version> mongodb-org-mongos-<new_version> mongodb-org-tools-<new_version>
    4. 启动与验证:sudo systemctl start mongodmongod --versionmongo --eval 'db.version()'
  • 手动安装(.tgz,适合无法使用仓库的场景)
    1. 备份与停服:mongodump --out /path/to/backup_$(date +%F)sudo systemctl stop mongod
    2. 下载与部署:
      wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-<version>.tgz
      tar -zxvf mongodb-linux-x86_64-<version>.tgz
      sudo mv mongodb-linux-x86_64-<version> /opt/mongodb-<version>
    3. 替换二进制或调整 PATH:
      • 替换:sudo mv /usr/bin/mongod /usr/bin/mongod-<old>sudo ln -sfn /opt/mongodb-<version>/bin/mongod /usr/bin/mongod(同法处理 mongos/mongo/mongosh)
      • 或 PATH:echo 'export PATH=/opt/mongodb-<version>/bin:$PATH' | sudo tee -a /etc/profile.d/mongodb.sh && source /etc/profile.d/mongodb.sh
    4. 启动与验证:sudo systemctl start mongod(或 sudo /opt/mongodb-<version>/bin/mongod --config /etc/mongod.conf);mongod --version
  • 提示:副本集/分片集群请在 Secondary 节点逐个执行相同步骤,最后滚动升级 Primary;分片集群升级期间 平衡器关闭,完成后开启。

四 升级后验证与回滚

  • 版本与服务:mongod --versionmongo --eval 'db.version()'systemctl status mongod 检查是否 active
  • 复制与分片:副本集执行 rs.status() 检查 optime/health;分片集群确认 mongos 路由正常、balancer 已恢复。
  • 数据与应用:抽样查询与关键业务回归;监控 连接数、写入延迟、错误日志
  • 性能与行为变更:如从 4.4 → 5.0,关注 writeConcern majority 带来的写入延迟变化,必要时在连接串或代码中显式设置 {w:1} 过渡。
  • 回滚:若出现异常,优先用备份 mongorestore 恢复到升级前时间点;或切回旧版二进制并重启(手动安装场景需还原二进制/符号链接)。

五 常见问题与排错

  • 不支持的跨版本:未按相邻版本逐级升级会导致升级失败或异常,需回到官方支持路径重来。
  • 包冲突与残留:混合使用 APT/YUM 与手动安装 易产生冲突,建议统一方式;必要时清理旧包与旧二进制后再装。
  • 权限与认证:升级后若 SCRAM 用户不可用,检查 /etc/mongod.conf 认证配置与用户状态。
  • 配置变更:新版可能废弃参数或改变默认值(如 5.0writeConcern),需在升级前评估并在必要时显式配置。
  • 集群不一致:滚动升级未按 Secondary→Primary 顺序或节点间版本不一致,可能导致复制滞后,需按规范重做滚动。

0