binlog_cache_size
每个线程的binlog cache大小,如果超过了会将binlog暂存到磁盘上,影响性能。
binlog_checksum
binlog校验码,默认是采用CRC32,会为每一个binlog event写一个校验码;可指定为none关闭,关闭后只通过binlog event的长度来校验一致性。
binlog_direct_non_transactional_updates
在statement格式的binlog模式下,对于一个事务包含非事务表和事务表,MySQL会试图将非事务语句暂存在一个事务cache里,而不是非事务语句执行完之后就马上写入非事务语句的binlog;
最终是等到发起commit时,才按照事务里的语句顺序写入binlog,通过这种方式尽可能地保证在一个事务里非事务语句和事务语句的先后顺序,防止在从库复制发生主从不一致的情况。
而binlog_direct_non_transactional_updates默认OFF,就代表以上的处理方法;如果binlog_direct_non_transactional_updates设为on,则表示一个事务里的非事务语句执行完后,马上写入binlog。
binlog_error_action
5.7.7以后,默认为abort_server,表示当binlog出现无法写入,无法flush,或无法sync时,MySQL主动关闭实例;到重启时,所有处于prepared阶段且提交binlog成功的事务会被commit,而处于prepared但未写入binlog的事务,会回滚。
还可以取值为ignore_error,表示当binlog出现无法写入,无法flush,或无法sync时,关闭binlog模式,但MySQL实例继续对外提供服务;要恢复binlog功能,要重新开启log_bin参数。