Несколько экземпляров Mongo DB на одном сервере

Я работаю с Mongo DB, и я новичок в нем. Я собираюсь установить его на сервере специально для Mongo.

Я хотел бы создать 2 экземпляра его - 1 для поддержки среды QA, а другой - для поддержки промежуточной среды.

Я больше знаком с SQL Server, где могу создавать несколько экземпляров.

Можно ли сделать то же самое с Mongo DB, и если да, то как?

Ответ 1

Вышеупомянутый ответ не является рекомендуемым способом запуска нескольких экземпляров (особенно, когда серверы могут работать одновременно), поскольку это приведет к использованию такие же параметры конфигурации, как, например, logpath и pidfilepath, которые в большинстве случаев не то, что вы хотите.

Пожалуйста, подумайте о создании специализированных файлов конфигурации mongod, таких как mongod-QA.conf и mongod-STAGE.conf. В этих файлах вы можете указать dbpath, logpath folders, bind_ip, порт и pidfilepath, специфичные для каждого экземпляра mongod, и которые не будут влиять друг на друга.

После этих шагов вы можете запустить два экземпляра следующим образом

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

Вы можете найти более подробную информацию о документах mongodb страница

Ответ 2

Вам просто нужно создать другую папку (например: mongodb2) для второго экземпляра и запустить ее в другом порту (например: 27018)

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

Ответ 3

Вот как я запускаю 4 mongod на том же компьютере, чтобы эмулировать производственную среду в среде разработки.

Чтобы запустить mongod, вы должны использовать отдельную конфигурацию для каждого mongod. Возьмите 4 конфигурации и запустите mongods, используя их:

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

Конфигурации выглядят следующим образом:

Содержание файла mongod-primary1.cfg

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

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

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

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

Ответ 4

Возможно - вы дадите каждому свой собственный порт для прослушивания, а его собственный каталог --dbpath, чтобы поместить его файлы, но я бы не рекомендовал это, потому что они оба будут конкурировать за одни и те же ресурсы - RAM, пропускную способность ввода/вывода и т.д.

Если у вас несколько дисков на этом сервере, вы можете поместить свои файлы данных на отдельные устройства, но вы по-прежнему рискуете своим экземпляром QA, уменьшающим доступность экземпляров производства, возможно, в худшем возможном времени.

Я бы поставил экземпляр QA на случайную машину, которая делала что-то неважное, прежде чем я разместил его с моим экземпляром.