数据恢复咨询热线:400-666-3702  

欢迎访问南京兆柏数据恢复公司,专业数据恢复15年

兆柏数据恢复公司

 常见问题

 当前位置: 主页 > 常见问题

面试官:当你误删某张数据库表的frm和ibd文件时,该如何恢复?

浏览量: 次 发布日期:2023-10-06 23:15:43

面试官:当你误删某张数据库表的frm和ibd文件时,该如何恢复?

上海数据恢复

之所以做这个实验,也是有个朋友误删了某张表的frm和ibd文件,然后要导入数据的时候一直提示无法重新创建这张表,这时候应该怎么解决呢?我们用一个实验来看看。。

以下ERROR 29 (HY000): File 'http://www.toutiao.com/a6780600319429575175/test/t2.MYD' not found (Errcode: 2 - No such file or directory)提示表明t2数据库文件损坏了

测试在t表表结构不存在的时候插入数据,发现可以插入成功

重启之前得在其他数据库新建t表结构,然后复制frm文件到原数据库即可

因为myisam不需要记录信息到数据字典,所以drop后重建就行了

此时t2表结构和数据已经恢复

可以发现修复不成功

考虑到在使用innoDB引擎的数据库中,其实际数据不是存放在数据库目录下的,而是放在一个叫ibdata1的文件内(默认配置时),其目录下只是放置了数据库的表及表结构相关的信息。这里在其他库上建立t表及数据,然后将这个表复制到test库下

拷贝后发现还是没有恢复成功

升级后还是没有恢复成功

因为共享表空间记录了信息

配置文件的一个参数:innodb_force_recovery

innodb_force_recovery 会影响整个InnoDB存储引擎的恢复状况。默认为0,表示当需要恢复时执行所有的

innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。当设置参数值大于0后,可以对表进行

select,create,drop操作,但insert,update或者delete这类操作是不允许的。

1、在mysql库创建t表及数据

2、停止数据库

3、复制frm和ibd文件

4、修改参数

5、两次启动数据库

启动mysql,再关闭mysql 把配置innodb_force_recovery = 6给删除了,然后启动mysql

连云港数据恢复

6、drop 表后重建

提示ERROR 1813 (HY000): Tablespace '`test`.`t`' exists或ERROR 1813 (HY000): Unknown error 1813都是表空间问题

此时只需要删除对应的.ibd文件即可或者alter table t discard tablespace;来删除

1、误删数据文件时不要忙着重启数据库,先查看表是否存在,做一下备份

2、定期备份是很重要的

3、以上innodb表实际上只恢复了表结构,表数据并没有恢复,可以考虑通过mysqlbinlog进行回退

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

相关推荐