上一篇介绍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数据库启动不了,尝试各种办法也无反应,那么联系后悔药数据恢复吧!
领取专属 10元无门槛券
私享最新 技术干货