Как остановить сервер mongodb в Windows? - PullRequest
12 голосов
/ 02 ноября 2011

Я использую стек 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 не вариант, так как это может привести к повреждению данных. Есть предложения?

Ответы [ 5 ]

21 голосов
/ 16 декабря 2011

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

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

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

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

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

Best

11 голосов
/ 06 ноября 2011

Из оболочки mongo документация :


использовать имя_базы

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

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

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

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

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

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

mongo stop_mongod.js
8 голосов
/ 20 февраля 2014

Если сервер работает как основной процесс в терминале, это можно сделать, нажав

Ctrl-C

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

> use admin
> db.shutdownServer();
2 голосов
/ 06 декабря 2017

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

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

Configure-а-окна-сервис-для-MongoDB-сообщества издание

вручную создать-а-окна-сервис-для-MongoDB-сообщества издание

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

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> 
0 голосов
/ 02 ноября 2011

Полагаю, использовать TASKKILL / IM mongod.exe - это нормально, чтобы корректно завершить работу сервера mongodb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...