目录
在 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