Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Replication Formats

19.2.1 复制格式

复制工作是因为事件被写入到二进制日志中,然后在副本上被读取并处理。事件在二进制日志中以不同的格式记录,根据事件类型。用于复制的格式对应于源的二进制日志格式。

  • 使用语句-Based 二进制日志时,源将SQL语句写入到二进制日志中。复制源到副本时,执行SQL语句在副本上。这称为语句-Based 复制(简称SBR),对应于MySQL 语句-Based 二进制日志格式。

  • 使用行-Based 记录时,源将事件写入到二进制日志中,表示如何更改表中的行。复制源到副本时,将事件复制到副本上。这称为行-Based 复制(简称RBR)。

    行-Based 记录是默认方法。

  • 您也可以根据需要配置MySQL 使用语句-Based 和行-Based 记录的混合格式,这称为混合格式记录。使用混合格式记录时,默认使用语句-Based 记录。根据某些语句和存储引擎的使用,日志自动切换到行-Based 记录。使用混合格式的复制称为混合-Based 复制或混合格式复制。详见Section 7.4.4.3, “Mixed Binary Logging Format”

NDB Cluster.  MySQL NDB Cluster 8.4 的默认二进制日志格式是 ROW。NDB Cluster 复制使用行-Based 复制;NDB Cluster存储引擎与语句-Based 复制不兼容。详见Section 25.7.2, “General Requirements for NDB Cluster Replication”,了解更多信息。

使用MIXED格式时,二进制日志格式部分由使用的存储引擎和执行的语句确定。有关混合格式日志和支持不同日志格式的规则,请见第7.4.4.3节,“混合二进制日志格式”

控制 MySQL 服务器的日志格式可以通过设置binlog_format服务器系统变量来实现。该变量可以以会话或全局范围设置。设置变量的规则与其他 MySQL 服务器系统变量相同。将变量设置为当前会话将在会话结束时失效,并且该变化对其他会话不可见。将变量设置为全局将对连接到服务器后连接的客户端生效,但对当前会话和会话中变量设置的会话不生效。要使全局系统变量设置永久生效,以便在服务器重启时生效,请在选项文件中设置该变量。更多信息,请见第15.7.6.1节,“SET 语法用于变量赋值”

在某些情况下,您不能在运行时更改二进制日志格式或更改导致复制失败。请见第7.4.4.2节,“设置二进制日志格式”

更改全局binlog_format值需要具有足够的权限来设置全局系统变量。更改会话binlog_format值需要具有足够的权限来设置受限会话系统变量。请见第7.1.9.1节,“系统变量权限”

Note

更改二进制日志格式(binlog_format系统变量)在 MySQL 8.0 中已被弃用;在 MySQL 的未来版本中,您可以期望binlog_format将被完全删除,并且行基于格式将成为 MySQL 的唯一日志格式。

语句基于和行基于复制格式具有不同的限制和限制。有关它们相对优缺的比较,请见第19.2.1.1节,“语句基于和行基于复制的优缺”

使用语句基于复制,您可能会遇到存储程序或触发器复制问题。您可以通过使用行基于复制来避免这些问题。更多信息,请见第27.7节,“存储程序二进制日志”