浅谈数据库恢复技术
- 格式:pdf
- 大小:132.65 KB
- 文档页数:3
数据库恢复技术及其实现方法数据库恢复技术是数据库管理系统中的核心功能之一,它负责将数据库从故障或者错误中恢复并使其重新可用。
在现代社会中,数据库的重要性不言而喻,因此数据库恢复技术的研究和实践显得尤为重要。
本文将介绍数据库恢复技术的一些常见方法及其实现方式,以期对读者有所帮助。
一、日志恢复技术日志恢复技术是一种常见的数据库恢复方法,它通过事务日志(transaction log)记录以及回滚操作,实现数据库的恢复。
在数据库系统中,事务日志记录了每个事务所执行的操作,包括数据的插入、修改和删除等。
通过事务日志,可以回溯到数据库发生错误前的状态,从而进行恢复。
实现方式:1. 重做(Redo)恢复:该方法是通过重新执行已经提交的事务日志来进行恢复。
当数据库发生故障时,系统会检查事务日志中未提交的事务并将其重新执行,以保证数据库的一致性和完整性。
2. 撤销(Undo)恢复:与重做恢复相反,撤销恢复是对未提交的事务进行回滚操作,将其撤回到故障发生前的状态。
通过撤销恢复,数据库可以回滚到一个更稳定的状态。
二、快照(Snapshot)恢复技术快照恢复技术是另一种常见的数据库恢复方法,它通过保存数据库的快照(即某个时间点的数据库状态)来实现恢复。
当数据库发生故障时,可以将数据库恢复到之前某个时间点的快照状态,从而达到修复的目的。
实现方式:1. 冷备份(Cold Backup):该方法是在数据库关闭的情况下进行备份,通过将数据库文件复制到其他位置来保存数据库的快照。
当数据库发生故障时,可以使用备份文件来还原数据库。
2. 热备份(Hot Backup):与冷备份不同,热备份是在数据库运行期间进行备份,而不需要关闭数据库。
通过使用特殊的备份工具,可以在数据库运行的同时备份数据库文件,并保持数据库的一致性。
三、镜像(Mirroring)恢复技术镜像恢复技术是一种高可用性的数据库恢复方法,它通过实时复制数据库到备份服务器中,以实现快速恢复。
第13章数据库数据库恢复技术在当今数字化的时代,数据库已经成为了企业和组织存储和管理关键信息的核心工具。
然而,就像生活中难免会遇到意外一样,数据库也可能会面临各种故障和错误,导致数据的丢失或损坏。
这时候,数据库恢复技术就显得至关重要,它就像是数据库世界中的“急救医生”,能够在关键时刻拯救数据,保障业务的正常运行。
那么,什么是数据库恢复技术呢?简单来说,它是一组用于将数据库从故障或错误状态恢复到正常、可用状态的方法和策略。
这些故障可能包括硬件故障(如磁盘损坏)、软件故障(如数据库系统崩溃)、人为错误(如误删除数据)以及自然灾害等不可预见的情况。
为了更好地理解数据库恢复技术,我们先来了解一下数据库系统中常见的故障类型。
硬件故障是比较常见的一种。
比如说,存储数据库的磁盘突然出现坏道,无法正常读取和写入数据。
这种情况下,如果没有有效的备份和恢复措施,可能会导致大量数据的丢失。
软件故障也不容忽视。
数据库系统本身可能会出现漏洞、错误或者崩溃,导致数据的不一致或者丢失。
人为错误更是时有发生。
比如不小心删除了重要的数据表,或者在更新数据时出现了错误的操作。
自然灾害虽然不太常见,但一旦发生,其影响可能是巨大的。
比如火灾、洪水等灾害可能会直接损坏数据库的物理存储设备。
面对这些可能出现的故障,数据库恢复技术主要依靠以下几种策略。
首先是数据备份。
这就像是给数据库做了一个“快照”,把某个时刻的数据完整地保存下来。
常见的数据备份方式有全量备份和增量备份。
全量备份会将整个数据库的数据都进行备份,而增量备份则只备份自上次备份以来发生变化的数据。
备份的数据可以存储在磁带、磁盘或者云端等介质中。
有了备份,还需要有恢复的方法。
当数据库出现故障时,我们可以根据备份的数据进行恢复。
恢复的过程通常包括将备份的数据加载到数据库中,并应用相应的日志文件来确保数据的一致性。
日志文件在数据库恢复中也起着关键作用。
数据库在运行过程中,会不断地记录操作的日志,包括数据的插入、更新和删除等操作。
数据库恢复的基本技术数据库恢复是指在数据库发生故障或损坏后,通过一系列的技术手段将数据库恢复到正常运行状态的过程。
数据库恢复技术主要包括备份和恢复、事务日志恢复以及物理和逻辑恢复等。
本文将分别介绍这些基本的数据库恢复技术。
1.备份和恢复技术备份和恢复是数据库恢复的最基本方法。
备份指将数据库的原始数据或者副本复制到其他存储介质中,以防止原始数据丢失或损坏。
常见的备份方式包括完全备份和增量备份。
完全备份是将整个数据库完全复制到备份介质,而增量备份则是只备份自上次备份以来发生变化的数据。
当数据库发生故障时,可以通过还原备份数据来恢复数据库。
2.事务日志恢复技术事务日志是数据库中记录每一次事务操作的日志,包括事务开始、事务结束和对数据库进行的修改操作。
事务日志恢复技术是通过分析事务日志记录来实现数据库的恢复。
当数据库发生故障时,可以通过重放事务日志中的操作来恢复数据库到故障发生前的状态。
事务日志恢复主要包括正向恢复和反向恢复两种方式。
正向恢复是从备份数据开始,按照日志记录的顺序逐步重放操作,直到故障点之后的操作。
反向恢复则是从故障点开始,按照日志记录的顺序逐步撤销操作,直到备份数据的状态。
3.物理恢复技术物理恢复是指将数据库的物理文件从损坏或错误状态恢复到正常状态的过程。
常见的物理恢复技术包括点备份和增量备份恢复、崩溃恢复以及校验和恢复等。
点备份和增量备份恢复是通过使用备份数据和增量备份数据来恢复数据库。
崩溃恢复是指在数据库崩溃、主机断电等突发情况下,通过恢复到最后一次一致状态来保护数据的完整性。
校验和恢复是通过校验和验证来检测和纠正物理文件的错误,以保证数据的一致性和完整性。
4.逻辑恢复技术逻辑恢复是指通过使用数据库的逻辑结构和操作来恢复数据库。
常见的逻辑恢复技术包括数据导入和导出、数据转换以及数据修复等。
数据导入和导出是将数据库中的数据导出为文本文件或其他格式,然后再将导出的数据导入到数据库中。
数据转换是指将数据库中的数据转换为其他数据库或应用程序所需的格式。
数据库备份与恢复的技术与方法随着互联网的快速发展,各项数据量不断增加,数据库已经成为企业重要的信息系统之一。
然而,在日常的数据库管理过程中,备份和恢复却是最关键的环节之一。
一旦数据丢失或损坏,后果将是灾难性的。
为了更好的保护数据安全,本文将详细介绍数据库备份与恢复的技术与方法。
一、数据库备份技术1.全量备份全量备份是备份数据库中所有数据的一种备份方式,不管数据是否有改变,都要对全部进行备份。
全量备份效率较低,但是备份完全是独立的,可以在任意时间和地点进行恢复,因此是备份数据库最基本也是最靠谱的方式。
2.增量备份增量备份是备份数据发生变化的数据的一种备份方式,它只会备份最近一次完整备份之后数据发生改变的部分,这种备份方式可以大大减少备份所需时间和空间,但同时也增大了恢复的复杂度。
3.差异备份差异备份是备份上一次全备份之后或上一次差异备份之后,与全备份或差异备份不同的数据,但它备份的数据不包含上一次备份的数据。
这种备份方式不仅需要较少的时间和空间,而且备份的恢复效率也相对较高。
二、数据库恢复技术1.全量恢复全量恢复比较简单,它直接将备份数据恢复回去。
但是还原完整的备份文件有极大的风险,因为一个文件丢了就再也没有办法找回了,这也就意味着你丢失了所有的数据,因此必须保证备份的存储安全。
2.增量恢复增量恢复常见于在全量恢复的基础上进行差异恢复和重放归档日志,将差异数据和重放的日志信息应用到数据库上来恢复数据。
这种恢复方法不但保证了数据的完整性还大大减小了数据恢复的妨碍。
3.物理恢复物理恢复是指通过数据库的事务日志,将在崩溃时遗失的数据恢复到一个确定的时间点,在大数据库应用中非常重要。
通过数据库的物理恢复可以更好地保证数据的完整性,避免数据流失和信息的泄漏。
三、数据库备份恢复常用工具与技术1.简单命令行脚本一个简单的shell脚本备份数据库,使用脚本生成成快照文件,再压缩好,之后将它传输到某个其它地方。
而恢复数据则反向操作即可,解压恢复,然后再导入数据库。
浅析计算机数据库的备份技术与恢复技术计算机数据库备份技术与恢复技术是数据库系统不可缺少的一环。
因为数据备份和恢复是保护数据库数据不丢失和恢复数据库数据的最有效手段。
因此,在数据库系统运维过程中,备份和恢复技术的操作和管理是非常关键的。
1.备份技术1.1 备份类型针对不同的备份需求,备份技术分为完全备份、增量备份和差异备份。
完全备份就是备份整个数据库的所有数据,并将其存放到备份介质上。
增量备份则是备份最近一次完全备份后的数所有据变化(例如新增数据)。
差异备份是备份自上次备份后全部发生更新的数据。
备份必须将数据存储到介质上,介质基本上可以分为以下几种:磁盘:磁盘是存储备份的最常用介质,由于速度快、携带方便,而且可以被重复使用。
磁带:磁带可以存储大量备份数据,但存取速度较慢,因此如果需要快速恢复数据,通常会选择磁盘。
但是,磁带的成本比磁盘低很多,因此在长期存储备份数据时,磁带也是不错的选择。
CD/DVD:CD/DVD介质同样可以被用作备份介质,但是存储量较小,因此对于大型数据库备份来说并不是最佳选择。
备份方法分为物理备份和逻辑备份两种。
物理备份指的是直接复制数据文件,而逻辑备份则是通过数据库系统自身的备份功能来备份数据。
在实际应用中,由于物理备份的速度更快,因此通常采用物理备份方式。
2.恢复技术2.1 数据库恢复方式当数据库损坏或者丢失数据时,需要进行恢复。
恢复有多种方式,包括重建、软件恢复和物理恢复等。
重建是重新建立数据库,并通过导入或者其他手段重新恢复数据。
软件恢复是通过数据库系统自身的工具,如MySQL的mysqlcheck,进行恢复。
这种方法比较适合部分数据损坏或删除的情况。
物理恢复是通过备份文件,将备份的数据文件还原到原始的位置,从而恢复数据库。
这种方法适合数据库完全宕机的情况。
在进行数据库恢复的过程中,需要遵循以下原则:恢复数据的安全性优先:必须确保恢复后的数据库能够保证数据完整且无误。
恢复的速度:恢复速度必须尽可能快,以降低数据丢失风险。
数据库管理软件的数据备份和恢复技术解析一、介绍数据库是企业信息系统的核心部分,其中的数据包含着组织的重要资产。
然而,数据丢失或损坏是无法避免的情况。
为了保障数据的安全性和可靠性,数据库管理软件广泛使用数据备份和恢复技术。
本文将对数据库管理软件常见的数据备份和恢复技术进行详细分析和解析。
二、数据备份技术1.全量备份全量备份是最常见的数据备份方法之一,它会备份数据库中所有的数据和日志文件。
全量备份的好处是备份恢复速度快,缺点是需要占用大量的存储空间和带宽资源。
2.增量备份增量备份根据上一次备份之后的增量数据进行备份。
它只备份发生变动的数据,相比于全量备份可以节省存储空间和传输带宽。
增量备份需要记录备份点,以保障后续恢复过程的完整性。
3.差异备份差异备份是基于全量备份的技术,只备份两次全量备份之间的差异数据。
它可以减少备份和恢复所需的时间和资源,但相对于增量备份而言,需要更多的存储空间。
4.镜像备份镜像备份是一种物理备份方式,直接将数据库的映像数据备份到磁盘或存储设备中。
它的优点是备份速度快,恢复效率高,适用于大型数据库的备份与恢复。
5.冷备份和热备份冷备份是在数据库未运行的状态下进行的备份,需要停止数据库服务。
热备份则在数据库运行的同时进行备份,不会中断服务。
热备份常用于对关键业务数据库的备份,以确保系统的连续性和可用性。
三、数据恢复技术1.完全恢复完全恢复是指将数据库还原到最近一次备份的状态,再通过应用备份之后的日志文件来重新执行数据库操作,恢复到备份时间点之后的状态。
这种方式可以确保数据的完整性和一致性,但恢复时间可能较长。
2.增量恢复增量恢复是将数据库还原到最近的全量备份状态,再逐步应用增量备份中的日志文件,恢复到备份时间点之后的状态。
增量恢复的优点是速度快,但需要记录备份点,以保障增量日志的正确应用。
3.点恢复点恢复是根据用户指定的时间点来进行恢复,即将数据库恢复到指定时间点之前的状态。
它适用于误操作或数据损坏的情况,可以精确控制恢复的范围和时间。
数据库恢复技术随着信息技术的不断发展,数据库已经成为了现代企业管理的重要工具。
然而,在日常使用过程中,数据库可能会遭受各种各样的损坏,导致数据丢失或者无法访问。
为了保障数据的安全,数据库恢复技术变得越来越重要。
本文将介绍数据库恢复技术的基本概念、常见故障类型和恢复方法,希望能够为读者提供帮助。
一、基本概念1.1 数据库恢复数据库恢复是指在数据库发生故障或者出现数据丢失的情况下,通过一系列的操作和技术手段,将数据库恢复到之前的状态或者尽可能地恢复数据。
数据库恢复是保障数据安全的重要手段,也是数据库管理人员必须掌握的技能之一。
1.2 数据库故障数据库故障是指数据库的硬件或者软件出现了问题,导致数据库无法正常工作或者数据丢失。
常见的数据库故障包括硬件故障、软件故障、人为错误等。
1.3 数据库备份数据库备份是指将数据库的数据和日志文件复制到另一个存储介质中,以便在数据库损坏或者数据丢失的情况下进行数据恢复。
数据库备份是数据库恢复的重要前提,也是保障数据安全的有效手段。
二、常见故障类型2.1 硬件故障硬件故障是指数据库服务器的硬件设备出现了问题,导致数据库无法正常工作。
常见的硬件故障包括硬盘故障、电源故障、内存故障等。
硬件故障可能导致数据丢失或者无法访问,需要通过数据库恢复技术进行修复。
2.2 软件故障软件故障是指数据库管理系统出现了问题,导致数据库无法正常工作。
常见的软件故障包括操作系统崩溃、数据库软件崩溃、网络故障等。
软件故障可能导致数据丢失或者无法访问,需要通过数据库恢复技术进行修复。
2.3 人为错误人为错误是指数据库管理人员或者用户在使用数据库的过程中出现了错误,导致数据丢失或者无法访问。
常见的人为错误包括误删除数据、误修改数据等。
人为错误可能导致数据丢失或者无法访问,需要通过数据库恢复技术进行修复。
三、恢复方法3.1 数据库备份恢复数据库备份恢复是指通过已经备份的数据库数据和日志文件,将数据库恢复到之前的状态。
数据库系统概论第七章数据库恢复技术在数据库系统中,数据库恢复技术是保障数据可靠性和可用性的关键环节。
当数据库遭遇故障或错误操作导致数据丢失、损坏或不一致时,数据库恢复技术能够将数据库恢复到一个正确、完整和一致的状态,确保数据库的正常运行和数据的准确性。
首先,我们来了解一下数据库故障的类型。
数据库故障大致可以分为事务故障、系统故障和介质故障。
事务故障通常是由于程序逻辑错误、违反完整性约束等原因导致事务未能正常完成。
系统故障则是由于硬件故障、软件错误、操作系统错误等导致系统停止运行,使得内存中的数据丢失,但未损坏数据库在磁盘上的数据。
介质故障是最为严重的一种故障,例如磁盘损坏、磁头碰撞等,会导致数据库中的部分或全部数据丢失。
针对不同类型的故障,数据库恢复技术采用了不同的策略和方法。
事务故障的恢复通常采用撤销(UNDO)未完成事务对数据库的修改,以及重做(REDO)已提交事务对数据库的修改。
这一过程通过事务日志来实现,事务日志记录了事务的开始、结束以及对数据的每一次修改操作。
当发生事务故障时,数据库管理系统会根据事务日志来判断哪些事务需要撤销,哪些事务需要重做,从而将数据库恢复到故障前的一致状态。
系统故障的恢复相对复杂一些。
由于系统故障会导致内存中的数据丢失,但数据库在磁盘上的数据通常是完好的,因此恢复过程需要先重做所有已提交事务对数据库的修改。
这同样依赖于事务日志,系统会从故障前最后一次检查点开始,依次读取事务日志,对未完成的事务进行撤销,对已提交的事务进行重做,以确保数据库的一致性。
介质故障的恢复是最为困难的。
因为介质故障可能导致部分或全部数据丢失,所以需要先重装数据库的副本,然后再根据事务日志对数据库进行重做,以恢复到故障发生时的状态。
为了应对介质故障,数据库系统通常会采用定期备份数据库的策略,备份可以是完全备份、增量备份或差异备份等。
在数据库恢复技术中,检查点机制起着重要的作用。
检查点是一个特定的时刻,在这个时刻,数据库管理系统会将内存中的数据和事务日志信息刷新到磁盘上,并记录当前的系统状态。
数据库恢复的几种方法一、数据库恢复的概述数据库是现代信息系统中的核心组成部分,承载着重要的数据资产。
然而,由于各种原因,数据库可能会遭受到破坏或数据丢失,这时就需要进行数据库恢复操作。
数据库恢复是指将数据库从损坏或不可用状态恢复到正常可用状态的过程。
而数据库恢复的方法则是实现数据库恢复的具体手段。
二、备份恢复方法备份恢复是最常见也是最基本的数据库恢复方法之一。
备份是指将数据库的数据和结构进行备份,以便在数据丢失或损坏时进行恢复。
常见的备份恢复方法有完全备份、增量备份和差异备份。
1. 完全备份:完全备份是指将数据库的所有数据和结构都备份到一个独立的媒介中。
完全备份通常是在数据库初始化后进行,或者在数据库版本升级前进行。
在数据库损坏或数据丢失时,可以通过完全备份将数据库恢复到最新状态。
2. 增量备份:增量备份是指只备份自上次完全备份或增量备份以来发生变化的数据和结构。
增量备份可以减少备份时间和存储空间的消耗。
在数据库恢复时,需要先进行最近一次完全备份的恢复,然后再逐个应用增量备份,以还原数据库到最新状态。
3. 差异备份:差异备份是指只备份自上次完全备份以来发生变化的数据和结构。
与增量备份不同的是,差异备份是以最近一次完全备份为基础,而不是以上次备份为基础。
在数据库恢复时,需要先进行最近一次完全备份的恢复,然后再应用最近一次差异备份,以还原数据库到最新状态。
三、事务日志恢复方法事务日志恢复是数据库管理系统提供的一种高级恢复方法。
事务日志记录了数据库中所有事务的操作,包括开始、提交或回滚。
通过事务日志,可以将数据库恢复到指定的时间点或者特定的事务状态。
事务日志恢复的过程如下:1. 将数据库恢复到最近一次完全备份的状态;2. 应用事务日志中的操作,将数据库恢复到指定的时间点或者特定的事务状态。
事务日志恢复方法可以实现较为精细的数据库恢复,可以避免数据丢失和数据不一致的问题。
四、镜像恢复方法镜像恢复是指通过数据库的镜像副本进行恢复的方法。
一、数据库恢复理论知识1、数据库恢复:DBMS必须具有把数据库从错误状态恢复到某一已知的正确状态的功能。
2、数据库恢复机制包括“一个数据库恢复子系统”和“一套特定的数据结构”。
而其基本原理是重复存储数据,即“数据冗余(data redundancy)”3、恢复机制涉及两个关键的问题①如何建立冗余数据。
②如何利用这些冗余数据实施数据库恢复。
4、建立冗余数据最常用(也是最基本)的技术就是:数据转储和登陆日志文件。
(一般两种技术一起使用)5、基本概念①数据转储:DBA(Database Administrator)定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。
这些备用的数据文本称为后备副本或后援副本举例子:假定有三个瞬时时间t1<t2<t3。
其中t1时刻DBMS停止事务的运行而开始进行数据的转储,在到达时间t2的时候转储完毕,当到达t3的时候数据库发生故障,因此为了恢复到数据库发生故障的前一刻t(即t2<t<t3),DBA就要重装数据库后备副本,将数据库恢复到t2时刻的状态,然后重新运行自t2时刻到t3时刻的所有更新事务,这样子就可以完成数据库的恢复。
值得注意的是:转储是十分消耗时间和资源的,所以一般不会频繁运行,一般转储周期(为几小时、几天、也可以是几个月)还得选择适合你当前数据库的那个时间。
从上面中的介绍可以看出:转储需要在停止了所有事务时才可以进行,这种情况我们称之为“静态转储”,为了克服这种转储,数据库另有一种方式为“动态转储”,即转储和用户事务可以并发执行,而且能够恢复到用户事务更新到故障的前一刻。
转储的时候会涉及数据的多少问题:因此会有“海量转储”和“增量转储”两种方式。
海量:即每一次转储全部的数据,而增量:每一次只转储上一次转储后的更新过的数据。
用一张表来简单描述为:②登录日志文件(可以协助或备副本进行介质故障恢复)基本概念:日志文件:是用来记录事务对数据库的更新操作的文件。
数据库系统在运行的过程中,数据库管理系统(DBMS)负责将所有的事务更新操作登记到日志文件中.例如,表2的事务T1,T2的更新操作在日志文件中登记的日志记录如表3所示.2.2利用日志文件撤销事务(UNDO)或重做事务(REDO)利用日志文件进行故障恢复是有两个基本操作:UNDO(Ti)或REDO(Ti).UNDO(Ti):撤销事务Ti;REDO(Ti):重做事务Ti.UNDO(Ti)的具体步骤为:反向扫描日志文件,找到需要撤销的事务的更新操作.对事务Ti的更新操作执行逆操作,即将日志文件中“更新前的值”写入数据库.如果日志记录中是插入操作,撤销时就做删除操作;如果日志记录中是删除操作,撤销时就做插入操作;如果日志记录中是修改操作,撤销时就用修改前的值代替修改后的值.继续反向查找该事务的其他更新操作,并执行相应的逆操作.重复执行步骤(3),直至遇到该事务的开始记录.REDO(Ti)的具体步骤为:(1)正向扫描日志文件,找到需要撤销的事务的更新操作.(2)对事务Ti重新执行日志文件登记操作,即将日志文件中“更新前的值”写入数据库.(3)继续正向查找该事务的其他更新操作,并重新执行,将日志文件中“更新前的值”写入数据库.1数据库系统的故障1.1事务故障事务故障是指由于事物内部的逻辑错误或系统错误所引起的使事物在未达到规定的终点以前就被迫中止的任何事件.其中逻辑错误是指运算溢出、数据输入出错、找不到记录等等;系统错误是指并发事物发生死锁而被选中撤销等等.1.2系统故障系统故障是指有硬件故障、软件故障、停电等原因造成的使系统停止运转而必须重新启动的任何事件.如果发生了系统故障,那么计算机内存包括数据库缓冲区的信息就会丢失,而未完成的事物也被迫中止.其中软件故障是指例如操作系统故障或者是DBMS代码错误等等.1.3介质故障介质故障是指用于存放数据库的磁盘在物理上受到了损坏,是的数据库中的数据无法读出二引发的事故.在以上三种故障中,事务故障和系统故障都不会破坏外存中数据库的数据,二介质故障将破坏存放在外存的数据库中的部分或全部数据.因此,事务故障和系统故障可以由系统自动恢复,而介质故障必须借助于数据库管理员(DBA)的帮助和系统一起恢复.2基于日志文件的数据库恢复技术2.1日志文件日志文件是记载每个事务对数据库的更新操作的文件.日志文件由大量的日志记录组成.如有表示事务开始的事务开始记录、表示事务提交或中止的事务提交或中止记录,另外还有表示更新操作的更新日志记录等.如图1所示.浅谈数据库恢复技术鲍晓娟(赤峰学院远程教育学院,内蒙古赤峰024000)摘要:数据库系统在运行的过程中可能会产生各种故障,使数据库处于不稳定的状态.所以DBMS 必须提供一种功能用以恢复数据库中的正确数据,使数据准确无误.这种功能就是数据库的恢复.数据库系统常见的故障有三种即事故故障、系统故障和介质故障.基于日志文件的数据库恢复技术用以恢复事务故障和系统故障.关键词:数据库系统;故障;日志文件;数据库恢复技术中图分类号:TP311.32文献标识码:A 文章编号:1673-260X (2011)04-0045-03Vol.27No.4Apr.2011第27卷第4期2011年4月赤峰学院学报(自然科学版)Journal of Chifeng University (Natural Science Edition )日志记录形式化表示含义事务开始记录<TiBEGINTRANSATION>事务Ti开始执行更新日志记录<Ti,Aj,V1,V2>事务Ti开始对数据对象Aj进行更新操作(对插入操作而言,此项为空),更新前的值为V1更新后的值为V2(对删除操作而言,此项为空)事务提交记录<Ti,COMMIT>事务Ti执行提交操作事务中止记录<Ti,ROLLBACK>事务Ti中止执行表1日志文件45--时刻事务T1事务T2数据库中的值t1t2t3t4t5t6t7t8t9t10t11t12t13t14Read(A)A:=A+10Write(A)Read(B)B:=B+20Write(B)COMMITRead(A)A:=A+20Write(A)Read(B)B:=B+40Write(B)COMMITA=50A=60B=100B=120A=60A=80B=120B=160表2事务T1和事务T2日志记录<T1BEGINTRANSATION><T1,A,50,60><T1,B,100,120><T1COMMIT><T2BEGINTRANSATION><T2,A,60,80><T2,B,120,160><T2COMMIT>表3日志记录(4)重复执行步骤(3),直至遇到该事务的提交记录.2.3事务故障和系统故障的恢复事务故障是指某事物在运行过程中由于内部的逻辑错误或系统错误而在未完成其所有操作以前就被迫中止了,此时该事务中的部分操作己完成,部分操作未完成.但是事务中的所有操作是一个整体,要么全做,要么全部不做,否则就会使数据库处于不一致的状态,因此对发生事务故障的事务必须撤消.对某个事务(如Ti)的撤消操作只要利用前面介绍的UNDO(Ti)就可以了.与事务故障相比,系统故障时受影响的可能不止一个事务,而是发生系统故障时正在运行的所有事务.在这些事务中,有的未完成事务内规定的操作,这些事务在日志文件中有<BEGINTRANSACTION>记录,而没有<COMMIT>记录,这些事务应撤消;而有的事务已完成了其中所有的操作,但事务对数据库的更新结果可能还留在缓冲区中,未写入物理数据库,这些事务在日志文件中既有<BEGINTRANSACTION>记录,也有<COMMIT>记录,这些事务应重做.例如,对于表2中的事务T1和T2,如果t5时刻发生系统故障,那么事务T1在日志文件中的记录如表3所示,只有<T1BEGINTRANSACTION>记录,没有<T1COM-MIT>记录,所以事务T1必须重做;如果该事务在t11时刻发生系统故障,日志文件中的记录如表5所示,那么事务T1必须重做,T2必须撤消.系统故障的恢复比事务故瘴要夏杂一些,具体步骤如下:(1)正向扫描日志文件,找出系统故障发生前未完成的事务,将它们的事务标志记入撤消(UNDO)队列;找出系统故障发生前己完成的事务,将它们的事务标志记入重做(RE-DO)队列.(2)对UNDO队列中的各事务实行撤消(UNDO)操作.(3)对REDO队列中的各事务实行重做(REDO)操作.3数据转储及介质故障的恢复3.1数据转储所谓数据转储就是由DBA定期地将物理数据库中的数据复制到另外的磁盘或磁带保存起来的过程.被保存的后备数据文本称为后备副本或后援副本.数据转储分为静态转储和动态转储两种.所谓静态转储是指在系统中无任何运行事务时所进行的数据转储;而动态转储是指可以与并发事务同时进行的数据转储.静态转储和动态转储各有利弊.静态转储的优点是简单,且得到的一定是一个正确的后备副本.因为转储开始时数据库处于一致性的状态,而静态转储期间没有任何事务在运行,故绝对不存在对数据库的更新操作,所以静态转储得到的一定是一个一致性的后备副本.但是,静态转储不能与事务同时进行,影响了系统的可用性.动态转储虽然可以与并发事务同时进行,但却不能保证得到一个正确的后备副本,这是因为在动态转储时数据库可以被并行运行的事务更新,转储到后备副本中的数据可能是过时的数据.例如,系统在转储期间的某时刻ti将数据X(X=200)转储到了另外的磁盘,可是却有事务在ti后的另一时刻tj将数据X改为600,这样转储结束数据X已是过时的数据了.因此,在进行动态转储时,必须将转储期间事务对数据库的更新操作登记在日志文件中,以备将来发生故障时用该日志文件和后备副本将数据库恢复到某一一致性状态.3.2介质故障的恢复与事务故障和系统故障相比,有时系统故障对数据库的破坏性可能最大,因为介质故障破坏的是磁盘上的部分(或全部)物理数据库,甚至会破坏日志文件,而且也会影响正在存取被破坏的物理数据的所有事务.利用数据转储后产日志记录<T1BEGINTRANSATION><T1,A,50,60>表4日志记录日志记录<T1BEGINTRANSATION><T1,A,50,60><T1,B,100,120><T1COMMIT><T2BEGINTRANSATION><T2,A,60,80>表5日志记录46--图1事务的不同状态生的后备副本与日志文件可以进行介质故障的恢复.用后备副本和日志文件进行数据库恢复的具体步骤如下:(l)装入最近一次转储的后备副本,将数据库恢复到最近一次转储时的一致性状态.如果后备副本是静态转储产生的,只要装入该后备副本即可:而如果后备副本是由动态转储产生的,还必须同时装入转储开始时刻的日志文件副本,利用系统故障恢复的方法(即REDO+UNDO),将数据库恢复到最近一次转储时的一致性状态.(2)装入转储结束时刻的日志文件副本,重做已完成的事务.3.3SQLServer2000中数据的备份与恢复前面介绍的数据转储实际上就是对数据库进行备份,SQLServe2000可以将数据库备份到很安全的地方,当数据库被破坏时,就可以利用备份好的数据恢复数据库.SQLServer2000提供了四种数据库备份与恢复数据的方式:●全库备份:备份整个数据库.●日志备份:备份日志文件.●差异备份:仅备份自上次全库备份后被修改过的数据页.●文件或文件组备份:对组成数据库的文件或文件组进行单独的备份.4检查点方法利用日志文件技术可以进行数据库的恢复,但是效率较低.例如,在进行系统故障恢复的过程中,系统必须对整个日志文件进行搜索,以决定哪些事务必须重做,哪些必须撤消,而日志文件中记录了事务对数据库的所有更新操作,记录数很多,搜索速度很慢:另外,有很多事务实际上己经将更新澡作的结果都写入物理数据库了,因此不需要再重做了,否则只会浪费系统的时间.为提高日志戈徉技术的效率,可以采月检查点的方法.即在日念文件中再增加一个检查点记录,同时还增加了一个重新启动文件.系统在运行的过程中会周期性地产生一个检查点,以保存数据库的状态.具体地,系统会进行如下的操作:(l)将仍在缓冲区的所有日志记录写入物理的日志文件中.(2)在日志文件中写入一个检查点记录,该检查点记录包含了在检查点时刻正在执行的所有事务的最近一个日志记录的地址.(3)将数据缓冲区中的数据写入物理的数据库.(4)将所产生的检查点记录在日志文件中的地址存入重新启动文件.这样,当数据库在某一个检查点(如ti时刻)之后、下一个检查点还未来到之前的某时刻(如tj时刻)发生故障时,DBMS的恢复子系统就可以根据每一个事务所处的不同状态(见图1),进行数据库的恢复.如图1所示,按事务开始和结束的时间可以将事务可以分为如下几种:(1)在检查点前已结束的事务,如事务Tl;(2)在检查点前开始、在检查点后的故障发生前已结束的事务,如事务T2;(3)在检查点前开始、在检查点后的故障发生时尚未结束的事务,如事务T3;(4)在检查点后开始、在检查点后的故障发生前已结束的事务,如事务T4;(5)在检查点后开始、在检查点后的故障发生时尚未结束的事务,如事务TS.对于检查点前已结束的事务,不需要恢复,因为这些事务对数据库的更新己在最近的检查点时被写入物理数据库中了;对于在检查点前开始、在检查点后的故障发生前己结束的事务,必须重做,因为它们对数据库的更新可能还留在缓冲区中,尚未写入物理数据库:对于在检查点前开始、在检查点后的故障发生时尚未结束的事务,则必须撤消.当系统发生故障时,恢复子系统就从重新启动文件中找到最后一个检查点记录在日志文件中的地址,并据此找出日志文件中的最后一个检查点记录,从中取出检查点时刻正在执行的所有事务在日志文件中的地址,然后根据这些事务是否有<COMMIT>日志记录来决定哪些事务需要REDO,哪些需要UNDO,并分别把它们放入REDO队列或UNDO队列,最后重做REDO队列的所有事务,撤销UNDO队列中的所有事务.———————————————————参考文献:〔1〕萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000.〔2〕王鹏,董群.数据库技术及其应用[M].北京:人民邮电出版社,2000.〔3〕王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,1998.〔4〕刘世峰.数据库基础与应用[M].北京:中央广播电视大学出版社,2003.〔5〕丁宝康,董建全.数据结构实用教程[M].北京:清华大学出版社,2001.47--。