Log

bin log

binlog记录了数据库表结构和表数据变更,比如update/delete/insert/truncate/create

作用:复制和恢复数据

  • MySQL往往都是一主多从结构的,从服务器需要与主服务器的数据保持一致
  • 数据库的数据出问题,可以通过binlog来对数据进行恢复

redo log (持久性)

记载着这次在某个页上做了什么修改

修改的时候,写完内存,但数据还没真正写到磁盘的时候,数据库挂了,就可以根据redo log来对数据进行恢复。因为redo log是顺序IO,所以写入的速度很快,并且redo log记载的是物理变化(xxxx页做了xxx修改),文件的体积很小,恢复速度很快

区别

binlog记载的是update/delete/insert这样的SQL语句,而redo log记载的是物理修改的内容(xxxx页修改了xxx)。

redo log 记录的是数据的物理变化binlog 记录的是数据的逻辑变化

redo log事务开始的时候,就开始记录每次的变更信息,而binlog是在事务提交的时候才记录。

undo log

作用:回滚和多版本控制(MVCC)

记录相反的操作