缘由:mongodb不正常关闭形成的mongodb被锁定,这算是一个Mongod 启动的一个常见错误,非法关闭的时候,lock 文件没有remove,第二次启动的时候检查到有lock 文件的时候,就报这个错误了。
solution(查看log能够发现):
1)首先删除/var/lib/mongo/目录下的mongod.lock文件
rm /var/lib/mongo/mongod.lock
2) repair方式启动mongodb
mongod -f /etc/mongod.conf --repair
3) 再启动一次mongodb
这里必定要再启动一次,否则启动client端仍然连不到server
mongod -f /etc/mongod.confmysql
也能够从新指定一个repairPath |
mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0sql
mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0mongodb
查了查mongodb的文档,遂用如下方法进程修复:
首先中止mongod服务,删除 mongodb.log,也能够备份一下
# rm -rf /data/mongodb/mongodb.log
删除mongodb进程文件
# rm -rf /mongodb/mongod.lock
进行修复数据库
# /usr/local/mongodb/bin/mongod --repair --dbpath /mongodb/ --repairpath /mongodb/repair/app
若是后台执行spa
./mongod --repair --dbpath /data/dbdata --repairpath /data/repair/ --logpath /data/dblog/mongodbrepair.log --fork.net
这时mongodb进程会在/mongodb/repair/ 目录下储存临时的修复数据库文件,文件目录为“$tmp_repairDatabase_0”因此此目录空间要足够大。
生产环境数据库为100G,修复进行了大约3个半小时,在“/mongodb/repair/$tmp_repairDatabase_0"目录下产生了近30G的数据库临时文件,修复完成后数据库临时文件自动清除。
日志
以后开启mongod服务,检查数据库,发现读写正常,mongodb.log没有出现错误。修复OK!code
原理是:把数据从新读一遍,而后写到另外一个库中server
删除MongoDb安装目录下的 mongod.lock 文件和日志文件 mongodb.log rm -rf logs/ rm -rf /usr/local/mongodb/data/mongod.lock mkdir -p /storage/mongodb/tmp/ ./mongodb/bin/mongod --repair --dbpath /usr/local/mongodb/data/ --repairpath /storage/mongodb/tmp/ 正常关闭 killall mongod 启动 ./mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log -logappend -fork -port=28314