数据库总复习第十章 数据库恢复技术

第十章 数据库恢复技术

10.1 事务的基本概念

事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

SQL中定义事务的语句

BEGIN TRANSACTION;  //事务开始
COMMIT;             //提交事务的所有操作,事务正常结束
                    //(将事务中所有对数据库的更新写回到磁盘上的物理数据库中去)
ROLLBACK;           //将事务中所有已完成的操作全部撤销,回滚到事务开始的状态

10.1.1 事务的ACID特性

  • 原子性
    • 事务是数据库的逻辑工作单位,操作要么都做要么都不做
  • 一致性
    • 数据库只包含成功事务提交的结果时,就说明数据库处于一致性状态
  • 隔离性
    • 一个事务的执行不能被其他事务干扰
  • 持续性
    • 事务一旦提交,对数据库中数据的改变就应该是永久性的
    • 事务是恢复和并发控制的基本单位

ACID特性可能遭到破坏的因素:

  • 不同事务的操作交叉执行
  • 事务在运行过程中被强行停止

10.2 故障的种类

  • 事务内部的故障
    • 运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制而被终止
    • UNDO:事务撤销,强行回滚该事务
  • 系统故障
    • 造成系统停止运转的任何事件,使得系统要重新启动,通常称为软故障(数据损坏)
    • 例如:特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、系统断电等
    • 系统重新启动后,恢复子系统除需要撤销所有未完成的事务外,还需要重做所有已提交的事务,以将数据库真正恢复到一致状态。
  • 介质故障
    • 称为硬故障(数据库损坏)
    • 指外存故障,如硬盘损坏、磁头碰撞、瞬时强磁场干扰等
  • 计算机病毒
    • 人为的故障或破坏

10.3 恢复的实现技术

恢复的原理:冗余,根据存储在系统别处的冗余数据来重建

建立冗余数据最常用的技术是数据转储(备份)和登记日志文件

10.3.1 数据转储

转储即数据库管理员(DBA)定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程,这些备用的数据称为后备副本或后援副本

重装后备副本只能将数据库恢复到转储时的状态

  • 静态转储

    • 实现简单,转储必须等待正运行的用户事务结束才能运行,新的事务必须等待转储结束才能执行
    • 得到的一定是一个数据一致性的副本;会降低数据库的可用性
  • 动态转储

    • 转储和用户事务可以并发执行
    • 转储结束时后备副本上的数据并不能保证正确有效
  • 海量转储

    • 每次转储全部数据库
  • 增量转储

    • 每次只转储上一次转储后更新过的数据

10.3.2 登记日志文件

日志文件需要登记的内容

  • 各个事务的开始(BEGIN TRANSACTION)标记
  • 各个事务的结束(COMMIT或ROLLBACK)标记
  • 各个事务的所有更新操作

日志记录的内容

  • 事务标识(标明是哪个事务)
  • 操作的类型(插入、删除或修改)
  • 操作对象(记录内部标识)
  • 更新前数据的旧值(对插入操作而言,此项为空值)
  • 更新后数据的新值(对删除操作而言,此项为空值)

利用日志文件恢复
在这里插入图片描述

日志文件可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复

登记日志文件需要遵循的两条原则

  • 登记的次序严格按并发事务执行的时间次序
  • 必须先写日志文件,后写数据库

10.4 恢复策略

故障恢复策略备注
事务故障UNDO
系统故障UNDO(故障发生前未完成的事务)+REDO(已完成的事务,完成可能还在缓冲区没存到磁盘)
介质故障重装备份到一致状态+REDO对于静态转储,装入最新的数据库后备副本即恢复一致性;对于动态转储,还需同时装入转储开始时刻的日志文件副本,REDO+UNDO,才能恢复一致性状态;需要数据库管理员的介入

10.5 具有检查点的恢复技术

增加一个重新开始文件

检查点记录内容包括:

  • 建立检查点时刻所有正在执行的事务清单
  • 这些事务最近一个日志揭露的地址

重新开始文件用来记录各个检查点记录在日志文件中的地址
在这里插入图片描述

在这里插入图片描述

10.6 数据库镜像

实际应用中用户往往只选择对关键数据和日志文件进行镜像,而不是对整个数据库进行镜像

主数据库负责数据的更新

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值