MySQL“语句可能不安全以语句格式登录”警告

Ada*_*tan 5 mysql replication log warning

以下 MySQL 警告的含义是什么:

Statement may not be safe to log in statement format.
Run Code Online (Sandbox Code Playgroud)

我的mysqld.err档案中每天都有数以万计的此类陈述,我不知道应该从哪里开始调查。

Der*_*ney 7

这意味着您的二进制日志格式binlog_format是 STATEMENT,这是默认的二进制日志格式。

STATEMENT-based 格式记录发出的语句,而ROW-based 格式记录单个表的更改方式。STATEMENT日志记录的问题是某些语句不能保证写在主服务器上的相同数据最终会出现在从服务器上。

一个例子:

INSERT INTO audit (CURRENT_USER()); 
Run Code Online (Sandbox Code Playgroud)

通过查看格式如何 MIXED处理切换到ROW基于格式的处理,您可以很好地了解这些非确定性语句的不同类型。ROW-based 格式将更多数据写入二进制日志,但更安全。