MongoDB今天突然停止工作(12.04)


8

一两个月前我更新到12.04之后,我通过APT安装了MongoDB。从那时起,它一直运行良好。我没有对配置或任何内容进行任何更改-它开箱即用。

今天它没有开始,当我登录时,我的应用程序突然出现“无法连接到列表中的任何服务器”错误,我检查并且mongod没有在运行。

ls -al /var/lib/mongodb

不显示*.lock文件。

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

然后我尝试 sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

知道有什么问题吗?

更新资料

因此,我尝试了sudo service mongodb start一下,终于开始了(之前我尝试过几次)

mongodb start/running, process 4376

Answers:


13

诊断

要做的第一件事是检查MongoDB日志文件,以查看为什么服务未启动。跑:

tail -f /var/log/mongodb/mongodb.log

在一个终端窗口中,然后运行:

sudo service mongodb restart

在另一个。日志文件应显示MongoDB尝试启动,并在失败时报告错误消息。

修理

如果日志表明您需要修复数据库,请牢记两点:

  1. 默认情况下,mongod期望数据库文件位于其中/data/db/,但是Ubuntu软件包将其配置为in /var/lib/mongodb/。因此,如果mongod直接运行而不是使用upstart脚本,则需要通过添加--dbpath参数来告诉数据库文件在哪里。
  2. mongod使用upstart 运行时,它将mongodb以拥有数据库文件的用户身份运行。如果您运行mongod使用sudo未指定用户,那么你将最终获得通过所拥有的数据库文件root。因此,您需要为添加一个-u参数sudo

如果您的数据库文件当前归所有者所有,root则需要将其所有权更改回mongodbMongoDB可以再次使用它们之前:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

要在使用打包发行版时在MongoDB上运行修复,您需要运行:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/

4

我也有同样的问题,并解决了。当我尝试开始mongodbsudo,表明该进程已经在运行()。但是我无法通过外壳访问正在运行的实例。显示连接失败mongodb start/running, process xxxx

解决方案

所以我删除了锁定文件:

sudo rm /var/lib/mongodb/mongod.lock

然后,我重新启动了服务:

sudo service mongodb start

然后,Mongo再次在我的机器上工作!


0

我也有在我的计算机(Windows安装)中启动mongod.exe的类似问题。是导致问题的.lock文件C:\data\db。我删除了该文件,问题得到解决。


0

遇到过类似的问题,原因有点愚蠢。我的磁盘空间不足。

检查/var/log/mongodb/mongod.log上的日志,发现以下行:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

希望这可以节省一个人半小时的生命。

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.