ROW 格式的binlog 在MySQL5.6上的数据恢复实验
5.6和5.7版本的MySQL,有个参数binlog_row_image,默认值为FULL,表示记录的是全部的binlog操作日志(仅在binlog_format=ROW时候生效)。此外binlog_row_image还可以是minimal,表示binlog记录的就只是影响后的行。如此一来使用ROW格式就能节约很多的磁盘空间。
因此,我们服务器上就可以直接设置binlog_format=ROW格式了,至于binlog_row_image设置为FULL还是minimal,各位就自行考虑了。
环境版本如下:
假设我们的操作都是在一个库里面执行的,MySQL服务器上只跑了这一个hellodb业务的数据库。
如果数据库多的话,还会增大恢复的难度,如下事例(下面的grant操作实例不够明显,但是差不多就是那个操作步骤):
step1 准备一个全量备份:
step2 手工误操作删除部分数据
step3 mysql停机
step4 导出相关的binlog
看下最近的binlog文件,假如我这里看到的是 mysql.0000010 这个文件。
vi /root/1.sql 找到刚才我们误操作的部分,类似如下(下面被我添加了部分注释):
step5 准备恢复的数据
step6 开始恢复数据
step7 检查恢复后结果
可以看到恢复的效果不错。