MySQL 通过ibd 恢复数据

9个月前 (11-28) wang 个人日志 0评论 已收录 197℃ 浏览数:141

昨天由于自己手贱。。。在装有博客的VPS上测试宝塔面板。。。看的时候也没有太过注意,上面强调必须要纯净的系统,然后装上后系统炸了。。。apache和mysql都打不开,我前几天写的文章还没有备份,然后折腾了半天,无奈之下,只把html文件夹进行了备份,然后数据库打不开,直接备份了整个/var/lib/mysql文件夹,里面有ibd和frm类型文件,估计是数据库的文件,只能先拿着,然后再考虑以后导进去。

重装了系统后,将一个星期前的备份文件进行了恢复,但是前几天写的文章没有备份,只在mysql的文件里。但是觉得应该直接把文件夹进行替换应该就行了吧,觉得格式啊表结构都是相同的,然后替换完发现mysql打不开了。。。解决了半天还是没解决了。觉得可能这样不行,可能里面有一些系统的信息之类的,无奈之下只能把mysql卸了重装,然后重点就在ibd和frm文件上了。发现网上有类似的教程。于是按着教程将数据进行了恢复,所以写下恢复的步骤,做一下总结。

MySQL中.frm文件:保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关。

MySQL中.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

由于我的表结构是一样的,只是少了几篇文章的数据,所以没有恢复frm文件,下面只是ibd文件的恢复过程。

1.连接mysql 切换到对应的数据库

2.执行alter table 表的名字 discard tablespace;

3.删除对应表的ibd文件 位置/var/www/lib/数据库名

4.复制表ibd文件

5.修改ibd文件权限

chown -R mysql.mysql 表的名字.ibd

6.执行 alter table “表的名字” import tablespace;

恢复成功!

博主

Just do it. Now or never.

相关推荐

嗨、骚年、快来消灭0回复。