如何在mysql中恢复刚刚删除的行?

时间:2011-08-03 10:10:42

标签: mysql database

如果所有数据都被意外删除,是否可以使用数据将表还原到上次。

8 个答案:

答案 0 :(得分:39)

还有另一种解决方案,如果您的服务器上有二进制日志,则可以使用mysqlbinlog

用它生成一个sql文件

mysqlbinlog binary_log_file > query_log.sql

然后搜索您丢失的行。 如果你没有激活它,没有其他解决方案。下次进行备份。

答案 1 :(得分:4)

排序。使用phpMyAdmin我刚刚删除了一行太多。但是在我继续之前我抓住了它,并从删除确认消息中获取了大部分数据。我能够重建记录。但是确认消息截断了一些文本评论。

对于phpMyAdmin,比我知识更多的人可能知道一个设置,以便您可以获得更完整的删除确认消息回显。使用完整的删除消息,如果您减速并捕获错误,您可以恢复整个记录。

(PS此应用程序还会发送创建记录的提交的电子邮件。如果客户端有副本,我将能够完全恢复记录)

答案 2 :(得分:3)

正如米奇所说,支持数据是最好的方法。

但是,根据使用的情况或DB服务器,可能会部分提取丢失的数据。在大多数情况下,如果你没有任何备份,那你就不走运了。

答案 3 :(得分:3)

对不起,除非你早些时候制作了备份文件,否则它是不可能的。

编辑:实际上它是可能的,但它变得非常棘手,如果数据不是真的非常重要,你就不应该考虑它。您会看到:当数据从计算机中删除时,它仍然保留在磁盘上的相同位置,只有其扇区标记为空。因此数据保持不变,除非它被新数据覆盖。有几个为此目的而设计的程序,有些公司专门从事数据恢复,但它们相当昂贵。

答案 4 :(得分:2)

对于InnoDB表,Percona has a recovery tool which may help。它远非故障安全或完美,并且在意外删除后对MySQL服务器的停止有多快会产生重大影响。如果你足够快,你可以通过更改来恢复相当多的数据,但是恢复所有数据几乎是不可能的。

对于cours,正确的每日备份,binlog以及可能的复制从属设备(这对于意外删除无效但在硬件故障时有帮助)是可行的方法,但是这个工具可以让你保存为当你没有那些 时,尽可能多的数据。

答案 5 :(得分:1)

不,这是不可能的。唯一的解决方案是定期备份。这非常重要。

答案 6 :(得分:0)

不幸的是,没有。如果您在默认配置中运行服务器,请获取备份(您备份,对吧?) - 通常,数据库不会保留以前版本的数据或修改更改:只有当前状态。

(或者,如果您通过自定义前端删除了数据,前端很可能实际上不会发出DELETE:许多表都有is_deleted字段或类似字段,这只是简单地切换请注意,这是在前端应用程序中实现的“软删除” - 在这种情况下实际上不会删除数据;如果您实际发出了DELETETRUNCATE或类似的SQL命令,这不适用。)

答案 7 :(得分:-4)

如果你使用 MyISAM 表,那么你可以恢复你删除的所有数据,只需

打开文件: mysql / data / [your_db] / [your_table] .MYD

使用任何文本编辑器