数据库三级(11)

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库三级(11)相关的知识,希望对你有一定的参考价值。

11.故障处理

选择、填空

11.1. 故障管理概述

11.1.1.故障类型及其解决方法

在数据库系统中大致存在四类故障:事务内部的故障、系统故障、介质故障、计算机病毒故障

四类故障各有不同,但其对数据库的景响有两种,即对数据库本身的破坏或是对数据库中数据的破坏

其恢复的基本原理概括为:冗余,数据库中所有数据都可以根据存储在别处的冗余数据来重建。

  1. 事务内部故障

    事务内部故障分为预期和非预期的,其中大部分是非预期的。

    1.1 预期的事物内部的故障
  1. 预期的事物内部故障是指可通过事务程序本身发现的事物内部故障。如校园—卡通中的转账业务
  2. 如果发生了预期的事务内部故障,可通过将事务回滚,撤销其对数据库的修改,从而使数据库回到一致性的状态

     1.2. 非预期的事务内部故障

非预期的事务内部故障是不能由事务程序处理的,如运算溢出故障、并发事务死锁故障、违反了某些完整性限制而导致的故障等

  1. 事务故障表明事务没有提交或撤销就结束了,因此数据库可能处于不准确状态
  2. 恢复程序必须强行回滚事务,在保证该事务对其他事务没有影响的条件下,利用日志文件撤销其对数据库的修改,使数据库恢复到该事务运行之前的状态
  3. 事务故障的恢复是由系统自动完成的,对用户是透明的
  1. 系统故障

    系统故障又称软故障,是指数据库在运行过程中由于硬件故障、数据库软件及操作系统的漏同、突然停电等,正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类故障影响正在运行的所有事务。

    2.1 系统故障导致的后果:导致易失性存储器内容的丢失,而非易失性存储器内容仍然完好

消除事务对教据库的景响,保证数据库中数据的一致性的方法:

  1. 在计算机系统重新启动后,对于未完成的事务可能已经写入数据库的内容,回滚所有未完成的事务写的结果,保证数据库中数据的一致性
  2. 对于已完成的事务可能部分或全部留在缓冲区的结果,需要重做所有已提交的事务,以将数据库真正恢复到一致状态

     2.2 当数据库发生故障时,容错对策是在重新启动系统后,撤销(UNDO )所有未提交的事务,重做(REDO )所有已提交的事务,以达到容错目的。

  1. 介质故障

    介质故障又叫硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等,使得数据库中的数据部分或全部丢失的一类故障。介质故障的容错对策有两种方式:软件容错和硬件容错。
    3.1 软件容错
  1. 使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态
  2. 软件容错只能恢复到备份数据库后的某个时间点
  3. 若导致数据库物理存储设备损坏,事务日志文件丢失,用软件容错不能达到数据库的完全恢复,只能恢复到备份数据库后的某个时间点

     3.2 硬件容错

  1. 硬件容错方法可以保证介质故障下的数据库能能够完全恢复
  2. 硬件容错目前常用的方法是采用双物理存储设备,如双硬盘镜像
  3. 在较高级别的硬件容错方案中需要使用专用的存储设备
  4. 硬件容错另一种方法是设计两套相同的数据库系统,通过数据库软件机制,同步变化数据,两套系统空间上有一定的距离
  1. 计算机病毒故障

    计算机病毒是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以破坏数据库文件为主)

    防止计算机病毒破坏的方法:

11.1.2.数据库恢复技术概述

  1. 数据库恢复概念:在故障发生时能够利用存储在系统其它地方的冗余数据来重建数据库中被破坏的或不正确的数据把数据库从错误状态恢复到某一已知的正确状态,从而重新建立一个完整的数据库。
  2. 恢复机制涉及的两个问题是:①如何建立冗余数据;②如何利用这些冗余数据实施数据库恢复。

11.2.数据转存

11.2.1.数据转储的基本概念

  1. 数据转储概念:指数据库管理员(DBA )或数据库管理系统定期复制数据库,并将复制得到的数据存放到其他介质中的过程,数据转储也称数据备份。
  2. 数据库管理员可以在数据库系统发生故障后,利用这些副本恢复数据库,但只能恢复到转储时的状态,想要恢复到故障之前的状态需要参考日志文件。
  3. 引入日志文件再加上动态转储就可将数据库恢复到某一正确的时刻。

