之前MongoDB启动的时候是正常的,不知道后来启动报错了,就把粘贴出来查询了。最后才知道是由于自己不正常的关闭导致的这个情况。
--摘录:MongoDB非正常关闭后修复记录
mongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示:
2015-03-09T20:39:20.172+0800
2015-03-09T20:39:20.172+0800 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2015-03-09T20:39:20.172+0800
about to fork child process, waiting until server is ready for connections.
forked process: 14229
ERROR: child process failed, exited with error number 100
修复方法:
这算是一个Mongod 启动的一个常见错误,非法关闭的时候,lock 文件没有干掉,第二次启动的时候检查到有lock 文件的时候,就报这个错误了。
解决方法:进入 mongod 上一次启动的时候指定的 data 目录 --dbpath=/data/mongodb
删除掉该文件:
rm /data/mongodb/mongo.lock --linux del /data/mongodb/mongo.lock --windows
再执行:
./mongod --repair
启动:
/usr/local/mongodb$ /usr/local/mongodb/mongod -dbpath=/data/mongodb --fork --port --logpath=/usr/local/mongodb/log/work.log --logappend --auth
OK,问题解决。
正确关闭mongod 的方法:进入mongo shell
use admin
db.shutdownServer()
也可以按照文档粗暴的杀掉它,它内部应该有KILL信号处理程序。
killall mongod
请不要 kill -9 ,会造成文件数据混乱丢失 repair 也无力回天。
ctrl+c 可以退出mongo的界面 或是ext