数据库工程师复习重点:故障管理
  故障管理
  11.1 事务
  1、事务是数据库的逻辑控制单位,是操作数据的一个程序执行单元。
  2、为了保证数据的完整性,要求数据库系统维护事务具有如下性质:
  (1) 原子性:事务是一个不可分割的工作单位,事务中的操作要么都做,要么都不做;
  (2) 一致性:事务执行的结果必须使数据库从一个一致的状态变到另一个一致的状态;
  (3) 隔离性:一个事务内部的操作及使用的数据对于其他并发事务是隔离的;
  (4) 持续性:一个事务提交后,它对数据库中数据的改变是永久性的,即使系统可能出现故障,也不会对其它执行的结果有任何影响。
  11.2 故障的种类及解决方法
  11.2.1 事务内部故障
  1、预期的事务内部故障:
  通过事务程序本身发现的事物内部故障,可以通过将事务回滚,撤销其对数据库的修改,从而使数据库回到一致性的状态;
  2、非预期的事务内部故障:
  (1)由于事务内部故障大部分属于此类,所以事务故障仅限指此类故障;
  (2)事务故障表明事务没有提交或撤销就结束了,因此数据库可能处于不正确的状态,因此,恢复事务必须强行回滚事务,在保证该事务对其他事务没有影响的条件下,利用日志文件撤销其对数据库的修改,使数据库恢复到该事务运行之前的效果;
  (3)事务故障恢复是由系统自动完成的,对用户是透明的。
  11.2.2 系统故障(软故障)
  1、指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电等情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障;
  2、系统故障导致内存中的内容丢失,而在硬盘上的内容仍然完好;从而导致数据库的数据可以处于不正确的状态;
  3、要消除这些事务对数据库的影响,保证数据库中数据的一致性,办法就是在计算机系统重新启动后,对于未完成的事务可能已经写入数据库的内容,回滚所有未完成的事务写的结果,以保证数据库中数据的一致性;对于已完成的事务可能部分或全部留在缓存区的结果,需要重做所有已提交的事务,以将数据库真正恢复到一致状态。
  4、一句话,当数据库发生系统故障时,容错对策是在重新启动系统后,撤销(UNDO)所有未提交的事务,重做(REDO)所有已提交的事务。
  11.2.3 介质故障(硬故障)
  1、指数据库在运行过程中,由于磁盘损坏、天灾****等情况,使用数据库中的数据部分或
全部丢失的一类故障;
  2、介质故障的容错对策采用两种方式:
  (1)软件容错:
  是使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态;
  (2)硬件容错:
  目前常用的方法是采用双物理存储设备,最完全的方式是设计两套相同的数据库系统同时工作,数据的变化也同步,空间有一定距离,这样当发生损坏性的自然现象时,由于两套数据库系统具有空间距离,因此同时发生破坏的概率几乎为零,达到数据库的完全安全。
  11.2.4 计算机病毒故障
  1、计算机病毒是一种恶意的计算机程序,在对计算机系统造成破坏的同时也可对数据库系统造成破坏(主要破坏数据库文件);
  2、可以通过设立防火墙预防,杀毒软件查杀已感染的文件和数据库备份来解决;
  11.3 数据库恢复技术概述
数据库故障恢复
  1、 恢复机制涉及两个关键问题:
  (1) 如何建立冗余数据;
  (2) 如何利用这些冗余数据实施数据库恢复。
  2、 最常用的建立冗余数据技术是数据备份和登录日志文件,他们通常是结合起来使用的。
  11.4 数据转储
  1、 数据转储—指数据库管理员(DBA)定期拷贝数据库,并将拷贝得到的数据库放到其他介质中的过程。
  2、 DBA可在数据库系统发生故障后,利用这些副本恢复数据库,但此时恢复的数据库只能回到转储时的状态,要想恢复到故障前的状态,需要参考日志文件,重新运行转储后到故障前的所有事务才可以;
  3、 静态转储和动态转储
  (1) 静态转储:在静态转储过程中系统不能运行其他事务,不允许在转储期间对数据库的任何存取、修改活动。
  (2) 动态转储:允许转储操作和用户事务并发执行;
  (3) 静态转储虽然保证了数据的有效性,但却是以降低数据库的可用性为代价;而动态转储虽然提高了数据库的可用性,但数据库的有效性却得不到保证。
  (4) 为了能保证数据的有效性,而又不降低可用性,就需要引入日志文件,用它记录转储期间各事务对数据库的修改活动,然后使用动态转储的备份副本加上日志文件就可将数据库恢复到某一时刻的正确状态。
  3、 几种数据转储机制
  (1) 完全转储:对所有数据库进行备份,需占用较多时间和空间,可作为系统失败时恢复数据库的基础;
  (2) 增量转储:只复制上次备份后变化的文件;
  (3) 差量转储:对最近一次数据库完全备份以来发生的数据变化进行备份,优点是速度快,占用较少的时间和空间。
  4、 多种转储方法结合使用
  (1) 仅采用完全转储;
  (2) 完全转储加增量转储;
  (3) 完全转储加差量转储
  11.5 登记日志文件
  11.5.1 日志文件的格式和内容
  日志文件是记录每个事务对数据库更新操作的文件,数据库系统在运行过程中,DBMS负责将所有事务的更新操作登记到日志文件中,也就是说日志文件是系统自动维护的。
  1、以记录为单位的日志文件:其内容包括每个事务的开始标记、结束标记和所有更新操作;
每个日志记录的内容包括:事务标识、操作类型、操作对象、更新前数据的旧值,和更新后数据的新值;
  2、数据块为单位的日志文件:将更新前的整个数据块和更新后的整个数据块全部放在了日志文件中;
  11.5.2 日志文件的作用
  1、事务故障恢复和系统故障恢复必须使用日志文件
  (1)故障恢复的两个基本操作:UNDO和REDO
  (A) UNDO的作用是撤销事务,具体步骤:
  (a) 反向扫描日志文件,到需要撤销的事务的更新操作;
  (b) 对事务的更新操作执行逆操作;
  (c) 继续反向查该事务的其他更新操作,并执行相应的逆操作;
  (d) 重复执行步骤(C),直至遇到该事务开始记录。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。