日志技术是死机恢复的主要技术之一。Redo Log:
Redo Log更新流程:
-
1:讲更新操作的结果以追加的方式写入磁盘的日志文件
-
2:按更新操作修改内存中的数据
-
3:返回更新成功
Redo Log宕机恢复流程:
-
1:从头读取日志文件中的每次更新操作的结果,用这些结果修改内存中的数据。
Check Point:
-
宕机恢复流量的缺点是需回放所有的redo日志,效率较低。为了解决这个问题引入了check point。check point将内存中的数据以某种易于重新加载的数据组织方式完整的dump到磁盘,从而减少宕机恢复时回放的日志数据。(日志是操作日志,check point是内存中的数据)
-
基于check point的宕机恢复流程:
-
1:将dump到磁盘的数据加载到内存。
-
2:从后向前扫描日志文件,需要最后一个“End Check Point”日志。
-
3:从最后一个“End Check Point”日志向前找到最近的一个“Begin Check Point”日志,并回放之后的所有更新日志操作。
No Undo/No Redo Log:
-
No Undo/No Redo Log 被称为“0/1”目录
-
情景: 数据维护在磁盘,某批更新由若干更新操作组成,这些更新操作需要原子生效,要么同时生效,要么都不生效。
-
0/1目录技术中两个目录结构,称为目录0和目录1,另有一个结构称为主目录,负责记录当前活动正在使用的目录(活动目录)。
-
0/1目录数据更新流程:
-
1: 将活动目录完整拷贝到非活动目录。
-
2:对于每个更新操作,新建一个日志项记录操作后的值,并将非活动目录中将相应的数据的位置修改为新建目录的日志项位置。
-
3:原子性修改主记录,反转主记录中的值,使得非活动目录失效。