Как остановить сервер mongodb в Windows?

Я использую стек nginx/PHP/MongoDB и пытаюсь настроить среду разработки в Windows, создав два пакетных файла.

начать.летучая мышь!--3-->

cd C:wwwnginx
start nginx
cd C:wwwphp
start php-cgi.exe -b 127.0.0.1:9000
cd C:wwwmongodb
start mongod

остановить.летучая мышь!--3-->

cd C:wwwnginx
nginx -s quit
cd C:wwwphp
taskkill /F /IM php-cgi.exe
cd C:wwwmongodb
mongo --eval "use admin; db.shutdownServer(); quit"  # this doesn't work
mongo --eval stop_mongod.js  # this doesn't work either

использование taskkill для остановки mongod не является вариантом, так как это может привести к повреждению данных. Есть предложения?

5 ответов


из раковины монго документация:


использовать dbname

эта команда не работает в режиме сценарию. Вместо этого вам нужно будет явно определить базу данных в соединении (/dbname в приведенном выше примере).

кроме того, вы также можете создать подключение в скрипте:

db2 = connect("server:27017/otherdbname")

Я придумал следующий код: Сохраните следующий фрагмент в stop_mongod.js файл:

 db = connect("localhost:27017/admin");
 db.shutdownServer();
 quit();

при необходимости отрегулируйте строку подключения. Затем из командной строки или в вашем пакетном скрипте:

mongo stop_mongod.js

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

может быть, вы уже решили этот вопрос, но вот что я делаю :

mongo admin --eval "db.shutdownServer()"

Я автоматически подключаюсь к коллекции администратора, а затем мне просто нужно запустить вымирание.

вот официальная ссылка о том, как правильно остановить Mongodb : http://api.mongodb.org/wiki/current/Starting%20and%20Stopping%20Mongo.html

лучшие


если сервер запущен как процесс переднего плана в терминале, это можно сделать, нажав

Ctrl-C

другой способ чисто закрыть работающий сервер-использовать команду shutdown,

> use admin
> db.shutdownServer();

Я думаю, используя TASKKILL / IM mongod.exe отлично подходит для завершения сервера mongodb изящно.


из командной строки Windows. Я использую сервер MongoDB 3.4 на 64-разрядной Windows 7 Pro SP1.

следующие ссылки объясняют шаги:

настроить-a-windows-service-for-mongodb-community-edition

вручную-создать-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.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 создает командную строку (показано ниже) находится в реестре Windows здесь:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MongoDB

чтобы проверить, сделайте следующее:

C:\Windows\System32>sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server.4\bin\mongod.exe\" --service --c
onfig=\"C:\Program Files\MongoDB\Server.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.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>