如何同时安装两个不同版本的MongoDB?


2

是否可以在同一台Mac上同时安装mongodb 2.6和3.2?我一直在使用mongodb 3.2(安装自制软件)一段时间,但需要安装2.6来支持旧项目。我使用brew install homebrew/versions/mongodb26并遇到了一些冲突文件的问题,我可以稍后解决。

Possible conflicting files are:
/usr/local/bin/bsondump -> /usr/local/Cellar/mongodb/3.2.10/bin/bsondump
/usr/local/bin/mongo -> /usr/local/Cellar/mongodb/3.2.10/bin/mongo
/usr/local/bin/mongod -> /usr/local/Cellar/mongodb/3.2.10/bin/mongod
/usr/local/bin/mongodump -> /usr/local/Cellar/mongodb/3.2.10/bin/mongodump
/usr/local/bin/mongoexport -> /usr/local/Cellar/mongodb/3.2.10/bin/mongoexport
/usr/local/bin/mongofiles -> /usr/local/Cellar/mongodb/3.2.10/bin/mongofiles
/usr/local/bin/mongoimport -> /usr/local/Cellar/mongodb/3.2.10/bin/mongoimport
/usr/local/bin/mongooplog -> /usr/local/Cellar/mongodb/3.2.10/bin/mongooplog
/usr/local/bin/mongoperf -> /usr/local/Cellar/mongodb/3.2.10/bin/mongoperf
/usr/local/bin/mongorestore -> /usr/local/Cellar/mongodb/3.2.10/bin/mongorestore
/usr/local/bin/mongos -> /usr/local/Cellar/mongodb/3.2.10/bin/mongos
/usr/local/bin/mongosniff -> /usr/local/Cellar/mongodb/3.2.10/bin/mongosniff
/usr/local/bin/mongostat -> /usr/local/Cellar/mongodb/3.2.10/bin/mongostat
/usr/local/bin/mongotop -> /usr/local/Cellar/mongodb/3.2.10/bin/mongotop

但是,如果我尝试启动mongod,通过运行/usr/local/Cellar/mongodb/3.2.10/bin/mongod我得到错误2016-11-15T14:26:08.132+0000 [initandlisten] exception in initAndListen: 28574 Cannot start server. Detected data files in /data/db created by storage engine 'wiredTiger'. The configured storage engine is 'mmapv1'., terminating

我也丢失了3.2的数据库,在安装2.6时似乎已被覆盖。

有人有这个工作吗?

Answers:


0

可以同时安装mongodb 2.x和3.x - 你必须重命名一些文件和文件夹,然后修改config和plist文件。这将分离旧的和新的MongoDB可执行文件/配置和数据库:

  • 在brew中卸载任何mongodb安装
  • 点击brew版本 brew tap homebrew/versions
  • 用。安装mongodb 2.6.12 brew install mongodb26
  • 重命名/ usr / local / bin中的所有十四个“mongodb26”软链接(例如bsondump到bsondump2,mongo到mongo2等)
  • 将/usr/local/etc/mongod.conf重命名为/usr/local/etc/mongod2.conf
  • 将/ usr / local / var / mongodb重命名为/ usr / local / var / mongodb2
  • 将/ usr / local / var / log / mongodb重命名为/ usr / local / var / log / mongodb2
  • 修改/usr/local/etc/mongod2.conf以反映上面的更改(路径和dbpath)以及网段中的不同端口(例如端口:37017)
  • 修改/usr/local/Cellar/mongodb26/2.6.12/homebrew.mxcl.mongodb26.plist以反映上面的更改(日志目录和配置文件)
  • 安装mongodb brew install mongodb。这是MongoDB 3

MongoDB 3将安装默认文件和文件夹名称。如果MongoDB 2应该是你的“默认”Mongo DB,首先安装mongodb并将所有内容重命名为* 3(而不是* 2)。然后用brew安装mongodb26。


根据您的需要,如果要在登录时启动mongodb版本,请将plist复制到LaunchAgents文件夹:

cp /usr/local/Cellar/mongodb26/2.6.12/homebrew.mxcl.mongodb26.plist ~/Library/LaunchAgents/
cp /usr/local/Cellar/mongodb/3.2.10/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/

并加载两个plists:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb26.plist 
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist 

两个mongo守护进程应该同时独立运行(至少在我的测试VM中)。

如果你想手动启动mongod,请不要忘记使用重命名的mongod命令和配置文件:

mongod2 --config /usr/local/etc/mongod2.conf #mongodb26
mongod --config /usr/local/etc/mongod.conf #mongodb3

2

我知道这是一个老问题,但我正在寻找一种方法来使用版本4.x和3.x,并发现这是最简单的解决方案。

安装所需的MongoDB版本brew

您可以找到可用的版本brew search mongo。如果您没有看到要运行的版本brew update。我正在安装最新版本(4)和版本3.6:

brew install mongodb
brew install mongodb@3.6

启动所需的版本 brew service

brew services start mongodb

切换到其他版本:

  1. 确保您向后兼容:

    mongo --eval 'db.adminCommand({setFeatureCompatibilityVersion: "3.6"})'

  2. 停止mongod

    brew services stop mongodb

  3. 取消链接当前版本的MongoDB:

    brew unlink mongodb

  4. 链接新版MongoDB:

    brew link --force mongodb@3.6

  5. 启动MongoDB版本3.6:

    brew services start mongodb@3.6

  6. 检查你的版本:

    mongo --version


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.