Mysql ibd文件恢复指南

背景

  mysql在使用的过程中,难免遇到数据库表误操作,基于此,作者亲力亲为,对mysql数据表ibd文件的恢复做以下详细的说明,对开发或者初级dba提供一定的指导作用,博客中如若存在相关问题,请指明,相互学习,共同进步。

恢复说明

  1.   创建数据库(随意创建),create database yygk
  2. 创建数据表
         
         备注:row_format要和ibd文件的row_format一致,否则,会提示两者不一致。 当前row_format=dynamic
  3. 表的属性查看
          我们使用:show table status like ‘t_dict‘\G,查看表的属性,截图如下。
         
          备注:细心的我们发现,创建表时候的row_format和表属性的不一致,基于innodb是,要把row_format设置成dynamic时,需要修改mysql的全局配置,直接在myql命令中修改:set global innodb_file_format=Barracuda;
  4. 表错误信息查看
       
       从错误日志中我们发现:row_format设置失败了,按照第3表中的说明,在myql命令中修改:set global innodb_file_format=Barracuda;然后重新创建表。
  5. 说明
       我们在恢复表的时候,要保证row_format和ibd文件的一致,如果ibd文件是compact的话,需要建表的时候,设置成row_format=compact,在恢复的时候,自行解决,从第6步开始,重点说明如何去恢复。
  6. 恢复第一步:移除表空间
      alter table t_dict DISCARD TABLESPACE;
  7. 恢复第二步:将备份的ibd文件,放到mysql->data->创建的数据库名称->,将ibd拷贝到此目录下,如下图所示
     
  8. 恢复第三步:重新导入表空间
      alter table t_dict IMPORT TABLESPACE;
  9. 后记
      当执行到上一步完成后,我们发现数据库中的数据已经完全恢复过来了。赞。赞。赞  今后我对mysql进行下深入的学习,掌握dba的技能,应用于项目开发。完结!!!!
时间: 2024-10-10 16:42:53

Mysql ibd文件恢复指南的相关文章

硬盘空间满导致mysql ibd文件被删后提示Tablespace is missing for table 'db_rsk/XXX"

昨天一早,开发人员反馈说一个测试环境报Tablespace is missing for table 'db_rsk/XXX",周末刚升级过,特地让开发回去查了下,说脚本中肯定没有drop table的操作.datadir下检查了下,发现frm文件在的ibd文件没有了,bing了下,没发现类似异常.于是先回到mysql.err往回搜索,半天后发现上周五下午mysql出现了一次异常宕机,说是磁盘空间不足了,看日志该文件被损坏了,如下: 2016-11-12 11:31:00 28443 [ERRO

MySQL表结构为InnoDB类型从ibd文件恢复数据

客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: 一.找回表结构,如果表结构没有丢失直接到下一步 a.先创建一个数据库,这个数据库必须是没有表和任何操作的. b.创建一个表结构,和要恢复的表名是一样的.表里的字段无所谓.一定要是innodb引擎的.CREATE TABLE `test`(  `testID` bigint(20)) ENGINE=

亲测Mysql表结构为InnoDB类型从ibd文件恢复数据

客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: 一.找回表结构,如果表结构没有丢失直接到下一步 a.先创建一个数据库,这个数据库必须是没有表和任何操作的. b.创建一个表结构,和要恢复的表名是一样的.表里的字段无所谓.一定要是innodb引擎的.CREATE TABLE `test`(  `testID` bigint(20)) ENGINE=

MySQL借助ibd文件恢复数据技巧?

磁盘坏道.断电等意外不是常态,但遇上了就足够你"惊心动魄"!如果是数据库损坏造成的数据丢失,Binlog也不可用了,怎么办?为了在短时间内无损恢复数据以保证业务稳定性,除了利用binlog,我们还修炼了一招新的恢复技能! 还记得我们之前写过的<只需一招,让失控的研发爱上你>吗?前文提到过我们日常使用的比较多的两种数据库恢复方法是: 以上两种方法都可以实现实时性的回档,但是你会认为有了这两种技能就够了吗? 不-.! 在线上这种错综复杂的架构中,其实还有很多未知的原因,我们是没

亲測Mysql表结构为InnoDB类型从ibd文件恢复数据

客户的机器系统异常关机,重新启动后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,仅仅能想办法从数据库文件其中恢复,查找资料,试验各种方法,确认以下步骤可行: 一.找回表结构.假设表结构没有丢失直接到下一步 a.先创建一个数据库.这个数据库必须是没有表和不论什么操作的. b.创建一个表结构.和要恢复的表名是一样的. 表里的字段无所谓. 一定要是innodb引擎的.CREATE TABLE `test`(  `testID` bigint(20))

MYSQL .ibd文件数据恢复

恢复还原mysql中的.ibd文件.1.需先创建一个一样的数据库表结构2.删除表空间 ALTER TABLE "+dbName+" DISCARD TABLESPACE;3.复制xxxxx.ibd文件到数据库目录下 4.恢复导入表空间ALTER TABLE "+dbName+" IMPORT TABLESPACE; --------恢复frm表结构------`切记:一定要按照顺序操作,否则库会死掉,要重新安装重新来一波`------------------ 1.正

【MySQL】InnoDB引擎ibdata文件损坏使用ibd文件恢复数据

参考:http://my.oschina.net/sansom/blog/179116 参考:http://www.jb51.net/article/43282.htm 注意!此方法只适用于innodb_file_per_table独立表空间的InnoDB实例. 此种方法可以恢复ibdata文件被误删.被恶意修改,没有从库和备份数据的情况下的数据恢复,通过测试在ibdata被修改,实例异常shutdown情况下,不能保证数据库所有表数据的100%恢复,目的是尽可能多的恢复. [InnoDB引擎i

MySQL 8.0 恢复孤立文件每表ibd文件

此过程描述如何将每个文件的 orphan 文件还原 .ibd到另一个MySQL实例.如果系统表空间丢失或不可恢复,并且您希望.idb 在新的MySQL实例上恢复文件备份,则可以使用此过程. 一般表空间 .ibd文件 不支持该过程 . 该过程假定您只有 .ibd文件备份,您正在恢复到最初创建孤立.idb文件的相同版本的MySQL ,并且该 .idb文件备份是干净的.有关创建干净备份的信息,请参见 第15.8.1.3节"移动或复制InnoDB表". 第15.7.6节"将每个表的表

mysql通过data文件恢复数据库的方式

1.首先定位mysql的my.ini配置文件,查找datadir的位置 #Path to the database rootdatadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" 一般情况下,该文件夹是隐藏,需要显示所有文件. 2.将data目录下的文件拷贝至datadir.重启启动数据库即可 net start mysql mysql通过data文件恢复数据库的方式,布布扣,bubuko.com