本文已经获得转载许可,转载自:https://www.l2b.ltd/2019/628-mongodb-%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E5%90%8E%E6%95%B0%E6%8D%AE%E5%85%BC%E5%AE%B9/
mongodb 升级需要在两个相近版本之间进行。如 3.2 无法直接升级到 4.0,需要从 3.2 到 3.4,从 3.4 到 3.6,从 3.6 到 4.0 之间逐个升级。
相邻版本逐个升级,需要多次安装、卸载 mongodb 版本,安装卸载可能需要比较繁琐的操作。所以我推荐使用 docker 挂载数据目录进行升级。
mongodb 典型的数据被配置在 /var/lib/mongodb 目录下。在数据升级前,记得首先备份数据:
cp -R /var/lib/mongodb /tmp/mongdb
安装 docker 的方法可以参考这篇文章:
使用 Docker 安装 mongodb
可以使用下面的命令安装某个版本的 mongodb。可以安装的版本号可以参考 https://github.com/docker-library/mongo 中的几个版本号。
docker pull mongo:3.6.0
mongodb 从 3.4 升级到 3.6
运行如下命令,使用当前已有的数据启动 mongodb 3.4:
docker run -p 27017:27017 -v /var/lib/mongodb:/data/db --rm mongo:3.4.0
开启另一个命令行终端,执行 mongo,进入 mongo 命令行。执行以下命令,将兼容数据版本从 3.2 设置为 3.4:
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" })
这时,mongodb 数据库文件就支持被 mongdb 3.6 打开了。为了测试 3.6 版本,先关闭 docker 的 mongdb 3.4 版本程序,运行 mongodb 3.6 版本:
docker run -p 27017:27017 -v /var/lib/mongodb:/data/db --rm mongo:3.6.0
mongodb 从 3.6 升级到 4.0
和上面一样,在在终端运行 mongo 命令连接 mongodb,将数据兼容版本设置为 3.6:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" })
这时,mongodb 数据库文件就支持被 mongdb 4.0 打开了。为了测试,可以运行:
docker run -p 27017:27017 -v /var/lib/mongodb:/data/db --rm mongo:4.0.0