mysql 5.6.2 引入的两个参数binlog_rows_query_log_events和binlog_row_image,对于使用row格式的binlog,个人觉得很有用;
binlog_rows_query_log_events =1
在row模式下..开启该参数,将把sql语句打印到binlog日志里面.默认是0(off);
虽然将语句放入了binlog,但不会执行这个sql,就相当于注释一样.但对于dba来说,在查看binlog的时候,很有用处.
binlog_row_image='minimal'
默认为full,在binlog为row格式下,full将记录update前后所有字段的值,minimal时,只记录更改字段的值和where字段的值,noblob时,记录除了blob和text的所有字段的值,如果update的blob或text字段,
也只记录该字段更改后的值,更改前的不记录;
大家都知道row格式下的binlog增长速度太快,对存储空间,主从传输都是一个不小的压力.因为每个event记录了所有更改数据前后的值,不管数据是否有改动都会记录.binlog_row_image的引入就大大减少了binlog记录的数据.
在结合binlog_rows_query_log_events,对于dba日常维护binlog是完全没有压力的,而且节省了硬盘空间开销,减小I/O,减少了主从传输压力;
但设置binlog_row_image为minimal,需谨慎。首先这个最少,只会在binlog里记录被影响的行,而不能像默认的完整一样,记录完整的变更前和变更后的所有记录,
这里就会产生一个问题,数据被误更改,无法用mysqlbinlog等工具闪回,另外大数据那边用运河抽binlog,会造成数据不准确等一系列问题。

注意看红色框部分的内容,变更前的完整原始数据并没有被记录,固无法闪回。
虽然最小可以减少binlog的文件大小(binlog_format=行),降低磁盘IO,但从数据安全角度来看,这将是危险的!
最后修改时间:2023-09-26 14:37:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




