关于MongoDB collection***.wt 文件损坏后,无法修复也无法启动mongodb

PS:尝试修复之前,先把数据文件备份一份,免得修复过程中数据丢失

意外操作导致了mongoDB运行不了,原因是collection***.wt文件损坏

尝试 mongod --dbpath "/usr/***/****" --repair,但是会失败,具体的失败信息忘了保存了。大概就是说修复到某个库的时候,某个collection文件打不开之类的。查看了下这个collection文件大小是为0。所以估计是修复不了。但是心想,这个库我可以不修复,但是mongodb必须得运行起来啊,我还有其他数据呢,起码把数据损失降低到最少。

解决方案:

运行这段命令,查出这个collection相关联的 table

./wt -v -h /usr/***/***/db -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R list | grep collection-*****

运行之后有可能会出现下三个东西。

colgroup:collection-***
file:collection-***.wt
table:collection-***

 

但是不一定全部都有,当时我只出现了table:*******这个,但实际上我有collection-***.wt这个文件,只是它的大小为0,估计是已经识别不了了。

后面我就尝试使用下面这条语句去删除这个collection

./wt -v -h /usr/***/***/db -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R drop collection-****.wt

但是删除不成功啊,再我几次尝试后发现,原来我上面用 list 参数时,只能查到 table:对应的那条数据,所以我删除的时候不需要 到collection-***.wt  只需 collection-***即可。

./wt -v -h /usr/***/***/db -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R drop collection-****

这里删掉一个会另外两个同步删除掉的,最后删除成功了。

然后我就直接去运行一遍数据库,但提示还是不行,需要修复一次才行。

最后repair完之后,运行。奇迹出现了,启动成功!!!

顺便说下,修复的时候可以把下面两个文件删了(记得备份)

mongod.lock

_repair_incomplete
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值