一两个月前更新到 12.04 后,我通过 APT 安装了 MongoDB。从那时起,它一直运作良好。我没有对配置或任何东西进行任何更改 - 它只是开箱即用。
今天它没有启动,当我登录时,我的应用程序中突然出现“无法连接到列表中的任何服务器”错误,我检查并mongod没有运行。
ls -al /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)
显示没有*.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")
Run Code Online (Sandbox Code Playgroud)
然后我试过了 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
Run Code Online (Sandbox Code Playgroud)
知道出了什么问题吗?
所以我试过了sudo service mongodb start,它终于开始了(我之前试过几次)
mongodb start/running, process 4376
Run Code Online (Sandbox Code Playgroud)
Dav*_*rds 13
首先要做的是检查 MongoDB 日志文件以了解服务未启动的原因。跑:
tail -f /var/log/mongodb/mongodb.log
Run Code Online (Sandbox Code Playgroud)
在一个终端窗口中,然后运行:
sudo service mongodb restart
Run Code Online (Sandbox Code Playgroud)
在另一个。日志文件应显示 MongoDB 尝试启动并在失败时报告错误消息。
如果日志表明您需要修复数据库,请记住以下两点:
mongod期望数据库文件/data/db/在/var/lib/mongodb/. 所以如果你mongod直接运行而不是使用 upstart 脚本,你需要通过添加一个--dbpath参数来告诉它你的数据库文件在哪里。mongod使用 upstart运行时,它将mongodb以拥有数据库文件的用户身份运行。如果您在没有指定用户的情况下运行mongodusingsudo那么您最终将拥有由root. 所以你需要-u给sudo.如果您的数据库文件当前归root您所有,则需要将其所有权更改回mongodbMongoDB 才能再次使用它们:
sudo chown -R mongodb:mongodb /var/lib/mongodb/
Run Code Online (Sandbox Code Playgroud)
要在使用打包发行版时在 MongoDB 上运行修复,您需要运行:
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21787 次 |
| 最近记录: |