MongoDB经常会遇到结束进程后,无法启动的问题,当然报错的情况有很多种,下面列出我遇到的报错:

ERROR: child process failed, exited with error number 1
ERROR: child process failed, exited with error number 48
ERROR: child process failed, exited with error number 100

遇到以上几种报错,可以尝试以下几种解决方案

1. 找到 data/mongod.lock 文件,并删除mongod.lock

2. 使用命令尝试修复 mongodb,命令如下:

/usr/bin/mongod -f /etc/mongod.conf --repair

3. 删除 log 文件,命令如下:

rm /usr/local/logs/*

可能原因:

没有正常关闭mongodb,比如直接 kill -9 导致

如何避免

根据官方文档说明,千万不要使用 kill -9 结束 mongodb 进程。因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。

如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。

官方文档:https://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

正确结束姿势:

use admin
db.shutdownServer()
mongod --shutdown
kill 

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/44