CentOS环境下MongoDB更新与升级策略
升级前必须对所有数据库进行完整备份,推荐使用mongodump工具(支持增量备份),备份路径需指定到独立存储设备以避免磁盘空间不足。例如:mongodump --out /mnt/mongodb_backup/$(date +%F)。备份完成后需验证备份文件的完整性(可通过mongorestore --dryRun模拟恢复)。
cat /etc/centos-release确认系统版本。libcurl、openssl、xz-libs),避免安装失败:sudo yum install -y libcurl openssl xz-libs。FCV决定了集群支持的特性集,升级前需将FCV设置为当前版本的最低兼容值(如从3.2升级到3.4,需先将FCV设为3.2)。升级完成后,再将FCV提升至新版本的值。查看FCV:db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1});设置FCV:db.adminCommand({setFeatureCompatibilityVersion: "当前/上一版本" })。
单节点部署:直接停止旧版本服务,替换二进制文件,启动新版本并验证。步骤如下:
① 停止服务:sudo systemctl stop mongod;
② 备份数据目录(如/var/lib/mongo);
③ 删除旧版本二进制文件(如/usr/bin/mongod);
④ 解压新版本包(如tar -zxvf mongodb-linux-x86_64-rhel70-6.0.22.tgz),并将解压后的bin目录添加到系统环境变量(echo 'export PATH=/opt/mongodb/bin:$PATH' >> ~/.bashrc && source ~/.bashrc);
⑤ 启动服务:sudo systemctl start mongod;
⑥ 验证版本:mongosh --eval 'db.version()'。
副本集/分片集群部署:采用滚动升级(逐个节点升级),确保集群始终有可用节点。步骤如下:
① 登录mongos实例,禁用负载均衡器(避免数据迁移影响升级):sh.stopBalancer();
② 升级从节点:依次关闭每个从节点(db.adminCommand({shutdown: 1})),替换二进制文件,启动新版本并等待其恢复为SECONDARY状态(通过rs.status()确认);
③ 升级主节点:当所有从节点升级完成后,使用rs.stepDown()将主节点降级为从节点,然后重复从节点升级步骤升级主节点;
④ 分片集群升级:对每个分片(Shard)和仲裁节点(Arbiter)执行上述滚动升级流程,确保分片间数据同步正常。
mongosh(MongoDB 6.0+专用客户端),执行基本命令(如show dbs、db.runCommand({ping: 1}))确认服务正常;/var/log/mongodb/mongod.log(默认路径),确认无错误信息(如ERROR、WARN级别日志);MongoDB不支持跨版本升级(如从3.2直接升级到4.0),必须按照官方推荐的顺序逐步升级(如3.2→3.4→3.6→4.0→…→6.0)。违反顺序可能导致数据损坏或服务无法启动。
生产环境升级前,必须在与生产环境配置一致的测试环境中完成升级流程,验证应用程序与新版本的兼容性(如驱动支持、SQL语法变化),避免生产环境故障。
mongostat、mongotop或第三方工具(如Prometheus+Granafa);mongorestore),并重启旧版本服务。建议保留旧版本的二进制文件和配置文件至少7天。/etc/mongod.conf,添加security.authorization: enabled,并创建管理员用户;net.ssl.mode: requireSSL和证书路径,防止数据传输被窃取;