将Mongodb从3.2升级到3.6时出错

Him*_*shu 19 data-migration database-migration mongodb

我需要在我的环境中将mongodb从3.2升级到3.6.对于这个过程,我首先按照建议从3.2迁移到3.4.成功迁移到3.4后,我开始迁移到3.6我无法启动mongod.当检查日志文件时,我发现错误如: 重要:升级问题:在尝试升级到3.6之前,数据文件需要完全升级到3.4版; 有关详细信息,请参阅http://dochub.mongodb.org/core/3.6-upgrade-fcv.

我的Mongod.conf

systemLog:destination:file logAppend:true path:/var/log/mongodb/mongod.log

storage:dbPath:/ var/lib/mongo journal:enabled:true

processManagement:fork:true#fork并在后台运行pidFilePath:/var/run/mongodb/mongod.pid #pidfile的位置

net:port:27017 bindIp:127.0.0.1

Cao*_*ang 47

我有类似的问题,我已经将Ubuntu 16.04从MongoDB 3.4 升级到3.6但我错过了这一重要步骤

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
Run Code Online (Sandbox Code Playgroud)

然后我必须降级到3.4才能再做,然后再升级到3.6.这是详细步骤:

1.卸载3.6

备份/etc/mongod.conf
备份/etc/apt/sources.list.d/mongodb-org-3.6.listed(重命名或将其移动到另一个文件夹)

sudo apt-get update
sudo apt-get remove mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
Run Code Online (Sandbox Code Playgroud)

2.重新安装3.4
检查文件夹/etc/apt/sources.list.d/以查看该文件是否存在:mongodb-org-3.4.list.如果它不存在,您可以通过此命令重新创建:

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Run Code Online (Sandbox Code Playgroud)

然后安装 apt-get

sudo apt-get update
sudo apt-get install -y mongodb-org
mongod --version
sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我通过这些命令解决了命令systemctl start mongod返回错误Failed to start mongod.service: Unit mongod.service not found:

sudo systemctl enable mongod
sudo service mongod restart
sudo service mongod status
Run Code Online (Sandbox Code Playgroud)

3.执行非常重要的命令
降级到3.4后,运行它

mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
{ "featureCompatibilityVersion" : "3.4", "ok" : 1 }
> exit
Run Code Online (Sandbox Code Playgroud)

4.再次升级3.6
恢复此文件/etc/apt/sources.list.d/mongodb-org-3.6.listed

sudo apt-get update
sudo apt-get install mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
Run Code Online (Sandbox Code Playgroud)

恢复/etc/mongod.conf.现在,MongoDB 3.6开始没有任何问题

  • 我必须为mongodb-org添加回购密钥:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 (3认同)
  • 我必须在步骤"2.重新安装3.4"中添加--allow-unauthenticated"sudo apt-get install -y mongodb-org --allow-unauthenticated" (2认同)