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  /  ...  /  Advantages and Disadvantages of Statement-Based and Row-Based Replication

19.2.1.1 语句基于和行基于复制的优缺点

每种二进制日志格式都有其优缺点。对于大多数用户,混合复制格式应该提供最佳的数据完整性和性能。如果您想利用语句基于或行基于复制格式的特定功能来执行某些任务,可以使用本节的信息,了解它们的相对优缺点,以确定哪一种最适合您的需求。

  • 可靠的技术。

  • 写入日志文件的数据量减少。更新或删除多行时,这将导致日志文件所需的存储空间减少。此外,这也意味着可以更快地恢复备份。

  • 日志文件包含所有修改了数据的语句,因此可以用来审核数据库。

  • 所有更改都可以复制。这是最安全的复制形式。

    Note

    更新 mysql 系统架构中的信息,例如 GRANTREVOKE 和触发器、存储程序(包括存储过程)、视图的操作都将使用基于语句的复制方式复制到复制服务器上。

    对于语句,如 CREATE TABLE ... SELECT,将生成一个 CREATE 语句,并使用基于语句的格式复制到复制服务器上,而行插入将使用基于行的格式复制。

  • 在源端,需要更少的行锁,以实现更高的并发性,对于以下类型的语句:

  • 在复制服务器上,对于任何 INSERTUPDATEDELETE 语句,需要更少的行锁。

  • RBR 可能生成更多需要记录的数据。要复制 DML 语句(例如 UPDATEDELETE 语句),语句基于的复制将只将语句写入二进制日志。相比之下,行基于的复制将将每个更改的行写入二进制日志。如果语句更改了许多行,行基于的复制可能将更多的数据写入二进制日志;这也适用于回滚的语句。此外,这也意味着恢复备份可能需要更长的时间。此外,二进制日志将被锁定更长时间,以写入数据,这可能会导致并发问题。使用 binlog_row_image=minimal 可以减少不良影响的程度。

  • 确定的可加载函数,生成大量 BLOB 值的处理速度在行基于的复制中比语句基于的复制慢。这是因为 BLOB 列值被记录,而不是生成数据的语句。

  • 您不能在复制服务器上看到来自源服务器的语句和执行的语句。然而,您可以使用 mysqlbinlog 工具,使用选项 --base64-output=DECODE-ROWS--verbose 查看数据的变化。

    或者,您可以使用 binlog_rows_query_log_events 变量,如果启用,将在 mysqlbinlog 输出中添加一个 Rows_query 事件,以便使用 -vv 选项时。

  • 对于使用MyISAM存储引擎的表,需要在复制服务器上对INSERT语句应用时使用更强的锁定,而不是将其应用为语句。这意味着,在使用行基于的复制时,不能支持并发插入MyISAM表。