无法将MongoDB作为服务启动


67

我已经为MongoDB开发了几个月了,并希望将其作为服务安装在Windows 7 Enterprise计算机上。以下是我执行以创建服务的命令:

"D:\Milvia Systems\Development\MongoDB\mongod.exe" --logpath "D:\Milvia Systems\Development\MongoDB\logs\DBLog.log" --logappend --dbpath "D:\Milvia Systems\Development\MongoDB\db" -vvv --reinstall

但是,每当我使用net start“ MongoDB”或服务控制面板时,都会出现以下错误:

错误1053:服务未及时响应启动或控制请求。

环境:Windows 7 Enterprise 64位MongoDB:1.6.3 pdfile版本4.5


3
将mongodb作为服务安装时,我遇到了同样的问题。问题是我为配置文件使用了相对路径。
Darth Egregious

2
你需要它的行政privilage
НиколайМишин

Answers:


147

您是否检查过日志以查看真正的问题?

我建议将Mongo安装解压缩到c:\mongodb

创建c:\mongodb\logsc:\mongodb\data\db目录。

然后浏览c:\mongodb\bin目录并运行以下命令删除服务(如果已安装!):

mongod --remove

然后安装服务,并指定日志和数据目录:

mongod --logpath c:\mongodb\logs\mongo.log --dbpath c:\mongodb\data\db --directoryperdb --install

然后,如果启动服务时出现问题,您应该在指定的日志文件中查看原因。

更多信息在这里


这是日志:Tue Jan 11 11:03:11 dbexit:Tue Jan 11 11:03:11 shutdown:将关闭监听套接字... Tue Jan 11 11:03:11 shutdown:将刷新oplog ... 1月11日星期二11:03:11关闭:将要关闭套接字... 1月11日星期二11:03:11关闭:等待fs预分配器... 1月11日星期二11:03:11关闭:正在关闭所有文件...星期二1月11日11点03分11秒closeAllFiles()完成
马丁帝国

我将MongoDB和日志文件复制到c驱动器,并相应地更改了bat文件(我将DB文件留在了其他驱动器上)。服务启动没有任何问题。多谢您的协助。
Martin Reich

1
很高兴你把事情解决了。如果有帮助,请标记/将问题标记为答案!
Ciaran Archer

只是想添加,您已经说过“创建文件夹”,但是最好指出mongo不会创建丢失的日志和数据文件夹。
emrahgunduz

我正在使用mongod.cfg文件配置MongoDB。我收到类似“发生系统错误1067”的错误。我使用命令“ mongod --remove”,然后使用“ C:\ mongodb \ bin \ mongod.exe --config C:\ mongodb \ mongod.cfg --install”,现在我的MongoDB可以很好地用作Windows服务。
Pank

17

如果未为数据目录或日志目录指定绝对文件路径,则将得到相同的Windows错误,但没有日志文件。

我使用Webiyo上推送的“在Windows 7上安装MongoDB服务”中的信息来更正已注册的服务参数:

  1. 下载MongoDB并将其解压缩到C:\驱动器。
  2. 在“ C:\ mongodb165”目录下添加“数据”和“日志”子目录。
  3. 在“ C:\ mongodb165 \ logs \ mongolog.txt”处添加日志文件名称“ mongolog.txt”。
  4. 将目录更改为“ C:\ mongodb165 \ bin”。
  5. 执行以下命令:

    mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
    
  6. 打开注册表编辑器(regedit.exe),转到HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→服务。

  7. 找到MongoDB键,并将“ ImagePath”值设置为:

    C:\mongodb165\bin\mongod --service  --rest  --master  --logpath=C:\mongodb165\logs\mongolog.txt  --dbpath=C:\mongodb165\data
    
  8. 将更改保存到注册表并退出注册表编辑器。

  9. 打开ComponentServices,单击“服务(本地)”,然后找到MongoDB服务。启动它。
  10. 检查URL http:// localhost:28017 /以验证MongoDB是否返回统计信息。

11

我刚刚在Windows 7计算机上遇到了相同的问题。我按照MongoDBs Docs中的指示进行安装,但是除非我位于“ C:\”中,否则它不会让我执行“ net start MongoDB”。我不想返回并重新安装MongoDB以遵循上面引用的Webiyo链接中包含的说明。如果您已经根据他们的文档安装了MongoDB,并且希望能够从项目目录所在的位置执行“ net start MongoDB”:

