前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb被锁定 --repair

mongodb被锁定 --repair

作者头像
拓荒者
发布2019-09-06 09:29:09
3.5K0
发布2019-09-06 09:29:09
举报
文章被收录于专栏:运维经验分享运维经验分享

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>

原因: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.conf

也可以重新指定一个repairPath

mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0

mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0

查了查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/

如果后台执行

./mongod --repair --dbpath /data/dbdata --repairpath /data/repair/ --logpath /data/dblog/mongodbrepair.log --fork

这时mongodb进程会在/mongodb/repair/ 目录下储存临时的修复数据库文件,文件目录为“$tmp_repairDatabase_0”所以此目录空间要足够大。 生产环境数据库为100G,修复进行了大约3个半小时,在“/mongodb/repair/$tmp_repairDatabase_0"目录下产生了近30G的数据库临时文件,修复完成后数据库临时文件自动清除。

之后开启mongod服务,检查数据库,发现读写正常,mongodb.log没有出现错误。修复OK!

原理是:把数据重新读一遍,然后写到另一个库中

代码语言:javascript
复制
删除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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档