2013-08-30 223 views
31

我不知道为什么,并且服务在昨天正常运行,突然之间我无法让MongoDB启动。Mongodb服务无法启动

[[email protected] ~]# service mongod start 
Starting mongod: Thu Aug 29 23:26:07.550 
Thu Aug 29 23:26:07.550 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. 
Thu Aug 29 23:26:07.550 
about to fork child process, waiting until server is ready for connections. 
forked process: 5078 
all output going to: /var/log/mongo/mongod.log 
ERROR: child process failed, exited with error number 100 
                  [FAILED] 

我看了/var/log/mongo/mongod.log及以下:

***** SERVER RESTARTED ***** 


Thu Aug 29 23:29:05.874 [initandlisten] MongoDB starting : pid=5118 port=27017 dbpath=/var/lib/mongo 32-bit host=purr.ipetfindr.com 
Thu Aug 29 23:29:05.874 [initandlisten] 
Thu Aug 29 23:29:05.874 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary. 
Thu Aug 29 23:29:05.874 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal). 
Thu Aug 29 23:29:05.874 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off. 
Thu Aug 29 23:29:05.874 [initandlisten] ** See http://dochub.mongodb.org/core/32bit 
Thu Aug 29 23:29:05.874 [initandlisten] 
Thu Aug 29 23:29:05.874 [initandlisten] ** WARNING: You are running in OpenVZ. This is known to be broken!!! 
Thu Aug 29 23:29:05.875 [initandlisten] 
Thu Aug 29 23:29:05.875 [initandlisten] db version v2.4.6 
Thu Aug 29 23:29:05.875 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673 
Thu Aug 29 23:29:05.875 [initandlisten] build info: Linux bs-linux32.10gen.cc 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49 
Thu Aug 29 23:29:05.875 [initandlisten] allocator: system 
Thu Aug 29 23:29:05.875 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidf$ 
************** 
Unclean shutdown detected. 
Please visit http://dochub.mongodb.org/core/repair for recovery instructions. 
************* 
Thu Aug 29 23:29:05.875 [initandlisten] exception in initAndListen: 12596 old lock file, terminating 
Thu Aug 29 23:29:05.875 dbexit: 
Thu Aug 29 23:29:05.875 [initandlisten] shutdown: going to close listening sockets... 
Thu Aug 29 23:29:05.875 [initandlisten] shutdown: going to flush diaglog... 
Thu Aug 29 23:29:05.875 [initandlisten] shutdown: going to close sockets... 
Thu Aug 29 23:29:05.875 [initandlisten] shutdown: waiting for fs preallocator... 
Thu Aug 29 23:29:05.875 [initandlisten] shutdown: closing all files... 
Thu Aug 29 23:29:05.875 [initandlisten] closeAllFiles() finished 
Thu Aug 29 23:29:05.875 dbexit: really exiting now 

我应该如何去修复这是重新启动服务器,服务似乎不工作。

维修

不知道该做些什么呢是说一些关于错误后错误无法打开文件/ var/lib中/蒙戈/ local.ns终止

***** SERVER RESTARTED ***** 


Fri Aug 30 04:49:43.041 [initandlisten] MongoDB starting : pid=3300 port=27017 dbpath=/var/lib/mongo 32-bit host=purr.ipetfindr.com 
Fri Aug 30 04:49:43.041 [initandlisten] 
Fri Aug 30 04:49:43.041 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary. 
Fri Aug 30 04:49:43.041 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal). 
Fri Aug 30 04:49:43.041 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off. 
Fri Aug 30 04:49:43.041 [initandlisten] ** See http://dochub.mongodb.org/core/32bit 
Fri Aug 30 04:49:43.041 [initandlisten] 
Fri Aug 30 04:49:43.041 [initandlisten] ** WARNING: You are running in OpenVZ. This is known to be broken!!! 
Fri Aug 30 04:49:43.041 [initandlisten] 
Fri Aug 30 04:49:43.041 [initandlisten] db version v2.4.6 
Fri Aug 30 04:49:43.041 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673 
Fri Aug 30 04:49:43.041 [initandlisten] build info: Linux bs-linux32.10gen.cc 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49 
Fri Aug 30 04:49:43.041 [initandlisten] allocator: system 
Fri Aug 30 04:49:43.041 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidf$ 
Fri Aug 30 04:49:43.058 [initandlisten] couldn't open /var/lib/mongo/local.ns errno:13 Permission denied 
Fri Aug 30 04:49:43.058 [initandlisten] error couldn't open file /var/lib/mongo/local.ns terminating 
Fri Aug 30 04:49:43.059 dbexit: 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: going to close listening sockets... 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: going to flush diaglog... 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: going to close sockets... 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: waiting for fs preallocator... 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: closing all files... 
Fri Aug 30 04:49:43.059 [initandlisten] closeAllFiles() finished 
Fri Aug 30 04:49:43.059 [initandlisten] shutdown: removing fs lock... 
Fri Aug 30 04:49:43.059 dbexit: really exiting now 
+0

