MySQL之ibdata1删除后恢复,Error1146

data目录的数据库文件夹下 ibd文件存储数据,frm文件存放表结构的定义,ibdata1是表空间数据,有关ibdata1的作用详见另一篇Blog,MySQL之表空间。当删除ibdata1文件后,有三种恢复数据库的方法。

通过重新导入数据恢复

ibdata1被删除后,再访问各表时提示,Error1146,Table doesn’t exist,如下图所示:
MySQL之ibdata1删除后恢复,Error1146_第1张图片
通过重新导入备份的脚本数据方式,重新修复数据。ibdata1被删除,而各个数据库下的表文件没有被删除,在导入脚本数据时,提示如下:

[Err] 1813 - Tablespace for table '`mybase`.`mytable`' exists. Please DISCARD the tablespace before IMPORT.
[Msg] Finished - Unsuccessfully

需要删除data目录下数据库文件夹下的所有ibd和frm文件,再次导出脚本数据则成功。

通过备份和覆盖的方式恢复

通过备份和覆盖data目录下的数据库文件的方式恢复数据库,包括删除数据库,或者重命名数据库。数据库表结构可以通过MySQL Utilities工具My导出表结构。详见另一篇Blog《mysql 误删ibdata1文件 恢复数据》

通过mysqld的pid(进程ID)恢复

当MySQL实例启动时,会将自己的进程ID写入一个文件中——该文件即为pid文件,通过PID进程进行恢复。详见《mysql 误删除ibdata1之后如何恢复》

【1】MySQL数据库文件,From DB-Engineer
【2】mysql 误删除ibdata1,数据库重启之后的恢复方法

你可能感兴趣的:(数据库,mysql)