关于MongoDB collection***.wt 文件损坏后,无法修复也无法启动mongodb
TEST
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
更多推荐
所有评论(0)