Как остановить сервер mongodb на Windows?
Я использую стек nginx/PHP/MongoDB и пытаюсь настроить среду разработки на Windows, создав два командных файла.
start.bat
cd C:\www\nginx
start nginx
cd C:\www\php
start php-cgi.exe -b 127.0.0.1:9000
cd C:\www\mongodb
start mongod
stop.bat
cd C:\www\nginx
nginx -s quit
cd C:\www\php
taskkill /F /IM php-cgi.exe
cd C:\www\mongodb
mongo --eval "use admin; db.shutdownServer(); quit" # this doesn't work
mongo --eval stop_mongod.js # this doesn't work either
Использование taskkill для остановки mongod не является вариантом, поскольку это может привести к повреждению данных.
Любые предложения?
Ответы
Ответ 1
Из оболочки mongo документация:
использовать dbname
Эта команда не работает в режиме сценария. Вместо этого вам нужно будет явно определить базу данных в соединении (/dbname в приведенном выше примере).
В качестве альтернативы вы также можете создать соединение в script:
db2 = connect("server:27017/otherdbname")
Я придумал следующий код:
Сохраните следующий фрагмент в файле stop_mongod.js:
db = connect("localhost:27017/admin");
db.shutdownServer();
quit();
При необходимости отрегулируйте строку подключения. Затем из командной строки или внутри вашей партии script:
mongo stop_mongod.js
Ответ 2
Я не уверен, что правильный способ сделать, отправка убийства может нанести вам ущерб вашему серверу mongo, и вам понадобится восстановить вашу базу данных после сбоя.
Возможно, вы уже решили этот вопрос, но вот что я делаю:
mongo admin --eval "db.shutdownServer()"
Я автоматически подключаюсь к коллекции admin, а затем мне просто нужно запустить вымирание.
Вот официальная ссылка о том, как правильно остановить Mongodb: http://api.mongodb.org/wiki/current/Starting%20and%20Stopping%20Mongo.html
Лучшие
Ответ 3
Если сервер работает как процесс переднего плана в терминале, это
можно сделать, нажав
Ctrl-C
Еще один способ чисто выключения работающего сервера - использовать команду shutdown,
> use admin
> db.shutdownServer();
Ответ 4
Я предполагаю, что использование TASKKILL/IM mongod.exe прекрасно подходит для прекращения работы сервера mongodb.
Ответ 5
В командной строке Windows. Я использую сервер MongoDB 3.4 на 64-разрядной версии Windows 7 Pro SP1.
Следующие ссылки объясняют шаги:
configure-a-windows-service-for-mongodb-community-edition
manually-create-a-windows-service-for-mongodb-community-edition
Следующая консольная консоль завершает работу MongoDB при запуске:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove
2017-12-06T08:15:47.883-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB'
2017-12-06T08:15:47.884-0600 I CONTROL [main] Service 'MongoDB' removed
Служба командной строки MongoDB, созданная в командной строке (показана ниже), находится здесь:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MongoDB
Чтобы проверить, выполните следующие действия:
C:\Windows\System32>sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --c
onfig=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS
C:\Windows\System32>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.
C:\Windows\System32>net stop MongoDB
The MongoDB service is stopping.
The MongoDB service was stopped successfully.
C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove
2017-12-06T08:16:36.504-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB'
2017-12-06T08:16:36.505-0600 I CONTROL [main] Service 'MongoDB' removed
C:\Windows\System32>