MySQL的Binlog
Binlog
MySQL的Binlog是一些记录了MySQL服务器数据变动的日志,类似于数据库的changelog。
虽然bin log开启会带来性能上的一些损失,但是对于数据复制和数据恢复是十分关键的。
- bin log用于在主从复制的时候,master将bin log发送给slave,slave将其存为relay log,在合适的时间进行replication.
- bin log用户增量备份数据库的场景中,将上一次的备份restore到最新的状态;
Binlog默认是关闭的,需要显式的打开,查看是否开启bin log,连接到mysql服务器:
show variables like "log_bin";
三种模式
- statement-based bin log : SBL
- row-based bin log : RBL
- mixed
基于语句的bin log,会记录那些数据修改的语句例如 INSERT、UPDATE、DELETE等等,就算一条DELETE语句没有匹配的到任何行,即没有删除任何行,但是这条语句也会被记录在bin log中;
基于行的bin log,会记录那些引起行改变的事件(一行为单位记录事件),因此对于上面举的DELETE的例子,这种模式下的bino log不会记录本次操作。
ref
https://dev.mysql.com/doc/internals/en/binary-log-overview.html