如果所有数据都被意外删除,是否可以使用数据将表还原到上次。
答案 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
字段或类似字段,这只是简单地切换请注意,这是在前端应用程序中实现的“软删除” - 在这种情况下实际上不会删除数据;如果您实际发出了DELETE
,TRUNCATE
或类似的SQL命令,这不适用。)
答案 7 :(得分:-4)
如果你使用 MyISAM 表,那么你可以恢复你删除的所有数据,只需
打开文件: mysql / data / [your_db] / [your_table] .MYD
使用任何文本编辑器