事由:台湾停服,需要把数据仓库拉回来备用,运维大大执行了备份操作,不久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 或让运维直接停机,要正确关闭服务后再操作
正确的关闭姿势:
kill -2 PID 或者 kill PID
use admin db.shutdownServer();
转载请注明原地址:
http://blog.noark.xyz/article/2017/6/13/mongodb无法启动解决办法mongod.lock_is_not_empty/