几天前,在谷歌搜索后,我无法让 mysql 运行了(xampp),我发现了这篇文章:XAMPP - MySQL shutdown unexpectedly
它说要删除我所做的 ibdata1 文件,mysql 再次启动但是一个数据库的表已经消失,但是我仍然可以看到数据文件夹中包含值的表(ibd 和 frm 文件)无论如何都在那里我可以恢复那些表吗?
谢谢。
最佳答案
ibdata1 文件很重要,通常你不应该删除它,除非你想删除所有 InnoDB 数据并从一个空的 MySQL 实例重新开始。
即使您使用了 innodb_file_per_table=1
并且所有的表都存储在 .ibd 文件中,ibdata1 文件仍然包含数据字典,它基本上就像一个全局的InnoDB 表空间的目录。这就是 InnoDB 了解您拥有哪些表以及它们位于哪些文件中的方式。ibdata1 文件还可以在回滚段和更改缓冲区中包含重要数据,这些数据最终将合并到您的表中,但这可能需要一些时间。
如果您删除了 ibdata1,并且您一直以 file-per-table 格式存储表数据,有时可以恢复,但这是一个细致的过程。以下是一些引用资料:
- A recovery trivia or how to recover from a lost ibdata1 file
- Connecting orphaned .ibd files
- How to recover an orphaned .ibd file with MySQL 5.6
恢复最近的备份然后再恢复更简单 use the binary log to play back changes在您最近的备份之后制作。
关于删除 ibdata1 后 MySQL 表消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753571/