事由:台湾停服,需要把数据仓库拉回来备用,运维大大执行了备份操作,不久MongoDB进程就不见了…

由于数据有36G,决定先把服务拉起来继续备份然后再查问题,

启不来了。。。。

查看日志发现 Detected unclean shutdown - /data/mongodb/db/mongod.lock is not empty

应该是意外退出时数据被锁定了,解决办法:

1.删除锁文件

rm /data/mongodb/db/mongod.lock

2.修复数据文件

mongod --dbpath /data/mongodb/db/ --repair  

3.重启mongo

mongod -f /data/mongodb/shardsvr.conf
过程问题记录

修复过程出现其他异常情况

WiredTiger (24) [1497255674:874095][5319:0x7f905a1a3c80], file:WiredTiger.wt, metadata-ckpt: /data/mongodb/db//WiredTiger.turtle: handle-open: open: Too many open files

调整参数 ulimit -n 65535 继续跑修复指令

修复数据所用时间与数据大小成正比,跑了一夜还没完…

但愿后续能正常进行…

意外退出会锁数据,不能Kill -9 或让运维直接停机,要正确关闭服务后再操作

正确的关闭姿势:


  1. kill -2 PID 或者 kill PID

  2. use admin db.shutdownServer();

转载请注明原地址: http://blog.noark.xyz/article/2017/6/13/mongodb无法启动解决办法mongod.lock_is_not_empty/