binlog_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格式,其他格式可能会造成主从数据不一致的情况。
本文题目:主从复制之binlog_format
网页链接:
http://mswzjz.cn/article/ihcgsh.html