数据库系统概论-010: 数据库恢复技术

一:事物的基本概念
    1: 事物:是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
        事物的开始和结束可以由用户显式控制。如果用户没有显式的定义事物,则有DBMS按缺省规定自动划分事物。
    2: BEGIN TRANSACTION
        COMMIT  :表示提交事物的所有操作,即将对数据库的更新写回到磁盘的物理数据库中,事物才正常结束。
        ROLLBACK:对数据库的所有已完成的操作全部回滚到事物开始时的状态。
        3: 事物的特性(ACID:原子性,一致性,隔离性,持续性)
        A: 原子性:事物是数据库的逻辑工作单位,事物中包括的操作要么都做,要么都不做。
        B: 一致性:事物的执行结果必须是使数据库从一个一致状态变到另一个一致状态。
        C: 隔离性:一个事物的执行不能被其他事物干扰。
            即一个事物内部的操作及使用的数据对其他并发事物是隔离的,并发执行的各个事物之间不能相互干扰。
        D:持续性:一个事物一旦提交,它对数据库中数据的改变就应该是永久性的。
    3: 事物ACID特性可能遭破坏的因素有:
        A: 多个事物并行运行时,不同事物的操作交叉执行
            数据库管理系统必须保证多个事物的交叉运行部影响这些事物的原子性
        B: 事物的运行过程中被强行停止。
            数据库管理系统必须保证被强行终止的事物对数据库和其他事物没有任何影响。

二:数据库恢复概述
    即数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态的功能。

三:故障种类
    冗余,数据库中任何一部分被破坏的或不正确的数据可以根据存储在系统别处的冗余数据来重建。
    1: 事物内部故障
        事物内部故障有的是可以通过事物程序本身发现的。
        但是更多的故障时非预期的,是不能有应用程序处理的。如运算溢出,并发事物发生死锁而被选中撤销该事物,违反某些完整性限制等。
    2: 系统故障
        指造成系统停止运转的任何事件,是的系统需要重新启动。
        发生系统故障时,一些尚未完成的事物的结果可能已经送入物理数据库,从而造成数据库可能处于不正确的状态。
        为保证数据库的一致性,需要清除这些事物对数据库的所有修改。
        即在系统重新启动后,让所有非正常终止的事物回滚,强行撤销所有未完成的事物。
    3: 介质故障
        指外存故障,如磁盘损坏,磁头碰撞,瞬时强磁场干扰等。
        这类故障破坏数据库或或不数据库,并影响正在存取这部分数据的所有事物。
    4: 计算机病毒

四:恢复的实现技术
    如何建立冗余数据?
    如何利用这些冗余数据实施数据库恢复?

五:数据转储
    即DBA定期的将整个数据库复制到磁盘或另一个磁盘上保存起来。
    当数据库遭到破坏后可以将后备副本重新装入,但重装后备副本只能将数据库恢复到转储是的状态。
    要想恢复到故障发生时的状态,必须重新运行转储以后的所有更新事物。
    1: 静态转储:系统中无运行任何事物时进行的转储操作。会降低数据库的可用性。
    2: 动态转储:即转储期间允许对数据库进行存取或修改。
        转储结束时后援副本上的数据并不能保证正确有效。
        为此,必须在转储区间各事物对数据库的修改记录活动登记下来,建立日志文件。
        这样,后援副本加日志文件就能把数据库恢复到某一时刻的正确状态。
    3: 海量转储:每次转储全部数据库。
    4: 增量转储:每次只转储上一次转出后更新过的数据。

