mongod
我遇到以下错误
**重要:升级问题:在尝试升级到4.0之前,数据文件需要完全升级到3.6版。有关更多详细信息,请参见http://dochub.mongodb.org/core/4.0-upgrade-fcv。
但是如果我使用
brew services start mongodb
然后mongo服务器可以启动。
要修复mongod错误
我发现了类似的错误线程
Error while upgrading Mongodb from 3.2 to 3.6
所以我降级到mongodb 3.6,然后运行
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
然后重新安装mongodb 4.0,运行时我仍然遇到相同的错误
mongodb
我仍然必须使用
brew services start mongodb
启动mongodb
在命令行中,我运行
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 }
>
它说featureCompatibilityVersion是3.6
我还需要做什么以满足“数据文件需要完全升级到3.6版”?
谢谢!
答案 0 :(得分:40)
我需要将MongoDB降级到3.2。清理所有版本。然后逐步升级到3.4、3.6和4.0。
首先,以防万一,备份/ data / db。
以下步骤是根据我的经验,我使用brew安装/卸载mongodb。
我遵循了此线程中的说明,但是在iMac上运行以下步骤。
Error while upgrading Mongodb from 3.2 to 3.6
卸载当前的mongodb
brew uninstall mongodb
安装mongodb 3.2版本
brew install mongodb@3.2
启动mongod 3.2版本(在安装上述旧版本时,需要完整的路径来运行它。)
/usr/local/opt/mongodb@3.2/bin/mongod
开始使用mongo 3.2版本
/usr/local/opt/mongodb@3.2/bin/mongo
运行重要命令
> db.adminCommand( { setFeatureCompatibilityVersion: "3.2" } )
退出
>quit();
终结蒙古人
Find PID of mongod process using $ top
Kill the process by $ kill <PID> (the Mongo docs have more info on this)
卸载mongodb 3.2
brew uninstall mongodb@3.2
针对3.4重复上述步骤
安装mongodb 3.4版本
brew install mongodb@3.4
开始使用mongod 3.4版本
/usr/local/opt/mongodb@3.4/bin/mongod
开始使用mongo 3.4版本
/usr/local/opt/mongodb@3.4/bin/mongo
运行重要命令
> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
...
针对mongodb 3.6重复上述步骤
...
最后,在卸载3.6之后,您可以安装最新版本4.x,而不必指定@ 4.x等。
安装最新版本
brew install mongodb
答案 1 :(得分:1)
thx @searain,此过程也适用于Ubuntu,我只需要对感兴趣的人修改命令即可:
Ubuntu 16.04的命令
sudo cp -rp /var/lib/mongodb/ mongobackup/
sudo cp -p /etc/mongod.conf mongobackup/
sudo service mongod stop
sudo apt purge mongodb-org*
从docs@v3.4复制安装命令
sudo apt list -a mongodb-org
sudo apt install -y mongodb-org=3.4.22 mongodb-org-server=3.4.22 mongodb-org-shell=3.4.22 mongodb-org-mongos=3.4.22 mongodb-org-tools=3.4.22 --allow-downgrades
sudo systemctl enable mongod
sudo service mongod start
mongo -u "dba" -p "..." --authenticationDatabase "admin"
在docs中了解有关setFeatureCompatibilityVersion
的更多信息。
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
如果状态不是ok
而是not authorized
,请尝试:
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])
sudo service mongod stop
sudo apt purge mongodb-org*
从docs@v3.4复制安装命令
sudo apt list -a mongodb-org
sudo apt install -y mongodb-org=3.6.14 mongodb-org-server=3.6.14 mongodb-org-shell=3.6.14 mongodb-org-mongos=3.6.14 mongodb-org-tools=3.6.14
sudo systemctl enable mongod
sudo service mongod start
mongo -u "dba" -p "..." --authenticationDatabase "admin"
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
sudo service mongod stop
sudo apt purge mongodb-org*
sudo apt install -y mongodb-org
在此过程中,mongod.conf可能已丢失。确保已启用授权:
sudo vi /etc/mongod.conf
需要:
security:
authorization: enabled
sudo systemctl enable mongod
sudo service mongod start
答案 2 :(得分:0)
我最好只是通过mongodump / mongorestore过程来做到这一点。