当前位置: 首页>>技术教程>>正文


服务器崩溃后,MongoDB无法启动

, ,

问题描述

我的Ubuntu计算机崩溃了,当我重新启动它时,MongoDB无法正常工作。我尝试了以下命令,并得到以下输出:

$ mongo
Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

$ service mongodb status
mongodb stop/waiting

$ service mongodb restart
stop: Unknown instance: 
start: Rejected send message, 1 matched rules; type="method_call",
       sender=":1.57" (uid=1000 pid=2227 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")

$ tail /var/log/mongodb/mongodb.log
[initandlisten] exception in initAndListen: 12596 old lock file, terminating
dbexit: 
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] shutdown: going to close sockets...
[initandlisten] shutdown: waiting for fs preallocator...
[initandlisten] shutdown: closing all files...
[initandlisten] closeAllFiles() finished
dbexit: really exiting now

(重新格式化输出以匹配网站布局。)

发生了什么?我该如何解决?

最佳回答

日志文件告诉您您有一个“旧锁文件”。 MongoDB在运行时会保留一个lock文件。它在启动时创建该文件,并在停止时将其删除。当计算机崩溃时(或MongoDB崩溃时,例如通过kill崩溃),此文件不会被删除,因此数据库不会启动。该文件的存在表明MongoDB关闭异常。

可以完成两件事:

  1. 如果这是一台开发机,并且您没有使用过数据库(也没有程序),则可以手动删除文件。对于在Ubuntu 12.10上运行的MongoDB 2.2.2,它位于/var/lib/mongodb/mongod.lock中。对于其他版本,该文件可以位于其他路径中,也可以命名为mongo.lock

  2. 比较安全的方法是遵循MongoDB的Durability and Repair指南。总之,对于具有以上配置的计算机,应执行以下命令:

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

次佳回答

我要做的就是运行:sudo mongod –repair

然后:

苏多蒙哥

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8727.html,未经允许,请勿转载。