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不会记录本次操作。