一文搞懂Mysql的日志

112 阅读1分钟

MySql中日志有binlog,undolog,redolog。你以前了解过吗,可以回想回想

binlog和redolog存在于什么引擎中? binlog存在于任何存储引擎中 redolog存在于innodb存储引擎

那你知道这三种日志有什么功能,是怎么工作的吗?

binlog : 复制和数据恢复。他会在事务提交前,记录数据库结构的变更和数据的变化。delete/update/insert这些

redolog: 数据恢复。数据的存储结构是页,我们修改时,会把页加载到内存,然后落地磁盘,那如果只是在内存中修改还未落地磁盘数据库就挂了,redolog就是起到了数据恢复的作用,记录了在某个页上做了什么修改。其实写redolog的时候是先写buffer缓冲区,再写入redolog的。redolog写入是顺序IO,若数据库宕机了,会加载redolog

undolog: 用于回滚和多版本控制。如果我们插入了一条数据,undolog中会记录insert,就是记录相反的数据。因为undo log存储着修改之前的数据,相当于一个前版本,MVCC实现的是读写不阻塞,读的时候只要返回前一个版本的数据就行了