龙空技术网

mysql利用ibd文件恢复表数据

小码农的学习记录 57

前言:

现时看官们对“mysql frm恢复表结构”大约比较关注,兄弟们都需要学习一些“mysql frm恢复表结构”的相关内容。那么小编在网络上汇集了一些关于“mysql frm恢复表结构””的相关知识,希望你们能喜欢,大家一起来学习一下吧!

谈到mysql的.ibd文件,我们就会想到innodb引擎。在生产库中,由于innodb支持事务,也被广泛应用。因此,我最近也上网查了一些资料,自己也亲自实践过。希望这篇文章能帮到需要的你,如果文章哪里写的不对,还请各位大佬指正。

在讲恢复之前,我们先介绍mysql的一个参数innodb_file_per_table,这个参数在配置文件中有0和1两种参数类型。当我们把这个参数设置为0,再创建一张innodb表(下文为test表)。在数据存放的地方(可以通过SHOW VARIABLES LIKE 'datadir' 查看)只会创建一个test.frm(表结构定义文件)。而写入的表数据则会存放到ibdata*这个文件中。当我们把这个参数设置为1,那么创建表时,就会生成test.frm和test.ibd两个文件。

恢复过程只有简单的5步:

在备份数据库中找到test表的建表语句,执行建表语句。在数据库连接工具中执行ALTER TABLE test DISCARD TABLESPACE;用于删除test.ibd,不能直接物理删除。将无损的test.ibd上传到和test.frm同级目录。在linux系统中修改ibd文件拥有者为mysql:chown mysql:mysql test.ibd。在数据连接工具中执行ALTER TABLE test IMPORT TABLESPACE;将数据导入表空间。

在数据连接工具中执行查询语句,可以看到数据已经恢复。

标签: #mysql frm恢复表结构 #mysqlibdata1删除