Я не говорю о шардинге . У нас был тестовый сервер (linux), и уже есть тот, mongo
который принадлежит другому проекту / подгруппе. Можно ли запускать несколько, изолированные экземпляры из mongodb
одной машины? Как мне это сделать?
Я не говорю о шардинге . У нас был тестовый сервер (linux), и уже есть тот, mongo
который принадлежит другому проекту / подгруппе. Можно ли запускать несколько, изолированные экземпляры из mongodb
одной машины? Как мне это сделать?
Ответы:
Да, вы можете сделать это, указав другие номера портов и каталоги данных для других экземпляров mongod
, а затем указав новый номер порта в клиенте.
Например:
./mongod --dbpath /foo/bar/otherpath --port some_other_port
При необходимости вы также можете изменить номера портов сервера и сервера конфигурации.
Шаги, которые я предпринял:
Отредактируйте стартовые скрипты init.d и измените следующее:
CONFIGFILE = "/ etc / mongod2.conf" (mongod3.conf соответственно)
....
mongod = $ {MONGOD- / usr / bin / mongod2} (mongod3 соответственно)
Заменял / var / lock / subsys / mongod на / var / lock / subsys / mongod2 (соответственно mongod3) везде, где я его нашел.
Не поддавайтесь искушению заменить mongod.lock на mongod2.lock (или mongod3.lock, соответственно). Они находятся в разных папках (папки базы данных разные) и не будут конфликтовать.
Теперь я могу
service mongod start|stop|status
service mongod2 start|stop|status
service mongod3 start|stop|status
а также
mongo --port <port_number>
для каждого экземпляра Монго (запомните настройки порта из файлов conf)
Я не знаю ни о каком побочном эффекте переименования двоичного файла mongod ..
Надеюсь это поможет.
[Позднее редактирование] Чтобы запустить экземпляры автоматически, просто введите ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod и ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)
Ubuntu 16.01
, не было никаких init.d
сценариев. Можете ли вы предоставить init.d
содержание сценария?