删除ibdata1后,MySQL表消失了。

13 浏览
0 Comments

删除ibdata1后,MySQL表消失了。

几天前,我无法再运行mysql(xampp)。通过搜索,我找到了这篇帖子:XAMPP - MySQL shutdown unexpectedly。它说要删除ibdata1文件,我按照方法操作后,mysql又能正常启动了。但是,其中一个数据库的表格消失了,不过我仍然可以在数据文件夹(ibd和frm文件)中看到包含值的表格。有什么办法可以恢复这些表格吗?谢谢。

0
0 Comments

问题的原因是删除了ibdata1文件,该文件是InnoDB存储引擎的关键文件,包含了数据字典、回滚段和变更缓冲区的重要数据。如果使用了innodb_file_per_table=1的设置,所有的表数据将存储在.ibd文件中,但是ibdata1文件仍然包含了数据字典,用于记录InnoDB表空间的全局目录。因此,删除ibdata1文件会导致MySQL无法识别已存在的表以及它们所在的文件。

解决方法是可以尝试恢复已删除的ibdata1文件,但这是一个繁琐的过程。可以参考以下几个参考链接进行恢复:

- [A recovery trivia or how to recover from a lost ibdata1 file](http://www.mysqlperformanceblog.com/2011/06/03/a-recovery-trivia-or-how-to-recover-from-a-lost-ibdata1-file/)

- [Connecting orphaned .ibd files](http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/)

- [How to recover an orphaned .ibd file with MySQL 5.6](http://www.mysqlperformanceblog.com/2013/11/05/how-to-recover-an-orphaned-ibd-file-with-mysql-5-6/)

如果备份了最新的数据,可以简单地恢复最新的备份,然后使用二进制日志(play back changes)来还原最新备份后的更改。

0