multiple instances of Mongo DB on same server

Mongodb

Mongodb Problem Overview


I am working with Mongo DB and I am a newbie to it. I am about to install it on a server specifically for Mongo.

I would like to create 2 instances of it - 1 to support a QA environment, the other to support a Staging Environment.

I am more familiar with SQL Server where I can create multiple instances.

Is it possible to do the same with Mongo DB and if so, how?

Mongodb Solutions


Solution 1 - Mongodb

The aforementioned answer is not a recommended way to run multiple instances (especially when the servers might be running at the same time) as it will lead to usage of the same config parameters like for example logpath and pidfilepath which in most cases is not what you want.

Please, consider creating dedicated mongod configuration files like mongod-QA.conf and mongod-STAGE.conf. In these files you may want to provide dbpath, logpath folders, bind_ip, port and pidfilepath specific to each mongod instance and that will not affect each other.

After these steps you are good to trigger two instances as follows

mongod --config <path-to>/mongod-QA.conf
mongod --config <path-to>/mongod-STAGE.conf

You can find more details on mongodb docs page

Solution 2 - Mongodb

You just need to create another folder(ex: mongodb2) dbpath for the second instance, and run it in a different port(ex: 27018)

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

Solution 3 - Mongodb

Here is how I start 4 mongod's on the same pc to emulate production environment in development environment.

To start mongod you should use separate config for each mongod. Take 4 configs and start mongods using them:

start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-primary1.cfg 
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary1.cfg --rest
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary2.cfg
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary3.cfg

Configs look like this:

mongod-primary1.cfg file contents

systemLog:
    destination: file
    path: c:\net2\primary1-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\primary1-pc\data\db
net:
    port: 27018
replication:
    replSetName: repl1

mongod-secondary1.cfg file contents

systemLog:
    destination: file
    path: c:\net2\secondary1-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary1-pc\data\db
net:
    port: 27019
replication:
    replSetName: repl1

mongod-secondary2.cfg file contents

systemLog:
    destination: file
    path: c:\net2\secondary2-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary2-pc\data\db
net:
    port: 27020
replication:
    replSetName: repl1

mongod-secondary3.cfg file contents

systemLog:
    destination: file
    path: c:\net2\secondary3-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary3-pc\data\db
net:
    port: 27021
replication:
    replSetName: repl1

Solution 4 - Mongodb

It's possible - you would give each one its own port to listen on, and its own --dbpath directory to put its files in, but I wouldn't recommend this because they will both be competing for the same resources - RAM, i/o bandwidth, etc.

If you have multiple disks on this server you can place their data files on separate devices but you're still risking your QA instance reducing availability of the production instances, possibly at the worst possible time.

I would put QA instance on a random machine that's doing something unimportant before I would colocate it with my production instance.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionamateurView Question on Stackoverflow
Solution 1 - MongodbkasurView Answer on Stackoverflow
Solution 2 - MongodbIlake ChangView Answer on Stackoverflow
Solution 3 - MongodbDeveloper Marius ŽilėnasView Answer on Stackoverflow
Solution 4 - MongodbAsya KamskyView Answer on Stackoverflow