Как остановить сервер 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>