mysql 原理 ~ innodb恢复机制

举例说明 机制

数据页A的lsn为100,数据页B的lsn为200,checkpoint lsn为150,系统lsn为300,表示当前系统已经更新到300,小于150的数据页已经被刷到磁盘上,因此数据页A的最新数据一定在磁盘上,而数据页B则不一定,有可能还在内存中。
lsn本身你可以理解为不同时间点的不同操作

page lsn(修改后的页就是脏页,会记录lsn)

page lsn 定位找 redo lsn
只有page lsn < redo lsn的情况下 才可以应用redo日志,因为如果page lsn大于 redo lsn的话,就证明页修改了,但是没找到redo日志

lsn生成(1 分配当前最大lsn号 2 redo刷新到磁盘上(redo lsn) 3 脏页刷新到磁盘上(page lsn) 4 binlog buffer 5 刷新生成 checkpoint lsn),

存在2种情况
1 redo丢失
2 dirty page丢失
3 binlog buffer丢失

先redo 后 undo

 

posted @ 2018-02-01 17:09  开心的蛋黄派  阅读(591)  评论(0编辑  收藏  举报