
大家好,今天小编关注到一个比较有意思的话题,就是关于mysql 恢复 数据的问题,于是小编就整理了2个相关介绍mysql 恢复 数据的解答,让我们一起看看吧。
mysql删除的数据库怎么还原?
在解决的过程中,以下几种尝试:
1.如果开启了日志,直接mysqlbinlog 使用日志恢复即可。
2.如果不是删除了一个表的部分数据,而是删除整个表,那么可以在删除后马上用磁盘数据恢复软件尝试恢复。
(因为删除表后会有文件被删除,而删除表的部分数据,文件还是存在)
3.找数据恢复的公司,使用工具分析ibdata1(分析过程参考一页一页查看有没有历史记录存在,使用ibdata1恢复数据,应该是在了解数据表结构的前提下,数据库除ibdata1外其他数据受损不能正常使用数据库时尝试,而不是删了表数据后恢复什么的。
(事实上,这个文件是存储现有表数据的,其实也可以设置成每个表一个文件。)
4.mysql下有ib_logfile0和ib_logfile1两个文件,其实这两个文件里,记录了Mysql的一些事物日志,用于事务的前滚后滚,是Mysql自身使用的,这个文件用文本工具打开后,有很多乱码,但却可以查找到被删除的少量数据的insert记录,极少数的乱码通过前后语句找出了原文,最终通过事物日志恢复了删除的文件。注:用事物日志恢复,需要几个前提。
1:知道被删除数据的大概位置,不要这边查找,那边又不断有新数据插入。
2:因为有很多乱码,适用于查找少量数据,而不是用作大量数据的恢复,浪费体力。
3:如果二进制日志没开,没有备份,那么只能用这种方法恢复了。
MySQL数据库丢失后如何自动恢复呢? ?
首先看看是什么丢失,是db 还是drop/truncate table ,如果这样可以用备份来恢复,如果是delete table 有备份可以用备份恢复,没有备份可以通过binlog 反项解析来进行恢复
先分析一下,为啥丢失数据,因为操作删,还是数据库挂了,因为操作删,可以做备份,做备份的原理就是,数据库主从***,有mycat插件,原理就是用日志。达到主从***,其次,如果是数据库挂了。首先mysql是持久化存储,重启就行,但是会丢失挂了未提交的事物。这得需要数据库意外的数据来支持数据库恢复数据。系统日志啊,所以个人觉得,日志很重要。
这里介绍一种简单的方法,就是开启binlog二进制日志,记录用户对MySQL数据库的所有操作(除了查询),然后通过mysqlbinlog命令导出为SQL文件(剔除drop语句),最后再恢复就行,下面我简单介绍一下操作过程,实验环境Win10+MySQL5.5,感兴趣的朋友可以尝试一下:
1.首先,开启binlog功能,这个需要修改MySQL安装目录下的my.ini配置文件,在[mysqld]下面添加一行设置“log-bin = mysql-bin”就行,如下:
接着重启MySQL服务,就可以在MySQL数据目录下看到生成的日志记录文件—mysql-bin.000001和mysql-bin.index,其中mysql-bin.000001是日志文件,会自动顺序递增,记录每次数据库重启后用户的所有操作记录,mysql-bin.index是日志索引文件,记录所有的日志文件名称:
2.接着我们就可以模拟数据库误删的过程了,这里我先新建了一个db数据库,然后创建了一个test数据表,依次insert插入3条数,如下:
然后我们执行“drop database db”删除数据库,再“use db”时就会报错,如下,告诉数据库db不存在:
3.接着就是数据库恢复的过程,打开cmd窗口,运行“mysqlbinlog --no-defaults binlog日志文件路径(这里换成你的binlog文件)”命令,就可以看到我们重启数据库后所有的数据库操作记录,如下,每个操作都有唯一的对应位置,这里我们需要剔除掉drop语句,也就是恢复到958这个位置:
到此,以上就是小编对于mysql 恢复 数据的问题就介绍到这了,希望介绍关于mysql 恢复 数据的2点解答对大家有用。