11.2.2.静态转储和动态转储

  1. 数据转储分为静态转储和动态转储,具体内容如下:
    1.1 静态转储:
  1. 在静态转储过程中系统不能运行其他事务,不允许在转储期间对数据库有任何的存取修改活动,即转储前后系统必须处于一个一致性的状态
  2. 静态转储虽然简单,但转储操作必须等旧事物的结束,而新事物也必须等待转储操/作的完成,转储操作和事务是互斥的,一个时间段内要么转储要么运行事务,因此会降低数据库的可用性

     1.2 动态转储:

  1. 动态转储是指允许转储操作和用户事务并发执行,即允许在转储过程中对数据库进行存取和修改操作
  2. 动态转储中可能存在事务对数据库中的数据进行修改操作,它不能保证转储数据的一致性,因为转储文件只保存了转储期间某一刻的数据,若下一时刻事务修改该数据,这个变动的数据并不会反映在转储文件上
  3. 转储文件上的数据并非是某个时间点的数据,而可能是多个时间点的混合数据

11.2.3.数据转储机制

数据转储机制的3种转储方式:

  1. 增量存储:

    只复制上次转储后发生变化的文件或数据块。增量转储所需的时间和空间都比较短但增量转储数据只能和完全转储配合,才能对数据库进行恢复。增量转储恢复时间比仅使用完全转储要长
  2. 完全转储:

    完全转储是对数据库中所有数据进行转储。这种转储方式需占用较多的时间和空间,但在系统失败时恢复时间短
  3. 差量转储:

    对最近一次数据库完全转储以来发生的数据变化进行转储,差量转储也称差异转储。它和完全转储相比速度快,占用较小的空间;和增量转储相比,速度慢占用空间多,恢复速度比增量转储快

完全转储,增量转储和差量转储3种数据转储机制的特点比较:

完全转储增量转储差量转储
时间和空间使用最多最少中间
转储速度最慢最快中间
恢复速度最快最慢中间

11.2.4.多种转储方法结合使用

11.3.日志文件

11.3.1.日志文件的概念

日志文件记录每个事务对数据库的修改操作,数据库系统在运行过程中,将所有事务的修改操作登记到日志文件中。日志文件的具体作用如下:

  1. 事务故障恢复和系统故障恢复必须使用日志文件

    1.1 故障恢复的两个基本操作。利用日志文件进行故障恢复时有两个基本操作:UNDO(T)REDO(T)
  1. 故障恢复的两个基本操作:

    1.1 UnDO(T):撤销事务
    1.2 REDO(T):重做事务
  2. UNDO(T)具体步骤:

    反向扫描日志文件,找到需要撤销的事务的更新操作,对事务进行逆操作
  3. REDO(T)具体步骤:

    正向扫描日志文件,找到需要重做的事务的更新操作

     1.2 事务故障恢复

事务是一个完整的工作单元,事务中的工作要么全做,要么全不做,否则数据库会出现不一样的状态,因此事务故障恢复时只需把相应的事务做撤销操作UNDO(Ti)即可

     1.3 系统故障恢复

系统故障时受影响的可能是正在运行的多个事务,需要分情况讨论∶

  1. 撤销:

    事务已经开始但还没提交,即在日志文件中有开始记录BEGIN TRANSACTION,而没有COMMIT或者ROLLBACK
  2. 重做:

    事务已经完成事务的所有操作并提交,在日志文件中既有BEGIN TRANSACTION记录,又有COMMIT记录

  1. 正向扫描日志文件,找到系统故障前发生的所有事务,如果该事务没有完成,将其事务标记加入撤销队列;若该事务完成将其事务标记加入重做队列
  2. 对撤销队列中的所有事务做撤销操作UNDO
  3. 对重做队列中的所有事务做重做操作REDO
  1. 在动态转储方式中必须建立日志文件
    2.1 在动态转储中,利用转储文件只能将数据库恢复到转储过程中的某个状态,且转储文件中的数据可能处于不一致状态。
    2.2 只有动态转储和日志文件综合使用,才能将数据库恢复一致状态,或将数据库恢复到故障发生前的状态,从而有效地恢复数据库。

  2. 在静态转储方式中也可使用日志文件
    3.1 在静态转储方式中,当数据库毁坏后可使用转储文件把数据库恢复到转储结束时刻的状态,然后利用日志文件,把已经完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。
    3.2 在静态转储方式中使用日志文件恢复的流程:

