mongoDB数据库的修复

本文详细介绍了当MongoDB日志显示数据库损坏时的修复步骤。通过停止服务、删除日志和进程文件,使用--repair参数进行数据库修复,最终恢复正常读写。修复过程涉及大量临时文件的生成与清理。

mongoDB数据库的修复

标签: 数据库mongodbdatabasefile文档
 分类:
数据库技术/Cache技术/存储技术(61) 
查看mongodb.log日志,发现日志里有以下语句:
..............
Mon Mar  317:46:37 [conn148] Assertion: 10295:getFile(): bad file number value (corrupt db?): run repair

..............

com.MongoDB.MongoException: bad offset:0 accessing file: /data/dbdata/db.0 - consider repairing database

 

翻译 为: 声明: getFile():错误的文件数值(损坏的数据库?):运行修复

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

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

转载于:https://www.cnblogs.com/xiaojikuaipao/p/6518890.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值