Mysql恢复之.ibd文件恢复,没有教程步骤,只有心得
背景
博主最近遇到一件很鬼怪的事,我删当前的一个目录,他竟然把我要删的目录以外的几个目录给删了,顿时冷汗直下,因为那是数据库机器,而已还是资源目录,备份跟data目录全部没了,只来得及从进程中拉取.ibd文件出来,不就还好,.ibd文件还能救得回,不过当天肯定会丢失部分数据,还好我这个数据库是记录用户日志的,不是很核心,不然我就不会在写博文,而是打包走人,在找工作了
恢复第一步
有了.ibd文件是不是想,按百度的方式进行数据的恢复,这里暂停
如果能拉得出.ibd文件,那么证明数据库还是可以访问的,那么请进行热备份出来,不要想着.ibd文件恢复,因为是个巨坑
这里恢复,因为我是没想到上面那步,所以导致机器被重启,结果。。。。。。想到了想要备份都不行,真想搞死我自己
如果跟我碰到一样以及相同结果的兄弟,请联系我一下,我们一起哭惨。。。。。。。。。。。。。。。。。。。。。。。。
我按百度的方式进行恢复。。。。。。。常用的三剑客
1. 先创建表,表结构跟删除的表结构要一样
2. 删除表空间,把.ibd复制过去
3. 恢复表空间。
我按这个步骤恢复了数据量比较小的,恢复成功,让我无比开心,接下来让我心沉入大海
。。。。。。如果到这步可以恢复的大佬们,就不用接着看下去了
我恢复到了数据量大的表,就一直报错,数据库直接崩,重启,百度,必应,谷歌,都找了相关博文,一点收获都没有
想死的心都有。。。。。。
事到这步也不能死心,按网上的博文尝试各种的方法,结果就是:.ibd文件损坏,无法直接恢复
最后一步
我是怎么重新获得光明的呢
得到一位dba大佬的指点,使用.ibd分析工具来恢复,找了一下。。。。。不是恢复表结构,就是分析.ibd的占用情况等等
最后终于找到了,也是那位dba大佬的指点,给我介绍了一个工具,也是这博文最重要的东西:undrop-for-innodb
,我的救星
标题也说了,没有教程,所以有需要的大佬们,自行百度
工具一点心得
- 使用undrop-for-innodb工具恢复出来的数据文件,请按不同文件名恢复到不同.sql文件,请不要恢复到一个.sql文件
- 猜测啊:有一些.sql文件可能是索引之类的数据,所以会乱码,我就只恢复没有乱码的.sql文件,各位大佬有使用过的,可以证明的一下,联系一下本人
恢复成功了,丢失了部分数据,还好找回大部分数据,让我的饭碗保留下来
过后有时间,会尝试还原一下当时的情况,也会新开博文记录下来
重点推荐一下,数据库社区:https://www.modb.pro/