如何在Windows上停止MongoDB服务器?

25

我正在使用 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不是一个选项,因为这可能会导致数据损坏。有什么建议吗?

您可以通过在命令提示符中键入“services.msc”并选择该列表中的mongodb服务来手动停止它。 - Deepak Bandela
8个回答

36

我不确定这是一个适当的做法,发送kill信号可能会导致对你的Mongo服务器造成损害,在崩溃的情况下,你需要修复数据库。

也许你已经解决了这个问题,但这是我所做的:

mongo admin --eval "db.shutdownServer()"
我已经自动连接到管理员的集合,接下来,我只需要运行终止命令。 这是关于如何正确停止Mongodb的官方链接:http://api.mongodb.org/wiki/current/Starting%20and%20Stopping%20Mongo.html 最好的。

4
mongo admin --eval "db.shutdownServer()" 也可以完成此操作。 - StefanMK
这对我在一些Mongo-on-Windows实例上进行临时维护非常有效。它比使用Windows的“net stop”命令更可靠。 - NateJ
但是现在我无法使用这里的提示重新启动它:https://medium.com/stackfame/run-mongodb-as-a-service-in-windows-b0acd3a4b712 - mLstudent33

28
  1. 以管理员身份打开命令提示符/PowerShell。

  2. 执行以下命令:

    net stop MongoDB


在PowerShell中,net命令是否有status状态? - Timo

14

从mongo shell的文档中获取:


use dbname

这个命令在脚本模式下不起作用。相反,您需要在连接中显式定义数据库(例如上面的/dbname)。

或者,您也可以在脚本内创建一个连接:

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

我想到了以下代码: 将以下片段保存在 stop_mongod.js 文件中:

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

如果需要,调整连接字符串。然后从命令行或批处理脚本中执行:

mongo stop_mongod.js

14

以管理员身份打开命令提示符

net stop mongodb

我觉得这很有帮助! - Arpit Anand

11

如果服务器正在终端作为前台进程运行,则可以通过按下

Ctrl-C

干净关闭正在运行的服务器的另一种方法是使用shutdown命令,

> use admin
> db.shutdownServer();

5

以下是从Windows命令行执行的。我在64位Windows 7 Pro SP1上使用MongoDB 3.4服务器。

以下链接解释了步骤:

为MongoDB社区版配置Windows服务

手动创建MongoDB社区版Windows服务

以下控制台命令行可在启动时终止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> 

5
如果你在Windows上将MongoDB安装为服务,你可以在提升的命令提示符下使用以下命令停止该服务。
 net stop mongodb

1

我想,使用 TASKKILL /IM mongod.exe 是优雅地终止 MongoDB 服务器的好方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接