MySQL 8.4 Release Notes
7.4.4.1 二进制日志格式
服务器使用以下几个logging格式来记录二进制日志信息:
-
MySQL 的复制能力最初基于源到副本的 SQL 语句传播,这称为语句基于日志。可以通过以
--binlog-format=STATEMENT
启动服务器来使用这个格式。 -
在行基于日志(默认情况下),源服务器将事件写入二进制日志,指示单个表行的影响。可以通过以
--binlog-format=ROW
启动服务器来使用行基于日志。 -
第三种选项也可用:混合日志。混合日志中,语句基于日志默认情况下被使用,但在以下情况下自动切换到行基于日志,如下所述。可以通过以mysqld使用选项
--binlog-format=MIXED
来明确地使用混合日志。
logging 格式也可以通过使用的存储引擎来设置或限制。这有助于在源服务器和副本服务器之间复制某些语句时解决问题。
使用语句基于的复制时,可能会出现非确定性语句的问题。在决定某个语句是否安全用于语句基于的复制时,MySQL 会判断该语句是否可以使用语句基于的日志记录。如果 MySQL 无法做出这个保证,它将标记语句为潜在不安全,并显示警告:语句可能不安全地以语句格式记录。
您可以通过使用 MySQL 的行基于的复制来避免这些问题。