数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:
1.删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。
2.删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件。
3.如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。
数据库中的数据被删除后,可以恢复。但至少需要满足两个条件:1、在误删之前,至少有完整备份之前的数据库。
2、数据库的恢复模式(Recoverymode)是“完整(Full)”。
只有满足这两个条件,才可以恢复数据库中误删的数据。
针对这两个前提条件,有三种方式可以恢复数据:
方式一:如果,这两个前提条件都满足,可以通过SQL语句进行数据恢复,而且只需三步即可恢删除的数据,无需第三方工具。
方式二:当不满足第一个条件,而满足第二个条件时,需要借助第三方工具,才能恢复数据。
方式三:如果两个条件都不满足,数据则无法恢复。所以,一定将数据库的恢复模式,调整为“完整(Full)”。
在解决的过程中,以下几种尝试:1.如果开启了日志,直接mysqlbinlog 使用日志恢复即可。
2.如果不是删除了一个表的部分数据,而是删除整个表,那么可以在删除后马上用磁盘数据恢复软件尝试恢复。(因为删除表后会有文件被删除,而删除表的部分数据,文件还是存在)
3.找数据恢复的公司,使用工具分析ibdata1(分析过程参考一页一页查看有没有历史记录存在,使用ibdata1恢复数据,应该是在了解数据表结构的前提下,数据库除ibdata1外其他数据受损不能正常使用数据库时尝试,而不是删了表数据后恢复什么的。(事实上,这个文件是存储现有表数据的,其实也可以设置成每个表一个文件。)
4.mysql下有ib_logfile0和ib_logfile1两个文件,其实这两个文件里,记录了Mysql的一些事物日志,用于事务的前滚后滚,是Mysql自身使用的,这个文件用文本工具打开后,有很多乱码,但却可以查找到被删除的少量数据的insert记录,极少数的乱码通过前后语句找出了原文,最终通过事物日志恢复了删除的文件。
注:用事物日志恢复,需要几个前提。
1:知道被删除数据的大概位置,不要这边查找,那边又不断有新数据插入。
2:因为有很多乱码,适用于查找少量数据,而不是用作大量数据的恢复,浪费体力。
3:如果二进制日志没开,没有备份,那么只能用这种方法恢复了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)