MySQL的主从复制中binlog格式有哪三种它们对数据一致性和性能有什么影响

请讲解下,MySQL的主从复制中binlog格式有哪三种它们对数据一致性和性能有什么影响
最新回答
爱哭的小鬼

2026-10-21 08:16:11

MySQL binlog有STATEMENT、ROW和MIXED三种格式,STATEMENT记录SQL语句性能好但可能导致主从不一致,ROW记录行变更数据一致性最好但日志量大,MIXED自动选择。
STATEMENT格式记录原始SQL语句,优点是日志量小、可读性强;缺点是包含不确定函数(如NOW()、UUID()、RAND())的语句在从库执行结果可能不同,导致主从数据不一致。ROW格式记录每行数据的变更前和变更后值,优点是数据一致性最强、可用于CDC数据变更捕获;缺点是日志量大。MIXED格式在普通语句用STATEMENT、遇到不确定函数或影响行数大的语句自动切换为ROW,是较平衡的选择。MySQL 5.7.7+默认ROW格式。从库并行复制:基于组提交的并行在ROW格式下可以按数据库或组提交粒度并行回放,减少主从延迟。binlog还用于时间点恢复(PITR)和数据同步到Elasticsearch等外部系统。