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