千家信息网

主从复制之binlog_format

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,binlog_format主要有三种格式:statement、row、mixedbinlog_format=statement master写入执行的SQL语句到binlog中,从库读取这些SQL语句
千家信息网最后更新 2024年11月14日主从复制之binlog_formatbinlog_format主要有三种格式:statement、row、mixed
binlog_format=statement
master写入执行的SQL语句到binlog中,从库读取这些SQL语句并执行,这种基于SQL语句的复制方式是MySQL最早支持的复制方式。

binlog_format=mixed
可以将master的binlog_format配置成同时使用基于statement和row两者的组合格式,它记录日志取决于修改的类型,选择合适的格式来记录该修改。默认情况下使用statement格式记录日志,特定情况下转换成基于row格式记录。

binlog_format=row
MySQL5.7.7版本之后,把binlog_format的默认值修改为了row,master将修改表的event写入binlog中,并且master将该binlog发送给slave,slave重放binlog中的event。基于row格式复制时最安全的复制,slave需要的行锁更少。缺点就是在row格式下binlog会记录更多的数据,因为都是event。但是在row格式下可以打开binlog_rows_query_log_events参数,binlog在记录events的同时,也会记录原始的SQL语句,方便以后的查询和审计。

复制过程中建议使用row格式,其他格式可能会造成主从数据不一致的情况。
0