Можно ли запускать несколько процессов/серверов/портов mongodb на одном физическом сервере?

У меня есть среды production и staging на одной машине. Одно приложение rails работает постоянно. Одно (фактически одно и то же) приложение rails предназначено только для тестирования/реализации новых функций.

Итак, я использую mongodb:

mongod --dbpath /path/to/my/production/rails/app/db

Я также хотел бы запустить один mongod с:

mongod --dbpath /path/to/my/staging/rails/app/db

Но я не могу представить, как это сделать, потому что, если я сделаю так, как описано, я, очевидно, получу:

Mon Oct 14 16:12:59 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Mon Oct 14 16:12:59 [initandlisten] ERROR:   addr already in use

Итак, как лучше всего работать с двумя разными экземплярами mongodb на одном компьютере, чтобы иметь возможность работать как с производственными, так и с промежуточными приложениями по отдельности?

Обновлять:

конечно, лучше определить разные среды в приложении rails (например, mongodb.yml) и использовать один и тот же процесс и порт mongod, но было бы интересно, если возможно что-то вроде этого (полностью разделить среды):

port 27017 <--> --dbpath /path/to/my/production/rails/app/db
port 27018 <--> --dbpath /path/to/my/staging/rails/app/db

person static    schedule 14.10.2013    source источник
comment
Обратите внимание, что у нас есть родственный сайт dba.stackexchange.com, предназначенный специально для администрирования баз данных. Поэтому, если у вас возникнут дополнительные вопросы, которые касаются не программирования для MongoDB, а скорее ее администрирования и настройки, вы можете получить там более компетентный ответ.   -  person Philipp    schedule 14.10.2013
comment
спасибо за точку! Я не заходил на этот сайт раньше   -  person static    schedule 14.10.2013


Ответы (2)


Да.

mongod --dbpath /path/to/my/production/rails/app/db --port 12345
mongod --dbpath /path/to/my/staging/rails/app/db --port 12346

Ознакомьтесь с этим более ранним ответом для получения дополнительной информации/подводных камней: несколько экземпляров Mongo DB на том же сервере

person Momer    schedule 14.10.2013
comment
Вы также можете запустить полные наборы реплик на той же машине для тестирования :) - person Matt Kneiser; 15.10.2013

Слегка измененная версия моего ответа на соответствующий вопрос:

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

Пожалуйста, рассмотрите возможность создания специальных файлов конфигурации mongod, таких как mongod-PROD.conf и mongod-STAGE.conf. В этих файлах вы можете указать папки dbpath, logpath, bind_ip, port и pidfilepath< /em> специфичны для каждого экземпляра mongod и не влияют друг на друга.

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

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

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

person kasur    schedule 27.02.2015