11.3.2.日志文件的格式与内容

  1. 不同的数据库系统采用的日志文件格式并不完全一样,概括起来与两种:以记录为单位的日志文件和以数据块为单位的日志文件

  2. 日志文件的组成

11.3.3.登记日志文件的原则

为保证数据库是可恢复的,登录日志文件必须遵循两条原则

  1. 登记的次序严格按并行事务执行的时间次序

    保证了事务对数据库操的可再现性和正确性
  2. 必须先写日志文件,后写数据库

    把事务登记到日志文件和把事务对数据的修改写到数据库是两个不同的过程,必然存在先后顺序

11.3.4.检查点

  1. 检查点的作用

    在利用日志文件恢复数据库数据的过程中,恢复子系统需要搜索日志,检查所有日志记录,把故障发生时没有提交的事务撤销,把已经提交的事务重做。检查点最大限度地减少了数据库完全恢复时所必须执行的日志部分,改善恢复效率

  2. 检查点的引入

    检查点的引入是在日志文件中增加一类新的记录——检查点记录,增加一个“重新开始文件”(用来记录各个检查点记录在日志文件中的地址),并让恢复子系统在登录日志文件期间动态的维护日志。检查点记录内容如下︰

    2.1 建立检查点时刻所有正在执行的事务清单。
    2.2 这些事务最近—个日志记录的地址。

  3. 动态维护日志文件的步骤

    动态维护日志文件的方法是周期性地执行如下操作:建立检查点、保存数据库状态。具体步骤如下:

    3.1 将当前日志缓冲中的所有日志记录写入磁盘的日志文件上。
    3.2 在日志文件中写入—个检查点记录。
    3.3 将当前数据缓冲的所有数据记录写入磁盘的数据库中。
    3.4 把检查点记录在日志文件中的地址写入一个“重新开始文件”。

恢复子系统可以定期或不定期地检查点来保存数据库的状态。检查点可以按照预定的一个时间间隔建立

  1. 基于检查点的恢复步骤

11.4.硬件容错方案

11.4.1.硬件容错方案概述

  1. 为了保证数据库系统的连续运行,仅仅依靠数据库系统软件不能满足要求。因此需要从硬件级别从数据库系统进行保护
  2. 硬件容错的方案需要从数据库系统运行所需要的各种环境出发,分析支撑数据库系统运行的环节。例如机房的电力、机房空调环境、网络、存储、服务器、综合考虑,否则某一个环节出现故障都可能导致数据库系统不可运行。

11.4.2.RAID系统

  1. 描述:廉价冗余磁盘阵列(RAID ),它是由多块磁盘构成的一个整体,但这并不等于是简单的磁盘容量叠加,而是相对于其他存储设备在容量、管理、性能、可靠性和可用性上都有了进一步提高。

  2. 特点:当从这些磁盘中抽出一块来,利用其他磁盘上的信息,可以恢复出这块磁盘的信息。

    RAID系统可以连接在主机系统上,作为存储数据的介质,具有设备虚拟化的能力。RAID子系统图如下:

  3. RAID的两个冗余技术
    3.1 镜像冗余

  1. 镜像冗余就是把所有的数据复制到其他的设备上或其他地方
  2. 特点:实现起来很简单,但是额外开销很大需要更多的磁盘控制器和电缆

     3.2 校验冗余

  1. 检验冗余就是通过对成员磁盘上的数据执行异或(XOR)操作,得到其校验值,并存放在另外的校验磁盘上
  2. 特点:实现起来很复杂,但是它占用的磁盘比镜像冗余少
  1. 常见的RAID级别和特点:

  2. 软RAID和硬RAID
    5.1 软RAID

