Mysql中误删除的记录如何恢复

Ana*_*DEV 2 mysql recovery

我正在使用Mysql。并且错误地删除了非常重要的信息。有没有办法恢复甚至查看一个多月前删除的信息?

aku*_*sky 6

如果是 MyISAM - 没有机会通过备份进行恢复。

如果是 InnoDB - 这取决于。InnoDB 将记录标记为已删除并将其保留在页面中一段时间​​。当树重新平衡时,已删除的记录将被清除。

因此,是否可以取消删除记录取决于删除后对表进行了多少写入。

在十六进制编辑器中打开 InnoDB 表空间并尝试查找已删除的记录:

hexdump -c table.ibd
Run Code Online (Sandbox Code Playgroud)

如果表相对较小,我更喜欢bvi(它允许通过字符串或二进制模式进行搜索)

bvi table.ibd
Run Code Online (Sandbox Code Playgroud)

因此,如果您看到已删除的记录 - 它是可以恢复的。

查找已删除记录的其他位置是 binlog。如果它是某种row格式 - 删除事件将包含旧值和新值。

InnoDB 重做日志也存储更改。但绝对不会让他们呆一个月。

要从 InnoDB 页检索已删除的记录,您可以使用MySQL 数据恢复工具。已删除记录的恢复类似于从损坏的表空间中恢复。但在这种情况下,必须使用仅转储已删除记录的选项c_parser来调用。-D

免责声明:我是该工具的作者