删除 ib 文件以使 mysql 启动,但现在它无法识别表

删除 ib 文件以使 mysql 启动,但现在它无法识别表

我在启动 innodb 时遇到问题,在某处看到删除 ib_logfile0、ib_logfile1 文件有效。它有效并且 mysql 再次启动,当我使用“显示表​​”时,它显示我的数据库的所有表,但是当我运行“从 db1.table1 中选择 *”时,它说该表不存在。

你能帮助我吗?数据库文件仍存在于“/var/lib/mysql”

答案1

您刚刚删除了数据库的数据文件。MySQL 的数据库结构和数据位于不同的文件中。您的数据库保留了结构文件(因此它知道数据库和表),但数据已丢失。您必须从备份中恢复数据库。

下次尝试时要知道 - 您应该使用软件文档验证互联网上的任何内容,以避免运行破坏性操作并确保数据安全。

答案2

基本上,文件 ib_logfile0、ib_logfile1 包含数据库表结构并负责识别数据库连接的路径。您将能够在 /var/lib/mysql 中找到所有数据库,但由于删除了 ib_logfile0、ib_logfile1,所有使用 innoDB 数据库引擎的表都已损坏并将显示数据库连接错误。

因此你必须使用 MySQL Utilities 从 .frm 文件中恢复表结构

我正在分享一个您必须找到的链接。

https://www.percona.com/blog/2014/01/02/recover-table-structure-frm-files-mysql- 公用事业

其他方法是备份所有数据库并尝试使用强制恢复来恢复。

编辑

my.cnf file

并在你的 mysql 配置文件中添加下面一行

innodb_force_recovery = 1

现在,启动 mysql 服务。在配置文件的 mysqld 部分下,您可以添加 innodb_force_recovery = 0 – 6。

级别 1-4 相当安全,因为大多数数据都保留了下来。将级别设置为 5 或 6 会稍微危险一些,因为您可能会丢失一些数据。

祝你好运。

相关内容