在mongodb软件包被无意升级(3.4.9 - > 3.6.1)后,有没有办法升级mongo数据库?
根据mongo文档,作为升级的prerequisite,必须使用featureCompatibilityVersion
cli工具设置mongo
,但是,该工具需要正在运行mongod
数据库守护程序,但是,如果mongodb软件包已经升级并且数据库未设置featureCompatibilityVersion
标志,则不会运行该程序。
我在ArchLinux上,我在IgnorePkg
中有mongodb,但依赖boost-libs
和wiredtiger
仍然升级了。让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
相关工具)?删除数据库并重新开始不是一种选择。
答案 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无法启动..
最终可行的解决方案:
4.4.3
)brew uninstall mongodb-community
4.2.1
brew install mongodb-community@4.2
brew services run mongodb-community@4.2
brew services start mongodb-community@4.2
brew services
答案 2 :(得分:0)
运行 mongod --repair
对我有用。