Brew 升级MongoDB无法连接数据库
上周末终于下定决心把家里的一台2012年的Mac Mini(买来后就加装了SSD并升级了内存)从10.11 升级到10.14。升级完了觉得比原来有点慢,尤其是启动的时候,但想想机器里装了那么多东西,又不是全新安装,再加上它也不是我的主力开发机器,也就忍了。
除了有些app需要升级以外,其他基本上正常。花时间较多的就是我用的一个键盘快捷键软件karabiner,改动比较大,原来的配置都没法用了。又得重新找配置,找到了还要改成自己的习惯,找不到合适的就得自己写,尤其是我这台Mac Mini配的苹果蓝牙键盘有些键坏了(1-9,F1-F9打不出来),就得重写配置,如按right_ctrl + a-l
来输出数字1-9
。
MongoDB 升级到了4.x,出错了!
我的MongoDB是用homebrew安装的,当时安装的版本是3.4。由于开发上的需要,我一直使用brew pin mongodb
把版本固定在3.4。后来虽然换了机器,我也忘了unpin
,就一直固定在那个版本。
这次升级macOS 10.14后,用brew
升级安装的软件包的时候就顺手把原来所有pin
的都unpin
了,mongoDB
也升级到了4.0.3。昨天有个朋友需要配置一下Mac下的开发环境,在给他讲的时候顺手启动了一下MongoDB,竟然无法启动,给了这么一串信息:
[main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
什么情况?朋友新装的可以顺利启动,我的竟然不可以?
MongoDB启动使用brew的默认配置
顺便说一下,我在开发机器上一般是用brew services start mongodb
将mongod
设置为开机自启动的,会调用brew的一个默认配置文件,这样省得自己再去设置数据存储路径等。在非主力机上我一般用手动启动,也是使用brew的默认配置文件mongod --config /usr/local/etc/mongod.conf
,我在.zshrc
里配置了一个名为mongobrew
的alias,每次敲mongobrew
就行了,省得敲那么多键。
不过太多alias了也是个麻烦,记不住啊!我大概有差不多3年没有添加新的alias了。自从我发现了FZF以后,只要按一个快捷键然后用模糊搜索我原来敲过的命令就行了,高大上了很多。
扯远了,不过FZF确实值得推荐!
解决方法
搜索了一下,发现了简书上这篇和这篇文章都提到了这个问题,虽然给出了解决方法,如另外创建数据库存储路径/data/db
- MongoDB默认的,但没有说明为什么会出现这个问题。
查看了一下log,发现有这么一个警告:
** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.6 before attempting an upgrade to 4.0; see http://dochub.mongodb.org/core/4.0-upgrade-fcv
意思是数据文件在升级到4.0以前,首先要升级到与3.6兼容,然后给出了一个文档链接。
于是我按文档中的说明升级了数据文件,我删除了MongoDB 4.0.3,使用brew install mongodb@3.4
重新安装了MongoDB 3.4。
然后就可以重新连接数据库了。
需要注意的是如果你要在命令行下运行如mongod
或mongo
的话,你需要按照下面MongoDB Formula
的建议配置你的PATH
:
mongodb@3.4 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have mongodb@3.4 first in your PATH run:
echo 'export PATH="/usr/local/opt/mongodb@3.4/bin:$PATH"' >> ~/.zshrc
To have launchd start mongodb@3.4 now and restart at login:
brew services start mongodb@3.4
Or, if you don't want/need a background service you can just run:
/usr/local/opt/mongodb@3.4/bin/mongod --config /usr/local/etc/mongod.conf
问题暂时解决了。待我升级了数据库文件支持4.0以后,再在这里更新。