binlog 的三种格式

101 阅读1分钟

binlog(二进制日志)在 MySQL 中记录了数据库的更改操作,确保数据的一致性和恢复。binlog 有三种格式:

  1. Statement 格式:

    • 基于 SQL 语句的复制(Statement-Based Replication,SBR)。
    • 优点:不需要记录每一行的变化,减少了 binlog 日志量,节约了 I/O,提高性能。
    • 缺点:需要记录执行语句的上下文相关信息,以保证语句在备库上的正确执行。
  2. Row 格式:

    • 基于行的复制(Row-Based Replication,RBR)。
    • 优点:不记录 SQL 语句的上下文相关信息,仅记录哪条记录被修改,清楚地记录每一行数据修改的细节。
    • 缺点:可能产生大量的日志内容,特别是在大批量更新的情况下。
  3. Mixed 格式:

    • 混合模式复制(Mixed-Based Replication,MBR)。
    • 实际上是 Statement 和 Row 的结合,MySQL 根据执行的每一条具体的 SQL 语句来选择记录的日志形式。
    • 优点:在语句修改使用 Statement 格式保存 binlog 的同时,对于无法使用 Statement 形式复制的情况,使用 Row 格式保存 binlog。