Как закрыть набор реплик в mongodb?

Я использую ubuntu.

Я запускаю три набора реплик mongod следующим образом:

$ mongod --replSet setname --logpath "1.log" --dbpath /data/rs1 --port 27017 --smallfiles --fork
$ mongod --replSet setname --logpath "2.log" --dbpath /data/rs2 --port 27018 --smallfiles --fork
$ mongod --replSet setname --logpath "3.log" --dbpath /data/rs3 --port 27019 --smallfiles --fork

Как я могу их закрыть?

Ответ 1

Выполните следующие команды из оболочки Unix:

mongo --port 27017 --eval 'db.adminCommand("shutdown")'
mongo --port 27018 --eval 'db.adminCommand("shutdown")'
mongo --port 27019 --eval 'db.adminCommand("shutdown")'

Ответ 2

Я не думаю, что принятый ответ правильный. После некоторого поиска в Google, я нашел это в группе пользователей mongodb лучшим ответом.

Выключить:
- Запустите db.runCommand({ replSetFreeze: numOfSeconds }) на вторичных db.runCommand({ replSetFreeze: numOfSeconds }) чтобы предотвратить db.runCommand({ replSetFreeze: numOfSeconds }) на первичный
- Запустите rs.stepDown(seconds) на основной; он проверит, чтобы убедиться, что хотя бы один из вторичных серверов достаточно захвачен для оплога, прежде чем уйти в отставку. Выберите разумно долгое время ожидания.
- Когда все вторично, db.shutdownServer() для всего

Для запуска:
- Запустите rs.freeze(seconds) на обоих вторичных rs.freeze(seconds) с длительным тайм-аутом (скажем, 1-2 минуты)
- Воспитывать первичную
- Используйте stepDown, чтобы исправить случай, если вторичный сервер каким-то образом станет первичным

Простого выключения недостаточно, вы должны предотвратить переход вторичных узлов в первичные.

Ответ 3

1) Войдите в оболочку mongo на вторичных серверах.

2) Остановите вторичные серверы, используя следующую команду:

use admin
db.shutdownServer()

2] Перейдите в Linux shell- на вторичных серверах и введите следующую команду:

sudo service mongod stop

Для получения дополнительной информации, пожалуйста, проверьте ссылку ниже:

http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html

Ответ 4

Используйте ps -ef | grep mongod, получите pids для mongod с номерами портов 27017-27019 и уничтожьте процессы с помощью pids.

Ответ 5

mongod --port 27017 --shutdown 
mongod --port 27018 --shutdown
mongod --port 27019 --shutdown
Кстати, если есть какая-то возможность, то в будущем вы будете использовать sharding, было бы лучше избегать портов 27018 и 27019. Это порты по умолчанию для некоторых компонентов кластера осколков.

Ответ 6

В MongoDB 3.2 в Windows я использую следующую последовательность:

mongo mongodb://localhost:27019/admin --eval "db.shutdownServer({timeoutSecs: 10})"
mongo mongodb://localhost:27018/admin --eval "db.shutdownServer({timeoutSecs: 10})"
mongo mongodb://localhost:27017/admin --eval "db.shutdownServer({timeoutSecs: 10})"

Ответ 7

выключение второго уровня для предотвращения отката.

mongo admin --port <port> --eval "<db.auth if needed>;db.shutdownServer()"

источник: университетский курс mongodb

Ответ 8

Это старый вопрос, но я все же думаю, что я должен ответить на этот вопрос.

Выполните следующую команду в оболочке unix

ps -ef | grep mongo

Это даст вам список pid (идентификаторов процессов), соответствующих портам 27017,27018 и 27019. Вы можете использовать pid для уничтожения всех членов replicaset