Несколько экземпляров 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 на случайную машину, которая делала что-то неважное, прежде чем я разместил его с моим экземпляром.