You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MongoDB从3.2升级到3.6启动失败:提示需完成3.4全量升级求助

解决MongoDB从3.4升级到3.6时启动失败的问题

你遇到的这个报错其实是MongoDB升级流程里的关键环节没做到位——虽然你完成了3.2到3.4的二进制程序升级,但数据的**特性兼容版本(Feature Compatibility Version,简称FCV)**还停留在3.2状态,没有完全切换到3.4,所以3.6的mongod启动时会拒绝加载未完成升级的数据。

下面是具体的解决步骤,一步步来就能搞定:

步骤1:回退到MongoDB 3.4并启动服务

现在3.6的mongod启动不了,得先换回3.4的程序来处理数据:

  • 先终止当前卡住的3.6 mongod进程:sudo systemctl stop mongod(如果是systemd管理的服务,或者用kill命令手动终止进程)
  • 切换回3.4版本的mongod二进制文件:
    • 如果你用包管理工具(如apt/yum)安装,就切换到3.4的软件源,重新安装3.4版本的包;
    • 如果是手动解压安装,就把3.4的mongod二进制文件替换回去。
  • 用你提供的mongod.conf配置启动3.4的mongod服务:mongod -f /etc/mongod.conf(或通过systemctl启动:sudo systemctl start mongod

步骤2:设置FCV为3.4

启动3.4的mongod后,连接到数据库完成数据的最终升级:

  • 打开mongo shell连接实例:mongo --port 27017(如果开启了认证,记得加上-u-p--authenticationDatabase admin参数)
  • 切换到admin数据库:use admin
  • 执行命令设置FCV:db.adminCommand({ setFeatureCompatibilityVersion: "3.4" })
  • 验证设置是否成功:db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 }),返回结果里的version字段应该显示为"3.4"

步骤3:确认数据升级完成

  • 查看mongod日志(/var/log/mongodb/mongod.log),确认日志里出现类似"Feature compatibility version set to 3.4"的提示,且没有其他升级相关的错误信息。
  • 可选但建议:对各个数据库的集合执行验证命令,确保数据完好:db.runCommand({ validate: 1 })(每个数据库下都执行一遍)

步骤4:升级到MongoDB 3.6

现在数据已经完全兼容3.4了,可以放心升级到3.6:

  • 停止3.4的mongod服务:sudo systemctl stop mongod
  • 安装/替换为3.6版本的mongod二进制文件
  • 用原来的mongod.conf启动3.6的mongod服务,这时候应该就能正常启动了
  • 启动成功后,建议把FCV升级到3.6,这样就能使用3.6的所有新特性:
    use admin
    db.adminCommand({ setFeatureCompatibilityVersion: "3.6" })
    

一些注意事项

  • 升级前一定要做好数据备份!可以用mongodump工具全量备份,避免操作失误导致数据丢失。
  • 如果是副本集或者分片集群,升级顺序要注意:先升级所有secondary节点,再升级primary,最后统一设置FCV;单节点按上面步骤操作即可。
  • 检查你的mongod.conf配置,确保3.6版本支持这些配置项——你的配置里的systemLogstorageprocessManagementnet都是3.6兼容的,不用改动。

内容的提问来源于stack exchange,提问作者Himanshu

火山引擎 最新活动