转到HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet>服务> MongoDB

双击“名称”列下的ImagePath

粘贴以下ImagePath(编辑文件夹目录和名称以符合您的需要):

C:\mongodb\bin\mongod.exe --service  --rest  --master  --logpath=C:\mongodb\log\mongolog.txt  --dbpath=C:\mongodb\data\db --config C:\mongodb\mongod.cfg

请注意,如果您直接复制此ImagePath值,并且“数据”文件夹位于mongodb目录而不是C:\中,则将以下行添加到“ mongod.cfg”文件中: dbpath=C:\mongodb\data\db

完成此操作后,当我运行“ net stop MongoDB”时,收到消息“发生系统错误109。管道已结束。” 您可能也会看到它。该消息已在jira.mongodb.org上进行了详细讨论。

为了节省您阅读整个来回讨论的时间,Tad Marshalls帖子总结了此问题:

“ ...在2.1.0中运行良好;后来的更改再次将其中断。但是,是的,您在当前代码中收到此错误消息。

原因是mongod.exe由于“ net stop mongodb”的调用而退出了Windows服务控制管理器创建的回调线程,这中断了用于创建回调线程的RPC管道。我们需要重新组织出口逻辑以避免这样做。

错误消息是此问题的唯一实际影响;我们干净地退出命令,并通知Windows服务控制管理器我们已经停止了,但是“ net”命令显示了一条错误消息,因为我们没有像预期的那样从RPC调用中返回。


我知道旧的答案,但我只想确认这对MongoDB 2.6 Standard是否适用。
HarbyUK 2014年

只是想确认它在Windows 10 / mongoDB 2.6上也对我有效->它现在自动启动服务。谢谢!
Shivan

7

我的mongod.cfg文件具有以下最后两行:

#snmp:
mp:

我不知道为什么会有mp:在那。但是当我手动执行图像路径时

C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB

我有

c:\mongodb\bin>mongod /?C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
Unrecognized option: mp
try 'mongod --help' for more information

因此,我将其注释掉,然后该服务顺利启动。


1
我有同样的问题; 不知道为什么Mongo安装程序决定添加:mp到默认配置。删除它有助于解决问题。注意:在打开配置文件之前,必须以管理特权启动编辑器。
Dmitri Nesteruk '19

5

这些是我在Windows 7上安装mongoDB所遵循的步骤

  1. 从mongodb网站下载.msi文件-> https://www.mongodb.com/download-center?jmp=nav#community并运行它

  2. 无论您的mondoDb被下载到哪里(通常在c驱动器的Program Files文件夹中),都转到该文件夹​​,并且该文件夹中的bin文件夹位于创建数据文件夹日志文件夹的任何位置。

3.在您的数据文件夹中创建您的数据库文件夹

结构看起来像这样

  1. 现在以管理员身份打开命令提示符。

  2. 更改文件路径并进入bin文件夹。(在这种情况下,它将为c> program files> MongoDB> bin>)

  3. 键入以下命令:mongod --directoryperdb --dbpath“ C:/ Program Files \ MongoDB \ data” --logpath“ C:\ Program Files \ MongoDB \ log \ mongo.log” --logappend --rest-安装

  4. 这将设置日志路径和数据库路径。最后运行net start MongoDB。希望这可以帮助。


5

我运行了以下命令:

C:\MongoDB\Server\3.4\bin>net start MongoDB

并得到此消息:

服务没有响应控制功能。键入NET HELPMSG 2186,可以获得更多帮助。

经过一番尝试和错误后,我注意到在学习本教程时,它要求我将文件命名为mongod.conf,但该命令试图引用mongod.cfg

我改正该名称并重新运行命令后,

C:\MongoDB\Server\3.4\bin>sc.exe delete MongoDB
[SC] DeleteService SUCCESS

C:\MongoDB\Server\3.4\bin>sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS

C:\MongoDB\Server\3.4\bin>net start MongoDB
The MongoDB service is starting....
The MongoDB service was started successfully.

该服务开始正常运行。


5

对于在Windows Server 2012上可能有相同问题的其他人:

