MySQL之binlog的三种格式

>> 饿了么、美团外卖红包领取地址<<

binlog 全称:binary log,即mysql二进制日志,有时候也称归档日志。
该日志记录了 MySQL 数据库执行更改的所有操作,包括表结构变更(CREATE、ALTER、DROP TABLE…)、表数据修改(INSERT、UPDATE、DELETE…),但不包括 SELECT 和 SHOW 这类操作,因为这类操作对数据本身并没有修改;若更改操作并未导致数据库变化,那么该操作也会写入 binlog。

binlog有三种格式:
1、statement
2、row
3、mixed

statement格式记录的是sql语句,由于执行的时间不一致以及使用系统函数等原因,可能会导致从库执行同样sql时出现数据不一致问题;(举个例子,比如在执行时用随机函数随机一条记录进行删除,每台机器上随机出来的值不一样,删除的数据就不一样)
row格式记录的是sql语句解析执行之后实际变更的数据行,因为具体到数据行了,所以不会有数据不一致的问题,但是日志文件会比较大;(举个例子,通过where条件删除10w条数据,row格式需要记录10w条数据的变更,比statement格式多很多)
mixed格式是statement格式和row格式的混合,mysql自动判断执行的sql应该记录成statement还是row。

一般从数据准确性考虑,推荐使用 row 格式进行记录。
mysql在5.7.7之前默认statement,5.7.7及之后(包含5.7.7)默认row。

参考资料:
https://www.cnblogs.com/dbbull/p/15570698.html
《MySQL 实战 45 讲》之 24 | MySQL是怎么保证主备一致的?


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

维特丝(vetes)泡沫发蜡喷雾干胶定型弹力素羊毛卷男女保湿蓬松发胶 泡沫发蜡450ml+旅行装99ml
¥34.00
维特丝(vetes)一梳黑染发剂染发梳植物潮色显白遮盖白发自然清水纯黑发焗油男女梳炫彩 自然黑LW00
¥49.00
维特丝(vetes)染发笔遮白补染快速染发天然植物一次性染发棒 一次性染发棒黑色
¥46.00
维特丝 护发精油防毛躁清香玫瑰奇焕亮发干枯烫发卷发直发头发润发护发素男女士 滋养柔顺护发精油100ml
¥36.00