本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL备份教程(5)使用binlog日志恢复丢失数据

MySQL备份教程(5)使用binlog日志恢复丢失数据

发布:TangLu2020-2-8 11:49分类: MySQL 标签: mysql 备份 binlog 二进制日志

场景:用户不小心删除了某张表

解决方案:使用之前的全量备份与备份之后的binlog日志恢复所有数据,不建议在生产环境直接恢复。建议在另一台机器恢复数据后再导出到生产环境中

注意事项:MySQL的binlog日志一定要打开数据恢复过程中最好锁表或者禁止所有数据写操作


一、模拟事故过程:

1、建立一个数据库,并在其中创建一张表并插入数据

mysql > create database student;
mysql > use student;
mysql > create table student(id int,name varchar(10),age int);
mysql > insert into student values ('1','tanglu','28'),('2','zouxiaolu','28'),('3','beibei','28');
2、进行完整的备份,这样之前的数据已经有了备份
mysqldump -u root -p student > student.sql
3、再次插入三条数据
mysql> insert into student values('4','doudou','8');
Query OK, 1 row affected (0.01 sec)

mysql> insert into student values('5','mengmeng','28');      
Query OK, 1 row affected (0.00 sec)

mysql> insert into student values('6','haha','10');
Query OK, 1 row affected (0.01 sec)


4、模拟误操作,删除之前表格中的所有数据

mysql> delete from student ;


二、恢复数据过程

1、立即重启数据库或者执行数据库语句flush-logs来获得一个新的二进制日志文件,这样故障时期的操作日志都在刷新之前的binlog文件里

mysql > flush logs;
2、利用第一次的备份恢复数据,这样前面3条数据就恢复成功
mysql -u root -p student < student.sql

3、使用mysqlbinlog分析binlog日志,过滤出删除数据的语句,然后通过binlog中的postion信息找到正常操作的position位置或者是操作时间,这里假设1294之前的SQL都是正常的,所以只需要导出这之前的语句用于恢复
mysqlbinlog --database=linuxe --stop-position=1294 linuxe-binlog.000003 > server2.sql


4、最后进入数据库查看数据已经按条目恢复!

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL备份教程(5)使用binlog日志恢复丢失数据
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-233.html  [生成短网址]

已有 0/2388 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~