我在Windows Server 2012上的Mongo 3.0.3遇到了同样的问题。我不是系统管理员,所以我不知道sc.exe的更改是什么。我必须用

sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=C:\mongodb\mongod.cfg" DisplayName= "MongoDB" start= "auto"

与二进制文件和配置文件网站上的路径相比,二进制文件和配置文件路径都没有“ \”。


我用这个,这工作。在此之前,我使用的是--install,尽管没有出现错误,但该服务无法显示。我从上面改变了一件事。我没有在--config和它的路径之间使用等号。...–
FernandoZ

3

对于mongoDB 3.0,您将必须在配置文件中设置以下内容。

logpath=E:\mongoDBdata\log\mongoDB.log
dbpath=E:\mongoDBdata\db

日志路径应以文件而不是文件夹结尾。


我也遇到了同样的问题。尽管我具有正确的配置文件,dbpath条目及其路径,但我将logpath设置为不正确。
史蒂夫·约翰逊

3

检查您的mongod.cfg文件中是否包含选项卡。删除选项卡为我解决了!


3

以下与MongoDB 3.6.0兼容的作品

确保您具有以下文件夹:

  • C:\ mongodb \数据
  • C:\ mongodb \ data \ db

然后,您只需要这些命令:

  • mongod --directoryperdb -dbpath C:\ mongodb \ data \ db --logpath C:\ mongodb \ log \ mongo.log --logappend --service --install
  • 净启动MongoDB
  • 蒙哥

谢谢,这个有效的形式,我将命令从--rest更改为--service,并从Microsoft网站下载了vc_redist.x64.exe,然后重新启动了PC并运行了该命令并正常工作。
阿卜杜拉·阿尔库迪

2

可能失败的另一种方式是,如果运行该服务的帐户没有对数据目录的写入权限。

在这种情况下,服务将无法创建锁定文件。

mongod服务在这种情况下表现不佳,并进入启动进程的循环,该进程立即引发未处理的异常,崩溃等。每次启动进程时都会重新创建日志文件,因此如果需要,您必须快速抓取它看到错误。

Windows服务的默认用户为localhost \ system。因此解决方法是确保该用户可以写入您的db目录,或以可以的其他用户身份启动服务。


2

至少对于2.6版,您必须创建mongo.cfg指向的/ data / db /和/ log /文件夹。MongoDB本身不会这样做,并且会在作为服务运行时抛出该错误以作为响应。


2

输入完整的mongod内容之前,请确保右键单击以“以管理员身份运行”权限打开命令行



0

只需尝试在命令行中本地运行mongod.exe,您就会在这里遇到异常,该异常会被mongod调用并尝试解决。在我的情况下,本地磁盘上的可用空间很小,因此我只是更改目录的位置并更改Mongocofig文件,现在它可以正常运行了。


0

如果查看服务详细信息,则可以看到启动服务的命令类似于:

"C:\Program Files\MongoDB\bin\mongod" --config  C:\Program Files\MongoDB\mongod.cfg  --service 

MongoDB团队忘记添加"周围的--config选项。因此,只需编辑注册表来更正它,它将起作用。


0

我在Windows 8.1上遇到了同样的问题

对我有用的解决方案是正确指定配置文件路径

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB > imagePath值是这样的:

"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config mongod.cfg --service

然后只是我更正了配置文件路径以匹配我的实际路径:

"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config "d:\mongodb\mongod.cfg" --service

0

记住在启动服务之前先创建数据库

C:\>"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath d:\MONGODB\DB
2016-10-13T18:18:23.135+0200 I CONTROL  [main] Hotfix KB2731284 or later update is installed, no need to zero-out data files
2016-10-13T18:18:23.147+0200 I CONTROL  [initandlisten] MongoDB starting : pid=4024 port=27017 dbpath=d:\MONGODB\DB 64-bit host=mongosvr
2016-10-13T18:18:23.148+0200 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-10-13T18:18:23.149+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-10-13T18:18:23.149+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-10-13T18:18:23.150+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015
2016-10-13T18:18:23.151+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-10-13T18:18:23.151+0200 I CONTROL  [initandlisten] modules: none
2016-10-13T18:18:23.152+0200 I CONTROL  [initandlisten] build environment:
2016-10-13T18:18:23.152+0200 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2016-10-13T18:18:23.153+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-10-13T18:18:23.153+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2016-10-13T18:18:23.154+0200 I CONTROL  [initandlisten] options: { storage: { dbPath: "d:\MONGODB\DB" } }
2016-10-13T18:18:23.166+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-10-13T18:18:23.722+0200 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-10-13T18:18:23.723+0200 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'd:/MONGODB/DB/diagnostic.data'
2016-10-13T18:18:23.895+0200 I NETWORK  [initandlisten] waiting for connections on port 27017

