欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

binlog_row_image参数修改测试

程序员文章站 2022-03-11 22:56:37
binlog_row_image参数修改实践一、binlog_row_image参数解释二、场景测试题外话今天开发同事在测试环境用canal抽取数据时,遇到问题,度娘发现大概率是参数binlog_row_image的设置导致,于是做了相应的检查测试。一、binlog_row_image参数解释前提binlog格式必须为row格式或者mixed格式,不可以是statement格式。名称解释:before image:前镜像,即数据库表中修改前的内容。after image:后镜像,即数据库...

binlog_row_image参数修改实践

题外话

今天开发同事在测试环境用canal抽取数据时,遇到问题,度娘发现大概率是参数binlog_row_image的设置导致,于是做了相应的检查测试。

一、binlog_row_image参数解释

前提
binlog格式必须为row格式或者mixed格式,不可以是statement格式。
名称解释:
before image:前镜像,即数据库表中修改前的内容。
after image:后镜像,即数据库表中修改后的内容。

参数设置
binlog_row_image参数可以设置三个合法值: FULL、MINIMAL、NOBLOB

FULL: Log all columns in both the before image and the after image.
binlog日志记录所有前镜像和后镜像。

MINIMAL: Log only those columns in the before image that are required to identify the row to be changed; log only those columns in the after image where a value was specified by the SQL statement, or generated by auto-increment.
binlog日志的前镜像只记录唯一识别列(唯一索引列、主键列),后镜像只记录修改列。

NOBLOB: Log all columns (same as full), except for BLOB and TEXT columns that are not required to identify rows, or that have not changed.
binlog记录所有的列,就像full格式一样。但对于BLOB或TEXT格式的列,如果他不是唯一识别列(唯一索引列、主键列),或者没有修改,那就不记录。

分析
从以上参数解释可以很简单的看出binlog_row_image参数设置不同值的区别

binlog_row_image=FULL,binlog记录所有数据的前后镜像,是最安全的设置,但性能也是最低的,如果数据出现误操作,可以能通过flashback或binlog2sql等快速闪回工具恢复数据,如果对短时间前后数据安全性要求比较高,推荐此设置。

binlog_row_image=MINIMAL,binlog日志的前镜像只记录唯一识别列(唯一索引列、主键列),后镜像只记录修改列,性能是最高的,占用的资源等也是最少的,如果数据出现误操作,不能通过flashback或binlog2sql等快速闪回工具恢复数据。

binlog_row_image=NOBLOB,binlog记录所有的列,就像full格式一样。但对于BLOB或TEXT格式的列,如果他不是唯一识别列(唯一索引列、主键列),或者没有修改,那就不记录。此设置可以简单理解为在没有text和blob等大字段时,效果同FULL一样;在有text和blob等大字段时,如果大字段不是唯一识别列(唯一索引列、主键列),或者没有修改,那就不记录。

二、场景测试

(1)binlog_row_image=MINIMAL

set global binlog_row_image=‘MINIMAL’;
update一条数据:
binlog_row_image参数修改测试
binlog记录:
binlog_row_image参数修改测试
(2)binlog_row_image=FULL

set global binlog_row_image=‘FULL’;
update一条数据:
binlog_row_image参数修改测试
binlog记录:
binlog_row_image参数修改测试
binlog_row_image参数修改测试
PS:另一个设置NOBLOB,这里忽略。

注意insert和delete有一点区别,因为insert没有前镜像,delete没有后镜像,如下:
binlog_row_image参数修改测试
binlog_row_image参数修改测试
binlog_row_image参数修改测试

通过以上测试可以明显的看到各优缺点,个人还是推荐binlog_row_image=FULL,此设置为官方的默认设置,也是最安全的设置。

哎哟,不错噢! - - - - - - 欢迎指出有误的地方以及补充更好的方法

本文地址:https://blog.csdn.net/Tah_001/article/details/107605614

相关标签: Mysql