【MySQL】通过 Binlog 恢复MySQL数据
MySQL的binlog以event的形式,记录了MySQL中所有的变更情况,利用binlog我们就能够重现所记录的所有操作。
MySQL引入binlog主要有两个用途/目的:一是为了主从复制;二是用于备份恢复后需要重新应用部分binlog,从而达到全备+增备的效果。
MySQL的binlog有三种格式:
statement,基于SQL语句的模式,一般来说生成的binlog尺寸较小,但是某些不确定性SQL语句或函数在复制过程可能导致数据不一致甚至出错;
row,基于数据行的模式,记录的是数据行的完整变化。相对更安全,推荐使用(但通常生成的binlog会比其他两种模式大很多);
mixed,混合模式,可以根据情况自动选用statement抑或row模式;这个模式下也可能造成主从数据不一致。它属于MySQL 5.1版本时期的过渡方案,已不推荐使用了。
数据的恢复
在执行数据恢复前,如果操作的是生产环境,会有如下的建议:
使用 flush logs
命令,替换当前主库中正在使用的 binlog 文件,好处如下:
* 可将误删操作,定位在一个 BINLOG 文件中,便于之后的数据分析和恢复。
* 避免操作正在被使用的 BINLOG 文件,防止发生意外情况。
数据的恢复不要在生产库中执行,先在临时库恢复,确认无误后,再倒回生产库。防止对数据的二次伤害。
通常来说,恢复主要有两个步骤:
- 在临时库中,恢复定期执行的全量备份数据。
- 然后基于全量备份的数据点,通过 BINLOG 来恢复误操作和正常的数据。
MySQL 5.7 - 通过 BINLOG 恢复数据
https://www.cnblogs.com/michael9/p/11923483.html
从MySQL binlog解析出你要的SQL
https://github.com/danfengcao/binlog2sql
MyFlash——美团点评的开源MySQL闪回工具
https://tech.meituan.com/2017/11/17/mysql-flashback.html
MySQL Flashback 闪回功能详解
https://www.cnblogs.com/waynechou/p/mysql_flashback_intro.html
喜欢的朋友记得点赞、收藏、关注哦!!!