使用Brew升级Mongo从3.4升级到4.0错误:数据文件需要完全升级到版本3.6,然后再尝试升级到4.0

时间:2018-07-08 00:27:24

标签: mongodb

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版”?

谢谢!

3 个答案:

答案 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的命令

备份数据库和mongod.conf

sudo cp -rp /var/lib/mongodb/ mongobackup/

sudo cp -p /etc/mongod.conf mongobackup/

卸载v4

sudo service mongod stop

sudo apt purge mongodb-org*

安装v3.4

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

mongo -u "dba" -p "..." --authenticationDatabase "admin"

发布命令

docs中了解有关setFeatureCompatibilityVersion的更多信息。

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

如果状态不是ok而是not authorized,请尝试:

db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

卸载v3.4

sudo service mongod stop

sudo apt purge mongodb-org*

安装v3.6

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

mongo -u "dba" -p "..." --authenticationDatabase "admin"

发布命令

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

卸载v3.6

sudo service mongod stop

sudo apt purge mongodb-org*

安装v4

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过程来做到这一点。