然后,您可以停止进程Control-C

2016-10-13T18:18:44.787+0200 I CONTROL  [thread1] Ctrl-C signal
2016-10-13T18:18:44.788+0200 I CONTROL  [consoleTerminate] got CTRL_C_EVENT, will terminate after current cmd ends
2016-10-13T18:18:44.789+0200 I FTDC     [consoleTerminate] Shutting down full-time diagnostic data capture
2016-10-13T18:18:44.792+0200 I CONTROL  [consoleTerminate] now exiting
2016-10-13T18:18:44.792+0200 I NETWORK  [consoleTerminate] shutdown: going to close listening sockets...
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] closing listening socket: 380
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] shutdown: going to flush diaglog...
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] shutdown: going to close sockets...
2016-10-13T18:18:44.795+0200 I STORAGE  [consoleTerminate] WiredTigerKVEngine shutting down
2016-10-13T18:18:45.116+0200 I STORAGE  [consoleTerminate] shutdown: removing fs lock...
2016-10-13T18:18:45.117+0200 I CONTROL  [consoleTerminate] dbexit:  rc: 12

现在您的数据库已准备就绪,您可以使用以下命令启动服务

C:\>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.

0

检查的流程实例mongod是否已在运行。如果是,该服务将无法启动,因为C:\data\db\mongod.lock它将被其使用。

为了将MongoDB作为服务启动,任何进程均不得使用此文件。


0

对我来说,问题是目录错误。确保从文件资源管理器复制粘贴目录,而不要假设在docs页面上指定的目录正确。


0

如果收到错误:

服务名称无效

运行net start mongodb时,您需要从手动为MongoDB社区编辑创建Windows服务的步骤4中运行以下命令:

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

0

我在Config启动文件中做了很少的更改,这导致了此问题。当我查看“ mongo.log ”文件时,它说

“无法启动服务器。在由存储引擎'wiredTiger'创建的E:\ Mongo \ data \ db中检测到数据文件。配置的存储引擎为'mmapv1'。正在终止”

将存储引擎重置为“ wiredTiger”对我来说解决了这个问题。希望这对其他人有帮助。


-1

我开始在需要MongoDB的博客上关注教程。它具有有关下载和配置服务的说明。但是由于某种原因,该教程中用于启动Windows服务的命令无法正常工作。因此,我去了MongoDB文档,并尝试运行mongodb.org-中列出的命令。

用于启动mongodb服务的命令-sc.exe创建MongoDB binPath =“ \” C:\ MongoDB \ bin \ mongod.exe \“ --service --config = \” C:\ MongoDB \ bin \ mongodb \ mongod.cfg \“” DisplayName =“ MongoDB” start =“”自动“

我收到此消息:[SC] CreateService成功

然后我运行了这个:net start MongoDB

并得到此消息:

The service is not responding to the control function.

More help is available by typing NET HELPMSG 2186.

我在“ C:\ MongoDB \ bin \ mongodb \”中创建了一个名为“ mongod.cfg”的文件。添加该文件并重新运行命令“ net start MongoDB”后,该服务开始正常运行。

希望这可以帮助。


-1

好吧,就我而言,我的驱动器上的MongoDB数据文件所在的磁盘空间不足。我检查了MongoDB日志文件,其中指出以下内容

2015-11-11T21:53:54.717 + 0500 E日志[initandlisten]日志文件的可用空间不足2015-11-11T21:53:54.717 + 0500 I日志[initandlisten]请在C:\ wamp \中至少提供3379MB可用空间bin \ mongodb \ data \ db \ journal或使用--smallfiles

我要做的就是清理空间并再次启动服务。为我工作。因此,您要做的就是检查日志文件并相应地处理问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.