今天一客户想把自己当前使用的mongodb数据库4.2版本升级到7.0版本。难道mongodb能直接跳跃升级吗? 经过几经查找资料,貌似真不行呀。确定升级流程如下:
- 还得从mongo4.2升级到5.0。
- 其次再从5.0升级到6.0。
- 最后再从6.0升级到7.0。
开始升级之前将数据进行备份 这一步很重要,数据无价。
在正式开始升级前需要了解一下在 MongoDB 中,featureCompatibilityVersion
用于指示数据库的功能兼容性版本。在进行升级时,需要确保featureCompatibilityVersion
版本是升级目标版本的兼容值。
查看当前数据库的featureCompatibilityVersion版本
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
设置数据库的featureCompatibilityVersion版本
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
上面表示设置数据库featureCompatibilityVersion版本为5.0
MongoDB 4.2升级到5.0版本
首先停止数据库,使用5.0版本的mongod命令执行如下升级操作 需要加参数 --upgrade
mongod.exe --dbpath=D:\mongodb_data\mongodb\4.2\data --upgrade
执行完成后,从日志中看到exitCode编码是0表示升级成功,此时可以用5.0版本的Mongodb数据指向4.2的数据目录。
升级到5.0后 启动数据库,使用mongo命令连上数据库设置featureCompatibilityVersion版本号为5.0,即完成了4.2升级到5.0的工作。操作命令如下:
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
这里感觉挺鸡肋的,为啥都执行了–upgrade操作了 不能自动改为setFeatureCompatibilityVersion为升级的目标版本吗? 需要手动操作一遍。如果不手动操作这一步,升级到6.0将会报错:
UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document (ERROR: Location4926900: Invalid featureCompatibilityVersion document in admin.system.version: { _id: \"featureCompatibilityVersion\", version: \"4.2\" }. See https://docs.mongodb.com/master/release-notes/4.4-compatibility/#feature-compatibility.
:: caused by :: Invalid value for featureCompatibilityVersiondocument in admin.system.version, found 4.2, expected '4.4' or '4.9' or '5.0.
See https://docs.mongodb.com/master/release-notes/4.4-compatibility/#feature-compatibility.). If the current featureCompatibilityVersion is below 4.4,
see the documentation on upgrading at https://docs.mongodb.com/master/release-notes/4.4/#upgrade-procedures."}}
MongoDB 5.0升级到6.0版本
首先停止数据库,使用6.0版本的mongod命令执行如下升级操作 需要加参数 --upgrade
mongod.exe --dbpath=D:\mongodb_data\mongodb\4.2\data --upgrade
执行完成后,从日志没有出现异常错误表示升级成功,此时可以用6.0版本的Mongodb数据指向4.2的数据目录.最后用命令行工具mongo或者mongosh验证一下6.0版本是否升级成功,不要忘记需要手工更改setFeatureCompatibilityVersion
版本号为6.0
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
MongoDB 6.0升级到7.0版本
首先停止数据库,使用同样逻辑的方法把7.0版本的mongod命令执行如下升级操作 需要加参数 --upgrade
mongod.exe --dbpath=D:\mongodb_data\mongodb\4.2\data --upgrade
执行完成后,从日志中没出现异常错误表示升级成功,此时可以用7.0版本的Mongodb数据指向4.2的数据目录.最后用命令行工具mongo或者mongosh验证一下7.0版本是否升级成功,同样的不要忘记需要手工更改setFeatureCompatibilityVersion
版本号为7.0
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
7.0更改版本号需要价confirm:true参数 不然会产生报错:
errmsg" : "Once you have upgraded to 7.0, you will not be able to downgrade FCV and binary version without support assistance.
Please re-run this command with 'confirm: true' to acknowledge this and continue with the FCV upgrade.
以上一系列的操作将数据库从4.2版本成功升级到7.0版本特此记录一下。