软件RAID是由操作系统或操作系统内专用的软件实现的

     5.2 硬RAID

  1. 硬RAID是由专用的硬件设备实现的RAID,采用专用的硬件芯片,计算速度快,性能高,维护简单
  2. 在数据库系统的服务器上,一般选择硬RAID,当磁盘出现故障时可以在不停机的情况下方便更换
  3. 在高端的硬RAID中,带有专用的缓存芯片,可以将部分操作系统数据缓存在RAID卡的内存中,以提高读写速度

     5.3 在数据库系统的数据存储中,在成本可以承受的情况下,一般建议采用RAID10,同时建议采用带有缓存的硬RAID

11.4.3.服务器容错技术

  1. 引入服务器容错原因

    1.1 RAID技术可以防止磁盘损坏导致数据库系统异常停止工作。
    1.2 服务器容错可以防止服务器硬件故障或操作系统软件出现故障造成数据库系统的异常,导致数据库系统不能寸外提供服务。
    1.3 服务器容错技术就是为了解决服务器硬件异常问题出现的解决方案。

  2. 服务器容错技术简介

    服务器容错技术一般是采用两台相同的服务器,两台服务器共享存储设备,其中一台服务器运行数据库系统,数据库数据存储在存储设备中。

  3. 其他服务器容错技术简介

    3.1 硬件级别

一些小型机为了提供硬件级别的高稳定性,采用了自行设计制造的专用软硬件构架

例如:当CPU或内存出现硬件故障时,如果操作系统内核并未运行在此CPU或内存上,操作系统内核可以将任务直接分配到正常的CPU或内存上,而后关闭这些CPU或内存,保证系统运行稳定

     3.2 软件级别

一些大型的数据库软件提供了专用的服务器级别容错技术

例如:Oracle数据库提供了RAC架构。在OracleRAC架构中,数据库可以同时运行在多台服务器上,这些服务器共享一个存储

11.4.4.数据库镜像与数据库容灾

  1. 引入数据库镜像的原因

    随着企业信息化程度的不断加深,企业日常工作对服务的依赖性也在不断增加。因此,企业对数据库服务器的可靠性.稳定性提出了更高的要求。为了避免介质故障对数据库可用性的影响,许多数据库管理系统都提供了数据库镜像功能。

  2. 数据库镜像简介

    数据库镜像是一种用于提高数据库可用性的解决方案,它根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。不同的磁盘上有不同的数据库服务器,他们通过相应的软硬件技术手段,实现应用嗷据的相互备份。

    数据库镜像的优点:

  3. 数据库分类

    数据库镜像的基本架构分为:双机互备援模式和双机热备份模式

    双机互备援模式和双机热备份模式的切换时机一致,内容如下所示:

  4. 数据库镜像工作方式

    注意:

  1. 重做通过将每个活动事务日志记录发送到镜像服务器来完成,日志记录按顺序应用到镜像数据库中。每当数据库更新时,DBMS将自动保证镜像数据库与主数据的一致性。
  2. 在出现介质故障时,可由镜像数据库继续提供使用,同时DBMS自动利用镜像磁盘数据进行主数据库的恢复,不需要关闭和重装数据库副本。
  1. SQLServer数据库镜像简介

    5.1 SQL Server数据库镜像是将数据库事务处理从SQL Server数据库移动到不同SQL Server环境中的另外一个SQLServer数据库中。
    5.2 镜像的复制是一个备用的复制,不能直接访问,只用来进行错误恢复


    5.3 有两种镜像运行模式:高安全性模式和运行模式

高安全性模式:

  1. 支持同步操作,也就是“高性能模式”
  2. 当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。同步数据库之后,事
    务将在伙伴双方处提交,会延长事务滞后时间

     5.4 数据库镜像提供了3种实现方式:高可用性、高保护、高性能

以上是关于数据库三级(11)的主要内容,如果未能解决你的问题,请参考以下文章

全国省市县三级地区的数据库存储语句

CakePHP中基于三级关系查询数据

AjaxPHPmysql实现城市的三级联动

利用sql语句建立全国省市区三级数据库

如何查询 API 以获取第三级路径的所有数据?

Element-ui(Cascader 级联选择器)实现三级联动