MySQL数据表InnoDB引擎表误删恢复

上一篇介绍MySQL数据恢复的文章MySQL数据表InnoDB引擎表误删恢复(独立表空间innodb_file_per_table=1),是基于独立表空间的情况下的恢复。本文将介绍基于共享表空间的数据恢复 。

先来看下独立表空间和共享表空间的直观不一样的地方。

独立表空间时建表:

独立表空间直观效果:

数据文件为aaa.ibd

共享表空间时建表:

共享表空间直观效果:

只有bbb.frm的表结构文件,没有独立的数据文件.ibd。

使用共享表空间时,数据将存储在MySQL数据目录下的ibdata1文件中(需要注意的是,ibdata1里不仅仅存储这里提到的bbb表的数据,还有很多其他的数据也存储在这里。即使使用独立表空间,ibdata1文件也依然存在,用于存储很多系统数据)

使用共享表空间时,误删除了表,分几种可能。

1,如果是不小心使用rm -f删除了bbb.frm结构文件,没有重启数据库时,通过命令show create table bbb可以将表结构文件显示出来,保存下来备用;如果重启了数据库,又没有表结构备份,则需要通过Linux下恢复文件的办法找回,然后使用工具来解析frm文件,可以恢复表结构;

2,如果是不小心使用rm -f ib*删除了系统表空间文件及ib_logfile0 和 ib_logfile1三个文件,则也依然可以使用上篇介绍的Linux下恢复文件的办法找回。(小心操作和备份是良药,:) );

3,如果全部文件都被rm -f *给删除掉了,其实和删除了一两个文件情况类似,使用Linux下恢复文件的办法来找回,然后先恢复系统表空间文件,再恢复表结构,然后导入表数据。

如果真的手滑删除了文件,MySQL数据库启动不了,尝试各种办法也无反应,那么联系后悔药数据恢复吧!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180503G0TRIS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券