第十章]数据库恢复技术

事务的基本概述

用户定义的一个数据库操作序列,不可分割
  • COMMIT 表示提交
  • ROLLBACK 表示回滚

特性

  • 原子性
  • 一致性
  • 隔离性
  • 持续性(永久性)

数据库恢复概述

故障的种类

  • 事务内部的故障
    • 处于不确定状态,需要强行回滚
    • UNDO事务撤销
  • 系统故障
    • 撤销未完成事件,重做已完成事件
    • REDO重做
  • 介质故障
  • 计算机病毒

恢复实现的技术

数据转储

重装后数据只能恢复到转储时的状态

静态转储

系统无运行事务时转储

动态转储

转储时允许用对数据库存取和修改
  • 会把期间修改活动记录到日志文件,之后再恢复

海量转储

转储全部

增量转储

转储增加的

日志文件

用来记录事务对数据库的更新操作

格式和内容

  • 各个事务的开始
  • 各个事务的结束
  • 各个事物的所有更新

日志记录

每个事务的开始结束和所有更新都作为日志文件的一条日志记录
  • 事务的标识
  • 操作的类型
  • 操作对象
  • 更新前的数据
  • 更新后的数据

登记日志文件

  • 次序按照并发事务执行的时间次序
  • 先写日志文件再写数据库

恢复策略

事务故障的恢复

  1. 反向扫描日志文件,查找该事务的更新操作
  1. 对该事务的更新操作执行逆操作(插入←→删除,反修改)
  1. 继续扫描,其他更新操作同样处理直到读到开始标记

系统故障的恢复

  1. 正向扫描日志文件找出在发生前已提交事务,标识进入REDO-LIST;未完成的事务,标识进入UNDO-LIST
  1. 对UNDO-LIST的各个事务进行UNDO处理,反向扫描日志文件,对更新操作执行逆操作
  1. 对REDO-LIST的各个事务进行REDO处理,正向扫描日志文件,重新登记日志文件

介质故障的恢复

  • 重装数据库,重做已完成的事务
  1. 重装数据库副本,若动态转储,还需同时装入重装开始的日志文件副本,利用系统故障的REDO、UNDO,将数据库恢复到一致性
  1. 装入转储结束的日志文件,REDO、UNDO将数据库恢复到一致
Prev
第八章]数据库编程
Next
第十一章]并发控制
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++