目录
- 一、二进制日志格式类型
- 1. **STATEMENT 格式(SBR: Statement-Based Replication)**
- 2. **ROW 格式(RBR: Row-Based Replication)**
- 3. **MIXED 格式(混合模式)**
- 二、二进制日志事件详解
- 三、如何选择二进制日志格式?
- 四、配置与查看二进制日志格式
- 五、注意事项
在 MySQL 中,二进制日志(Binary Log)的格式决定了主库如何记录数据的变更事件,并直接影响复制的行为和一致性。MySQL 支持三种二进制日志格式:STATEMENT、ROW 和 MIXED。以下是每种格式的详细说明及其事务的事件组成。
一、二进制日志格式类型
1. STATEMENT 格式(SBR: Statement-Based Replication)
-
原理:记录实际执行的 SQL 语句(如
INSERT
、UPDATE
、DELETE
等),从库通过重放这些 SQL 语句实现数据同步。 -
事务组成事件:
- Gtid_log_event(若启用 GTID):全局事务标识符。
- Query_event:记录
BEGIN
语句,标识事务开始。 - Query_event:记录具体的 DML 或 DDL 语句(如
UPDATE users SET name='Alice' WHERE id=1;
)。 - Xid_event:记录事务提交(
COMMIT
)。
-
示例:
# 主库执行的事务 BEGIN; UPDATE users SET name='Alice' WHERE id=1; COMMIT