¿Cómo tener instaladas dos versiones diferentes de MongoDB al mismo tiempo?

2

¿Es posible instalar mongodb 2.6 y 3.2 en la misma Mac? He estado usando mongodb 3.2 (instalado con homebrew) por un tiempo pero necesité instalar 2.6 para soportar un proyecto anterior. Usé brew install homebrew/versions/mongodb26 y tuve algunos problemas con archivos en conflicto, que podría resolver más adelante.

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

Pero si intento iniciar mongod, ejecutando /usr/local/Cellar/mongodb/3.2.10/bin/mongod obtengo el error 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 .

También perdí mi base de datos de 3.2, que parece haber sido sobrescrita al instalar 2.6.

¿Alguien tiene esto funcionando?

    
pregunta Geraint Anderson 15.11.2016 - 15:53

3 respuestas

0

Es posible instalar mongodb 2.xy 3.x al mismo tiempo. Sin embargo, debe cambiar el nombre de algunos archivos y carpetas, y modificar los archivos config y plist. Esto separará los antiguos / nuevos ejecutables / config de MongoDB y las bases de datos:

  • Desinstale cualquier instalación de mongodb en brew
  • Versiones de elaboración de tapones con brew tap homebrew/versions
  • Instale mongodb 2.6.12 con brew install mongodb26
  • Cambie el nombre de los catorce enlaces blandos "mongodb26" en / usr / local / bin (por ejemplo, bsondump a bsondump2, mongo a mongo2, etc.)
  • Renombrar /usr/local/etc/mongod.conf a /usr/local/etc/mongod2.conf
  • Renombrar / usr / local / var / mongodb a / usr / local / var / mongodb2
  • Cambie el nombre de / usr / local / var / log / mongodb a / usr / local / var / log / mongodb2
  • Modificar /usr/local/etc/mongod2.conf para reflejar los cambios anteriores (ruta y dbpath) y un puerto diferente en la sección de red (por ejemplo, puerto: 37017)
  • Modifique /usr/local/Cellar/mongodb26/2.6.12/homebrew.mxcl.mongodb26.plist para reflejar los cambios anteriores (directorios de registro y archivo de configuración)
  • Instale mongodb brew install mongodb . Esto es MongoDB 3

MongoDB 3 se instalará con los nombres de archivo y carpeta predeterminados. Si MongoDB 2 debería ser su base de datos "predeterminada" de Mongo, instale primero mongodb y cambie el nombre de todo a * 3 (en lugar de * 2). Luego instale mongodb26 con cerveza.

Dependiendo de sus necesidades, copie las listas en su carpeta LaunchAgents, si desea iniciar cualquiera de las dos versiones de mongodb al iniciar sesión:

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/

y cargue ambas plistas:

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

Ambos demonios mongo deben ejecutarse de forma independiente entre sí al mismo tiempo (al menos en mi VM de prueba que lo hicieron).

Si desea iniciar cualquiera de los mongod manualmente, no olvide utilizar el comando mongod renombrado y el archivo de configuración:

mongod2 --config /usr/local/etc/mongod2.conf #mongodb26
mongod --config /usr/local/etc/mongod.conf #mongodb3
    
respondido por el klanomath 15.11.2016 - 21:23
0

esta podría ser la necesidad de crear otra carpeta (ej: mongodb2) dbpath para la segunda instancia, y ejecutarla en un puerto diferente (ej: 27018)

mongod --dbpath /usr/local/var/mongodb2 --port 27018

encontrado originalmente en enlace

    
respondido por el bret7600 15.11.2016 - 16:32
0

Sé que esta es una pregunta antigua, pero estaba buscando una forma de tener las versiones 4.xy 3.x y encontré que esta es la solución más fácil.

Instala las versiones de MongoDB que deseas con brew .

Puedes encontrar qué versiones están disponibles con brew search mongo . Si no ve la versión que desea, ejecute brew update . Estoy instalando la última versión (4) y la versión 3.6:

brew install mongodb
brew install [email protected]

Inicia la versión que deseas con brew service

brew services start mongodb

Cambiar a una versión diferente:

  1. Asegúrate de que eres compatible con versiones anteriores:

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

  2. Detener mongod :

    brew services stop mongodb

  3. Desvincular la versión actual de MongoDB:

    brew unlink mongodb

  4. Enlace la nueva versión de MongoDB:

    brew link --force [email protected]

  5. Iniciar MongoDB versión 3.6:

    brew services start [email protected]

  6. Comprueba tu versión:

    mongo --version

respondido por el jwerre 21.12.2018 - 00:48

Lea otras preguntas en las etiquetas