mysql binlog格式是有哪些,各自优点和缺点有哪些?

2024-10-18 杜世伟 Mysql

MySQL 的 binlog(二进制日志)用于记录对数据库进行的所有更改操作,主要用于数据恢复主从复制审计binlog 有三种格式,每种格式在不同的场景下有各自的优点和缺点:

1. STATEMENT 格式

在 STATEMENT 格式下,MySQL 将每一条修改数据的 SQL 语句记录到 binlog 中,而不是记录具体的行级数据变化。换句话说,binlog 中记录的内容就是执行的 SQL 语句。

优点

  • 占用空间小:相比其他格式,STATEMENT 格式只记录 SQL 语句,binlog 文件的大小通常较小。
  • 性能较好:因为它只记录 SQL 语句,而不是每一行数据的变化,生成和写入 binlog 的开销较小,尤其是当修改了大量数据时,binlog 的生成速度和磁盘 I/O 负担较轻。
  • 适合大多数简单的操作:对于简单的 INSERTUPDATEDELETE 语句,使用 STATEMENT 格式足够高效。

缺点

  • 非确定性行为可能出错:如果 SQL 语句在执行时存在非确定性,如包含 NOW()UUID()RAND() 这样的函数,或者依赖于自定义的用户变量,STATEMENT 可能导致主从复制的不一致。
  • 复杂语句的重放风险:某些复杂的 SQL 语句(如 INSERT ... SELECT、触发器、存储过程等)在主从复制或数据恢复时可能会引发问题,因为这些语句的执行顺序和环境依赖于运行时的上下文。
  • 性能副作用:某些语句在主库上执行一次,可能会在从库上执行多次,增加了从库的负担。例如,涉及到大规模表的 UPDATE 和 DELETE 操作。

阅读全文>>

标签: mysql binlog STATEMENT row MIXED

评论(0) 浏览(930)

Powered by emlog 沪ICP备2023034538号-1