无法启动MongoDB作为服务

时间:2011-01-11 19:20:14

标签: mongodb windows-services

我已经为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 version 4.5

24 个答案:

答案 0 :(得分:136)

你检查过你的日志以查看真正的问题吗?

我建议将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

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

更多信息here

答案 1 :(得分:17)

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

我使用"Install MongoDB Service on Windows 7", pushed on Webiyo中的信息来更正已注册的服务参数:

  1. 下载MongoDB并将其解压缩到C:\驱动器。
  2. 在“C:\ mongodb165”目录下添加“data”和“logs”子目录。
  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,单击“Services(Local)”,找到MongoDB服务。启动它。
  10. 检查网址http://localhost:28017/以验证MongoDB是否返回统计信息。

答案 2 :(得分:11)

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

转到HKEY_LOCAL_MACHINE> “系统”> CurrentControlSet>服务> MongoDB

双击Name列下的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值并且您的“data”文件夹位于mongodb目录而不是C:\,请将以下行添加到“mongod.cfg”文件中:dbpath=C:\mongodb\data\db

在我这样做之后,当我运行“net stop MongoDB”时,我收到消息“系统错误109已经发生。管道已经结束。”你也可以看到它。我们已在jira.mongodb.org详细讨论了此消息。

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

“...它在2.1.0中工作正常;后来的更改再次破坏了它。但是,是的,你在当前的代码中得到了这个错误信息。

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

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

答案 3 :(得分:5)

我跑了这个命令:

open(F,$temp_file);
@list=<F>;close F;
$specific_word ="String I want";
@f=grep /$specific_word/,@list;
print $f[2];

得到了这个消息:

  

服务未响应控制功能。更多的帮助   输入NET HELPMSG 2186即可获得。

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

一旦我更正了该名称并重新运行命令,

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

服务开始正常运行。

答案 4 :(得分: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"

没有\&#34; \&#34;对于二进制和配置文件路径,与其网站上的路径相比。

答案 5 :(得分:4)

以下是我在Windows 7上安装mongoDB的步骤

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

  2. 无论您下载mondoDb(通常位于c盘Program Files文件夹中),请转到该文件夹​​,同一文件夹中bin文件夹的任何位置都会创建数据文件夹和您的< strong>日志文件夹

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

    The structure would look something like this

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

    2. 更改文件路径并输入bin文件夹。(在这种情况下,它将是c&gt;程序文件&gt; MongoDB&gt; bin&gt;)

    3. 输入以下命令: mongod --directoryperdb --dbpath&#34; C:/ Program Files \ MongoDB \ data&#34; --logpath&#34; C:\ Program Files \ MongoDB \ log \ mongo.log&#34; --logappend --rest --install

    4. 这将设置logpath和数据库路径。最后运行 net start MongoDB 。希望这会有所帮助。

答案 6 :(得分:3)

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

答案 7 :(得分:3)

以下使用MongoDB 3.6.0

确保您拥有以下文件夹:

  
      
  • C:\ mongodb的\数据
  •   
  • C:\ mongodb的\数据\分贝
  •   

然后你需要的就是这些命令:

  
      
  • mongod --directoryperdb -dbpath C:\ mongodb \ data \ db --logpath C:\ mongodb \ log \ mongo.log --logappend --service --install
  •   
  • net start MongoDB
  •   
  • 蒙戈
  •   

答案 8 :(得分:3)

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

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

logpath应该以文件而不是文件夹结尾。

答案 9 :(得分:2)

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

答案 10 :(得分:2)

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

答案 11 :(得分:2)

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

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

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

Windows服务的默认用户是localhost \ system。因此,修复方法是确保此用户可以写入您的db目录,或者以另一个可以的用户身份启动该服务。

答案 12 :(得分:2)

我的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

所以我将其注释掉,然后该服务开始正常运行。

答案 13 :(得分:1)

在调试后花了半个小时......我终于发现在“rest”属性之前有一个短划线。

mongodb as service

答案 14 :(得分: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

答案 15 :(得分: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.

答案 16 :(得分:0)

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

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

MongoDB小组忘记在"选项周围添加--config。因此,只需编辑注册表以进行更正即可。

答案 17 :(得分:0)

只是尝试在命令行中本地运行mongod.exe,你可以在这里获得异常,mongod调用并尝试解决它。在我的情况下,本地光盘上的可用空间很小,所以我只需更改目录的位置并更改Mongocofig文件,现在运行正常。

答案 18 :(得分:0)

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

要将MongoDB作为服务启动,任何进程都不应使用此文件。

答案 19 :(得分:0)

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

答案 20 :(得分: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"

答案 21 :(得分:0)

我没有对Config启动文件进行任何更改,这导致了此问题。当我查看“ mongo.log ”文件时,它说

  

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

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

答案 22 :(得分:-1)

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

strting mongodb service的命令 - sc.exe创建MongoDB binPath =&#34; \&#34; C:\ MongoDB \ bin \ mongod.exe \&#34; --service --config = \&#34; C:\ MongoDB \ bin \ mongodb \ mongod.cfg \&#34;&#34; DisplayName =&#34; MongoDB&#34; start =&#34; auto&#34;

我收到此消息:[SC] CreateService SUCCESS

然后我跑了这个: net start MongoDB

得到了这个消息:

The service is not responding to the control function.

More help is available by typing NET HELPMSG 2186.

我创建了一个名为&#39; mongod.cfg&#39;在&#39; C:\ MongoDB \ bin \ mongodb \&#39; 一旦我添加了该文件并重新运行命令 - 网络启动MongoDB&#39;,该服务就开始正常运行。

希望这有帮助。

答案 23 :(得分:-1)

嗯,在我的情况下,我在我的驱动器上运行磁盘空间不足,我有MongoDB数据文件。我检查了MongoDB日志文件,其中包含以下内容

  

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

我所要做的就是清理一些空间并重新启动服务..为我工作。因此,您只需检查日志文件并相应地处理问题。