无意的mongo版本升级后升级旧的mongo数据库

时间:2018-01-22 12:25:15

标签: mongodb archlinux

在mongodb软件包被无意升级(3.4.9 - > 3.6.1)后,有没有办法升级mongo数据库?

根据mongo文档,作为升级的prerequisite,必须使用featureCompatibilityVersion cli工具设置mongo,但是,该工具需要正在运行mongod数据库守护程序,但是,如果mongodb软件包已经升级并且数据库未设置featureCompatibilityVersion标志,则不会运行该程序。

我在ArchLinux上,我在IgnorePkg中有mongodb,但依赖boost-libswiredtiger仍然升级了。让pacman缓存已经消失了,我自己编译了旧版本的软件包,但是运行mongodb仍然失败了这个错误:

unsupported WiredTiger file version: this build  only supports major/minor versions up to 1/0,  and the file is version 2/0: WT_ERROR: non-specific WiredTiger error

我不知道这到底是什么意思(wiredtiger的问题版本是2.9.3-1,升级后的版本是2.9.3.20171205-2)。

好像我既不能降级也不升级......

其他cli工具(例如mongodump)也不会在没有正在运行的数据库的情况下运行,是否还有其他可能性(某些wiredtiger相关工具)?删除数据库并重新开始不是一种选择。

3 个答案:

答案 0 :(得分:1)

我通过在一个系统上安装旧版本的mongodb来解决这个问题,预先打包它是不成问题的(好吧,Windows 10,尽管通常它声称该软件包适用于Windows Server 2008) ,复制数据库文件(/var/lib/mongodb的内容),使用--dbpath param(mongod --dbpath /path/to/dbfiles)运行它,根据docs设置兼容性标志,最后复制db文件回到服务器。

想了解一个更好的选项,但很高兴知道db文件可以轻松转移到另一个系统,甚至是另一个架构(db虽然相对简单和小)。

答案 1 :(得分:0)

这里有类似的问题,无意中从4.2.1升级到4.4.3,然后mongodb无法启动..

最终可行的解决方案:

  1. 卸载(最新但未运行的版本:4.4.3

brew uninstall mongodb-community

  1. 重新安装,旧但有效4.2.1

brew install mongodb-community@4.2

  1. 运行
  • 暂时:brew services run mongodb-community@4.2
  • 暂时设置为可启动:brew services start mongodb-community@4.2
  1. 查看状态

brew services

答案 2 :(得分:0)

运行 mongod --repair 对我有用。