Come avere due diverse versioni di MongoDB installate contemporaneamente?

2

È possibile installare sia mongodb 2.6 e 3.2 sullo stesso Mac? Sto usando mongodb 3.2 (Installato con homebrew) per un po 'ma ho bisogno di installare 2.6 per supportare un progetto precedente. Ho usato brew install homebrew/versions/mongodb26 e ho riscontrato alcuni problemi con i file in conflitto, che potrei risolvere in un secondo momento.

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

Ma se provo ad avviare mongod, eseguendo /usr/local/Cellar/mongodb/3.2.10/bin/mongod ottengo l'errore 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 .

Ho anche perso il mio database per 3.2, che sembra essere stato sovrascritto durante l'installazione di 2.6.

Qualcuno ha funzionato?

    
posta Geraint Anderson 15.11.2016 - 15:53
fonte

3 risposte

0

È possibile installare mongodb 2.xe 3.x allo stesso tempo - è necessario rinominare alcuni file e cartelle e modificare i file di configurazione e plist. Questo separerà il vecchio e il nuovo eseguibile / config di MongoDB e i database:

  • Disinstalla qualsiasi installazione di mongodb in brew
  • tocca brew versioni con brew tap homebrew/versions
  • Installa mongodb 2.6.12 con brew install mongodb26
  • Rinomina tutti i quattordici link "mongodb26" in / usr / local / bin (ad esempio bsondump a bsondump2, mongo a mongo2 ecc.)
  • Rinomina /usr/local/etc/mongod.conf in /usr/local/etc/mongod2.conf
  • Rinomina / usr / local / var / mongodb in / usr / local / var / mongodb2
  • Rinomina / usr / local / var / log / mongodb in / usr / local / var / log / mongodb2
  • Modifica /usr/local/etc/mongod2.conf per riflettere le modifiche sopra (path e dbpath) e una porta diversa nella sezione net (ad es. port: 37017)
  • Modifica /usr/local/Cellar/mongodb26/2.6.12/homebrew.mxcl.mongodb26.plist per riflettere le modifiche precedenti (directory di registro e file di configurazione)
  • Installa mongodb brew install mongodb . Questo è MongoDB 3

MongoDB 3 verrà installato con i nomi di file e cartelle predefiniti. Se MongoDB 2 dovrebbe essere il tuo "Mongo DB" predefinito, installa prima mongodb e rinomina tutto in * 3 (invece di * 2). Quindi installare mongodb26 con brew.

A seconda delle esigenze, copia gli elenchi nella cartella LaunchAgents, se vuoi avviare la versione di mongodb mentre accedi:

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/

e carica entrambi i plists:

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

Entrambi i daemon mongo dovrebbero funzionare indipendentemente l'uno dall'altro allo stesso tempo (almeno nella mia VM di test hanno fatto).

Se vuoi avviare manualmente mongod, non dimenticare di usare il comando mongod rinominato e il file di configurazione:

mongod2 --config /usr/local/etc/mongod2.conf #mongodb26
mongod --config /usr/local/etc/mongod.conf #mongodb3
    
risposta data 15.11.2016 - 21:23
fonte
1

So che questa è una vecchia domanda, ma stavo cercando un modo per avere la versione 4.xe 3.x e ho trovato che questa fosse la soluzione più semplice.

Installa le versioni di MongoDB che vuoi con brew .

Puoi trovare quali versioni sono disponibili con brew search mongo . Se non vedi la versione che vuoi eseguire brew update . Sto installando l'ultima versione (4) e la versione 3.6:

brew install mongodb
brew install [email protected]

Inizia la versione che desideri con brew service

brew services start mongodb

Passa a una versione diversa:

  1. Assicurati di essere retrocompatibile:

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

  2. Stop mongod :

    brew services stop mongodb

  3. Scollega la versione corrente di MongoDB:

    brew unlink mongodb

  4. Collega la nuova versione di MongoDB:

    brew link --force [email protected]

  5. Avvia MongoDB versione 3.6:

    brew services start [email protected]

  6. Verifica la tua versione:

    mongo --version

risposta data 21.12.2018 - 00:48
fonte
0

questa potrebbe essere la necessità di creare un'altra cartella (es: mongodb2) dbpath per la seconda istanza ed eseguirla in una porta diversa (es: 27018)

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

originariamente trovato su link

    
risposta data 15.11.2016 - 16:32
fonte

Leggi altre domande sui tag