删除 ibdata1 后 MySQL 表消失了

标签 mysql innodb data-recovery

几天前,在谷歌搜索后,我无法让 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 格式存储表数据,有时可以恢复,但这是一个细致的过程。以下是一些引用资料:

恢复最近的备份然后再恢复更简单 use the binary log to play back changes在您最近的备份之后制作。

关于删除 ibdata1 后 MySQL 表消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753571/

相关文章:

mysql - 错误的 MySQL 更新查询后恢复?

mysql - 从 .frm(无 .myd 和 .myi、ibdada、my.ini)文件中恢复 MySQL InnoDB 数据/结构

php - 每个 PHP 文档超过 1 个查询

mysql - 记录转换1列3行->1行3列

mysql - 如何查看表或列的所有外键?

mysql - 在索引上覆盖 SELECT 给出了 using where;使用索引;而不是只使用索引;

mysql - 如何提高 MySQL INSERT 和 UPDATE 性能?

database - 我可以回滚我已经提交的事务吗? (数据丢失)

mysql - 在终端中从外部 sql 文件执行 mysql 命令

mysql - 无法在 Concat select Prepared 语句中传递参数值