1、redoLog
redo Log又成重做日志,redo log 是物理日志,记录的是在某个数据页上做了什么修改,不记录更新后的状态。
1.1 工作层
InnoDB引擎层特有
1.2 记录机制
1.2.1 作用:
一般来说这个日志是InnoDB引擎来做的,先把需要更新的放置在redoLog中,并更新内存。InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做,减少对磁盘的I/O操作。
1.2.2 存储:
![](https://img-blog.csdnimg.cn/20201023225027657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21ha2VfMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
-
redoLog的空间大小是有限的,一般分为四个空间: write
-
pos是当前记录的位置,一边写一边后移,checkpoint是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件。
-
也就是说绿色是当前空闲的存储空间可以用来写日志。
1.2.3 日志作用
主要就是在系统宕机的时候用来恢复到宕机前的数据的。只能恢复到最后一次提交的记录。也就是说的crash-safe能力。
2、binLog
binLog日志是归档日志,逻辑日志。以二进制的形式记录语句的原始逻辑。
有两种模式,statement 格式的话是记 sql 语句,row 格式会记录行的内容,记两条,更新前和更新后都有。
2.1 工作层
在server层实现,任何引擎都可以实现。
2.2 记录机制
binlog记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。然后,若操作本身并没有导致数据库发生变化,那么该操作也会写入二进制日志。
2.3 日志作用
主要就是在系统宕机的时候用来恢复到宕机前的数据的。只能恢复到最后一次提交的记录。也就是说的crash-safe能力。
可以用来做数据库备份等。在最近一次的全量备份上,使用binlog日志进行恢复到现在的数据库。