请访问http://dochub.mongodb.org/core/repair :) –

+0

你真的要运行64位服务器..希望这是一个开发系统;-)。请注意启动警告:缺省情况下禁用32位系统和日志记录的数据限制。这里真正的错误是你注意到的“无法打开”之上的一行:'errno:13 Permission denied'。正如你在答案中提到的那样,由于以root身份运行修复,而不是之前使用的'mongod'用户/组,因此存在所有权/许可问题。 – Stennie

+0

原因是系统因电源故障问题或mongo deamon进程关闭不当而终止。 –

回答

45

运行修复后,我能够启动mongod proccessor,但作为根,这意味着service mongod start将无法​​正常工作。为了修复这个问题,我需要确保数据库文件夹内的所有文件都拥有并分组为mongod。

  1. 检查你的数据库文件夹中的文件权限
    1. 音符,你需要在你的DBPATH文件夹该矿 /var/lib/mongo我去cd /var/lib
    2. 我跑ls -l mongo
    3. :我通过以下这样做
  2. 这表明数据库属于root,这是错误的。我跑了以下来解决这个问题:chown -R mongod:mongod mongo。这将文件夹中每个文件的所有者和组更改为mongod。 (如果使用mongodb包,chown -R mongodb:mongodb mongodb

我希望这可以帮助别人在未来。

+1

'mongod'进程(包括修复)不需要以root身份运行。最佳做法总是选择服务运行所需的最小特权帐户。 – Stennie

+0

这对我来说是一个救星,谢谢!原来也是我的权限。 –

+0

另外,你可能需要这样做:sudo rm /tmp/mongodb-*.sock – guogangj

14

我先解决了这个问题,先执行C:\mongodb\bin\mongod.exe --repair。然后,当我通过C:\mongodb\bin\mongod.exe再次运行MongoDB时,它成功启动。

+12

等等...我们不是在谈论LINUX问题吗? –

3

对我来说,不启动的原因竟然是/var/lib/mongo/mongo.lock中的孤儿锁文件当我删除该文件时,mongo会启动OK。在此之前,我的系统发生了一些混乱的崩溃。 [Fedora 14]

+1

我也有这个孤儿mongo.lock。不确定造成这种情况的确切条件,但我刚刚更新了OS X;这需要重新启动。 –

+0

同样适用于我。这是因为我之前没有关闭过MongoDB而重新启动MacBook。我试图重现和我有同样的错误。如果我之前关闭了Mongo,那么当我启动Mongo时,一切正常。 – c4k

1

我验证的权限,但一切都很好(mongod:mongod)。 由于我正在开发一个大型项目,并且在我们的开发环境中出现了一个耗费所有可用磁盘空间的脚本的类似问题,因此我可以在错误消息中看到mongod至少需要3.7Gb可用磁盘空间才能运行。

我检查了自己的磁盘空间,发现剩余的2Gb还不到。移动/擦除一些数据后,我可以再次成功启动mongod。

希望这有助于;-)

8

我删除d解决了这个:\测试\ MongoDB的\ DATA \ mongod.lock文件。当你重新连接mongo db时,这个文件会自动生成在同一个文件夹中。这个对我有用。

+0

已经有一个关于mongo.lock文件的答案... – manuell

+0

谢谢..它对我有用 –

+0

谢谢,它也适用于我。 –

0

从C:\ mongodb \ data \路径中删除.lock文件,然后重新启动mongodb服务。

1

我试着删除锁定文件,但是真正的原因是这发生在我身上,是因为我使用〜/ data/db作为数据目录。 Mongo需要数据库的绝对路径。一旦我将其更改为/ home/data/db,我就开始工作了。

3

它可能是由于mongod.lock文件引起的,但是如果错误在删除后仍然存在,请检查mongo.conf中的路径;它可能是一个简单的问题,例如配置的日志Path或dbPath不存在(检查mongo/conf/mongod.conf中的路径并检查它们是否存在,有时mongo不能在它自己的创建目录结构中,因此您可能必须创建这些目录在启动mongod之前手动)。

0

我还不能提供/评论,但+1手动删除锁定文件哈哈。

我的C9工作区在我身上坠毁并触发意外关机。该API建议: https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/

..但删除数据/ mongo.lock工作:)。另外,为了防止连接被拒绝(发生在我身上),在删除锁定文件之前运行修复命令可以解决您的问题(它确实是我的)。

须藤-u的MongoDB的mongod --repair --dbpath的/ var/lib中/的MongoDB/