Mysql二进制日志

小海 2020-10-23 12:56:00 395人围观 标签: Mysql 
简介Mysql二进制日志文件是非常重要,记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件,所以本文主要记录Mysql二进制文件如何开启和类型。

作用:记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件

二进制日志的开启
show variables like "%log_bin%";

image.png

如果没有开启,就去配置my.cnf,在[mysqld]下增加

log-bin = binlog 
log-bin-index = binlog.index
格式:
binlog_format={STATEMENT|ROW|MIXED}
  • 1、语句(statement):默认的记录格式,基于段
  • 2、行(row):定义的并非数据本身而是这一行的数据是什么
  • 3、混合模式(mixed):交替使用行和语句、由mysql服务器自行判断
    image.png
二进制日志格式对复制的影响

基于SQL语句(statement)复制(SBR)

优点
  • 1、生成的日志量少,节约网络传输IO
  • 2、并不强制要求主从数据库的表定义完全相同
  • 3、相比于基于行的复制方式更为灵活
缺点
  • 1、对于非确定性事件,无法保证主从复制数据的一致性
  • 2、对于存储过程,触发器,自定义函数进行的修改也可能造成数据不一致
  • 3、相比于基于行的复制方式在从上执行时需要更多的行锁
基于行的复制(PBR)
优点
  • 1、可以应用于任何SQL的复制包括非确定函数,存储过程等
  • 2、可以减少数据库锁的使用
  • 3、对主从数据的一致性更加有保证
缺点
  • 1、要求主从数据库的表结构相同,否则可能会中断复制
  • 2、无法在从上单独执行触发器