六: 日志文件
    1: 日志文件的格式和内容
        日志文件用来记录事物对数据库的更新操作文件。
        A: 一记录为单位的日志文件:内容包括
            各个事物的开始标记(BEGIN TRANSACTION)
            各个事物的结束标记(END TRANSACTION)
            各个事物的所有更新操作
            这里每个事物的开始标记,每个事物的结束标记和每个更新操作均作为日志文件中的一个日志记录
            事物标识(标明是哪个事物)
            操作类型(插入,删除或修改)
            操作对象(记录内部标识)
            更新前数据的旧值(对插入操作而言,此项为空)
            更新前数据的新值(对删除操作而言,此项为空)
        B: 以数据块为单位的日志文件
            以数据块为单位的日志文件,包括食物标识和被更新的数据块。
            由于将更新前的整个块和更新后的整个块都放入日志文件,操作的类型和操作的对象等信息就不必放入日志记录中了。
    2: 日志文件的作用
        A: 事物故障恢复和系统故障恢复必须用日志文件
        B: 在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才有有效地恢复数据块。
        C: 在静态转储方式中,也可以建立日志文件。
            当数据库损坏后可重新装入后援副本吧数据库转储到转储结束时的正确状态,
            然后利用日志文件,把已完成的事物进行重做处理,对故障发生时尚未完成的事物进行撤销处理。
            这样不必重新运行那些已经完成的事物程序就可把数据库恢复到故障前某一时刻的正确状态。
    3: 登记日志文件:为了保证数据库是可恢复的,登记日志文件必须遵循两条原则
        A: 登记的次序严格按并发事物执行的时间次序
        B: 必须先写日志文件,后写数据库
            如果先写了数据库,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。
            如果先写日志,但没有修改数据库,按日志文件恢复时不过是多执行一次不必要的UNDO操作。

七:恢复策略
    1: 事物故障的恢复
        指事物在运行至正常终止点前被终止,这是恢复子系统应该利用日志文件撤销此事物对数据库的修改。
        A: 反向扫描日志文件,查找该事物的更新操作。
        B: 对该事物的更新操作执行逆操作,即将日志记录中”更新前的值“写入数据库。
        C: 继续反向扫描日志文件,查找该事物的其他更新操作,并做同样处理
        D: 如此下去,知道独到此事物的开始标记,事物故障恢复就完成了。
    2: 系统故障的恢复
        未完成事物对数据库的更新可能已写入数据库。(撤销)
        已提交事物对数据库的更新可能还留在缓冲区没来得及写入数据库。(重做)
        A: 正向扫描日志文件,找出在故障发生前已经提交的事物(有BEGIN TRANSACTION 和 COMMIT记录的),将其事物标识记入重做队列。
            找出故障发生时尚未完成的事物(有BEGIN TRANSACTION,无COMMIT记录的),将其事物标识记入撤销队列。
        B: 对撤销队列中的各个事物进行撤销处理。
            反向扫描文件,进行逆操作。
        C: 对重做队列中的各个事物进行重做处理
            正向扫描日志文件,进行重做。
    3: 介质故障的恢复
        A: 装入最新数据库后备副本,是数据库恢复到最近一次转储时的一致性状态。
            对于动态转储,需要同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法,才能将数据库恢复到一致性状态。
        B: 装入相应的日志文件副本,重做已完成的事物。

八:具有检查点的恢复技术

九:数据库镜像
    介质故障后,恢复比较费时。且DBA必须周期性的转储数据库。如果不及时或不正确的转储数据库,一旦发生介质故障,会造成很到的损失。
    即根据DBA的要求,自动把整个数据库或其中关键数据复制到另一个磁盘上。
    每当主数据库更新时,DBMS自动把更新后的数据库复制过去,保持镜像数据库和主数据库一致。
    一旦出现介质故障,可有镜像数据库继续提供使用,同时DBMS自动利用镜像数据库书籍进行数据库的恢复,无需关闭系统和重装数据库副本。
    在没有故障出现时,镜像数据库还可以用于并发操作,即当一个用户对数据库加排它锁修改数据库时,其他用户可以读镜像数据库上的数据,二不必等待该用户释放锁。
   
    频繁的复制数据会降低系统运行效率,所以常常只对关键数据库和日志文件镜像,而非整个数据库进行镜像。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值