【问题标题】:Cannot start MongoDB as a service无法将 MongoDB 作为服务启动
【发布时间】:2011-06-07 09:28:45
【问题描述】:

我已经为 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 64bit MongoDB:1.6.3 pdf文件版本 4.5

【问题讨论】:

  • 我在安装 mongodb 作为服务时遇到了同样的问题。问题是我使用了配置文件的相对路径。
  • 你需要管理权限

标签: mongodb windows-services


【解决方案1】:

您检查过您的日志以了解真正的问题吗?

我建议将 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 月 11 日星期二 11:03:11 dbexit:1 月 11 日星期二 11:03:11 关闭:要关闭侦听套接字... 1 月 11 日星期二 11:03:11 关闭:要刷新 oplog... 1 月 11 日星期二 11:03:11 关闭:要关闭套接字... 1 月 11 日星期二 11:03:11 关闭:等待 fs 预分配器... 1 月 11 日星期二 11:03:11关闭:关闭所有文件... Tue Jan 11 11:03:11 closeAllFiles() 完成
  • 我将 MongoDB 和日志文件复制到 c 驱动器并相应地更改了 bat 文件(我将 DB 文件留在了另一个驱动器上的位置)。服务启动没有任何问题。非常感谢您的帮助。
  • 很高兴你把它整理好了。如果有帮助,请将问题标记/标记为答案!
  • 只是想添加,您已经在说“创建文件夹”,但最好指出 mongo 不会创建丢失的日志和数据文件夹。
  • 我正在使用 mongod.cfg 文件来配置 MongoDB。我收到类似“发生系统错误 1067”的错误。我使用命令“mongod --remove”,然后使用“C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --install”,现在我的 MongoDB 作为 Windows 服务运行良好。跨度>
【解决方案2】:

如果您没有为数据目录或日志目录指定绝对文件路径,您将得到相同的 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 → Services。

  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 是否返回统计信息。

【讨论】:

    【解决方案3】:

    我刚刚在我的 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 在调用我们时退出 Windows 服务控制管理器创建的回调线程,原因是“net stop mongodb”,这破坏了它用于创建回调线程的 RPC 管道。我们需要重新组织退出逻辑以避免这样做。

    错误信息是这个问题唯一真正的影响;我们按命令干净地退出,并通知 Windows 服务控制管理器我们已停止,但随后“net”命令显示一条错误消息,因为我们没有按照预期的方式从 RPC 调用返回。”

    【讨论】:

    • 我知道旧答案,但我想确认这对我来说适用于 MongoDB 2.6 Standard。
    • 只是想确认它在 Windows 10/mongoDB 2.6 上也适用于我 -> 现在它会自动启动服务。谢谢!
    【解决方案4】:

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

    所以我把它注释掉了,然后服务启动没有任何问题。

    【讨论】:

    • 我遇到了同样的问题;不知道为什么 Mongo 安装程序决定将 :mp 添加到默认配置中。删除它有助于解决问题。注意:在打开配置文件之前,您必须以管理员权限启动编辑器。
    【解决方案5】:

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

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

    2. 无论您的 mondoDb 下载到哪里(通常在 C 盘的 Program Files 文件夹中),转到该文件夹​​,并且该文件夹中的 bin 文件夹在哪里,创建您的 data 文件夹 和您的 日志文件夹

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

    The structure would look something like this

    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 --install

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

    【讨论】:

      【解决方案6】:

      我运行了这个命令:

      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.
      

      服务开始运行良好。

      【讨论】:

        【解决方案7】:

        致其他可能在 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 和它的路径之间使用等号......
        【解决方案8】:

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

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

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

        【讨论】:

        • 和我有同样的问题。尽管我有正确的配置文件、dbpath 条目及其路径,但我设置的日志路径不正确。
        【解决方案9】:

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

        【讨论】:

          【解决方案10】:

          以下适用于 MongoDB 3.6.0

          确保您拥有这些文件夹:

          • C:\mongodb\data
          • C:\mongodb\data\db

          那么你只需要这些命令:

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

          【讨论】:

          • 谢谢,这个工作表,我将命令从--rest更改为--service,并从微软网站下载了vc_redist.x64.exe,然后重新启动电脑并运行此命令并工作.
          【解决方案11】:

          如果运行服务的帐户没有数据目录的写入权限,这可能会失败。

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

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

          Windows 服务的默认用户是 localhost\system。所以解决方法是确保这个用户可以写入你的 db 目录,或者以另一个可以的用户身份启动服务。

          【讨论】:

            【解决方案12】:

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

            【讨论】:

              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

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

                【讨论】:

                • 谢谢,您的回答节省了我找出真正原因的时间。
                【解决方案15】:

                调试了半个小时……终于发现“rest”属性前多了一个破折号。

                【讨论】:

                  【解决方案16】:

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

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

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

                  【讨论】:

                    【解决方案17】:

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

                    【讨论】:

                      【解决方案18】:

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

                      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.
                      

                      【讨论】:

                        【解决方案19】:

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

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

                        【讨论】:

                          【解决方案20】:

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

                          【讨论】:

                            【解决方案21】:

                            如果收到错误:

                            服务名称无效

                            运行 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"
                            

                            【讨论】:

                              【解决方案22】:

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

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

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

                              【讨论】:

                                【解决方案23】:

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

                                string mongodb 服务的命令- sc.exe 创建 MongoDB binPath= "\"C:\MongoDB\bin\mongod.exe\" --service --config=\"C:\MongoDB\bin\mongodb\mongod.cfg\"" DisplayName="MongoDB " 开始 = "自动"

                                我收到这条消息:[SC] CreateService SUCCESS

                                然后我运行了这个: 净启动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”,服务就开始运行良好。

                                希望这会有所帮助。

                                【讨论】:

                                  【解决方案24】:

                                  嗯,在我的情况下,我在存储 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

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

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2017-01-29
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2021-07-08
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多