Redo log 是 InnoDB 引擎特有的日志,而 Server 层也有自己的日志,称为 bin log(归档日志)。

1、bin log作用

(1)完成主从复制功能
把master上所有修改数据的操作记录到binlog中,通过网络发送给从服务器,从而达到主从同步

(2)进行数据恢复
可以通过binlog日志,使用mysqlbinlog命令,实现基于时间点和位置的恢复操作。


怎样让数据库恢复到半个月内任意一秒的状态?

首先,找到最近的一次全量备份,从这个备份恢复到临时库;然后从备份的时间点开始,将备份的 binlog 依次取出来,重放到要恢复的那个时刻。

2、bin log格式

MySQL 5.7.7 之前,默认的格式是 statement,5.7.7及以后的版本,row 是默认的日志格式

show variables like "%binlog_format%"

  • statement:

基于sql语句记录到binlog,简称SBR
优点:并不需要记录每一条sql好每一行的数据变化,减少了binlog日志量,节约了IO,提高了性能
缺点:在某些情况下会导致master-slave中的数据不一致

  • row(生产推荐)

基于行变更的记录,会记录行变更前和变更后的内容,简称RBR。
优点:不记录每条sql语句的上下文信息,而是仅仅记录哪条数据被修改了,修改成什么样子,任何情况下都可以进行数据复制,对主从复制来说是最可靠的。
缺点:日志量大

  • mixed(不建议使用)

混合使用row和statement,mysql5.1版本时是statement和row的一个过渡格式,不建议使用