MySQL哪些操作会记录至Binlog文件
Statement
模式下,会记录所有执行成功DDL和DML操作,包括UPDATE和DELETE
操作影响行数为0的情况。
Row
模式下,会记录所有执行成功且返回的影响行数大于0的DDL和DML操作,当UPDATE和DELETE
操作的影响行数为0时不会记录操作至Binlog。
Mixed
模式下,当一条SQL分析到应该使用Statement
模式写Binlog时,按照Statement
规则,当一条SQL分析到应该使用Row
模式写Binlog时,按照Row
规则。
- 一条UPDATE中含有USER()函数,且执行成功但操作返回的影响行数为0,由于SQL中含有USER()函数,会按照
Row
规则,故这不会记录至Binlog。 - 一条SQL
UPDATE SET NAME = 'kd' WHERE ID = 1
,且ID为1的数据不存在,尽管执行成功且返回的影响行数为0,但这一条SQL会使用Statement
规则,所以这个操作依然会记录至Binlog。
发表回复