数据库原理及应用-数据库备份与恢复_第1页
数据库原理及应用-数据库备份与恢复_第2页
数据库原理及应用-数据库备份与恢复_第3页
数据库原理及应用-数据库备份与恢复_第4页
数据库原理及应用-数据库备份与恢复_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库备份与恢复目录01数据库故障及恢复策略02数据库恢复的原理及方法03数据库备份操作04数据库恢复操作本章主要内容本章主要介绍了数据库的备份和恢复。数据库恢复技术用来应对各种各样的故障,当数据库出现故障时,恢复机制能将数据库恢复到一致性状态,保证数据库中的数据是正确的。数据库的恢复是以备份为基础的,SQLServer2019的备份和恢复组件为存储在SQLServer中的关键数据提供了重要的保护手段。本章着重讨论备份和恢复的策略与过程。数据库故障及恢复策略01数据库系统在运行中发生故障后,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态,这时可利用日志文件和数据库转储的后备副本将数据库恢复到故障前的某个一致性状态。数据库故障是指导致数据库值出现错误描述状态的情况,数据库运行过程中可能出现各种各样的故障,这些故障可分为3类:事务故障、系统故障和介质故障。根据不同的故障类型,应该采取不同的恢复策略。8.1.1事务故障及恢复事务故障表示由非预期的、不正常的程序结束所造成的故障。造成程序非正常结束的原因包括输入数据错误、运算溢出、违反存储保护和并行事务发生死锁等。8.1.1事务故障及恢复【例8.1】图书借阅事务:某图书借阅成功后,需要将该图书的库存数量A减去借阅数量M,同时在借阅记录上添加借阅数量M。BEGINTRANSACTION读图书库存量A;A=A-M;IF(A<0)THEN{显示库存数量不足,不能借阅;ROLLBACK;}ELSE{读已借图书数量B;B=B+M;COMMIT;}8.1.1事务故障及恢复发生事务故障时,被迫中断的事务可能已对数据库进行了修改,为了消除该事务对数据库的影响,要利用日志文件中所记录的信息强行回滚该事务,将数据库恢复到修改前的初始状态。为此,要检查日志文件中由这些事务引起变化的记录,取消这些没有完成的事务所做的一切改变。这类恢复操作称为事务撤销(UNDO),具体做法如下。(1)反向扫描日志文件,查找该事务的更新操作。(2)对该事务的更新操作执行反操作,即对已经插入的新记录进行删除操作,对已删除的记录进行插入操作,对修改的数据恢复旧值,用旧值代替新值。这样由后向前逐个扫描该事务已做的所有更新操作并执行反操作,直到扫描到此事务的开始标记,则事务故障恢复完毕。8.1.2系统故障及恢复

系统故障称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。

系统断电

数据库管理系统代码错误特定类型的硬件错误(如CPU故障)操作系统故障8.1.2系统故障及恢复系统故障的影响:

B所有正在运行的事务都非正常终止C内存中数据库缓冲区的信息全部丢失D不破坏数据库A整个系统的正常运行突然被破坏8.1.2系统故障及恢复发生系统故障时可能会出现两种情况:1.所有正在运行的事务非正常终止2.数据库内存缓冲区的信息全部丢失恢复策略:系统重新启动时,恢复程序让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务。恢复策略:系统重新启动时,恢复程序需要重做(REDO)所有已提交的事务。8.1.2系统故障及恢复具体做法如下:(1)

正向扫描日志文件重做(REDO)

队列撤销

(UNDO)队列既有BEGINTRANSACTION记录也有COMMIT记录只有BEGIN

TRANSACTION记录,无相应的COMMIT记录8.1.2系统故障及恢复(3)

对重做(REDO)队列事务进行重做(REDO)处理(2)

对撤销(UNDO)队列事务进行撤销(UNDO)处理反向扫描日志文件,对每个撤销事务的更新操作执行逆操作正向扫描日志文件,对每个重做事务重新执行登记的操作8.1.2系统故障及恢复系统故障发生后,并不能确定哪些未完成的事务已更新过数据库,哪些事务的提交结果尚未写入数据库,这样,系统重新启动后,就要撤销所有的未完成事务,重做所有已提交的事务。但是,在故障发生前已经运行完毕的事务有些是正常结束的,有些是异常结束的,所以不需要把它们全部撤销或重做。8.1.3介质故障及恢复介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部分丢失或全部丢失。这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏。解决此问题需要装入发生介质故障前最新的数据库后备副本,然后利用日志文件重做该副本所运行的所有事务。8.1.3介质故障及恢复具体方法如下。(1)装入最新的数据库后备副本,使数据库恢复到最近一次转储的可用状态。(2)装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务。首先正向扫描日志文件,找出发生故障前已提交的事务,将其记入重做队列。再对重做队列中的各个事务进行重做处理,方法是正向扫描日志文件,对每个重做事务重新执行登记的操作,即将日志文件中数据更新后的值写入数据库。数据库恢复的原理及方法02恢复机制涉及的关键问题2.如何利用这些冗余数据实施数据库恢复1.如何建立冗余数据数据备份(backup)登记日志文件(logging)数据库镜像技术8.2.1数据备份备份的数据文本称为后备副本或后援副本。

数据备份指定期或不定期地对数据库数据进行复制。可以将数据复制到本地机器上,也可以复制到其他机器上,也称为数据转储。8.2.1数据备份[例]故障发生点备份运行事务正常运行─┼───────┼─────────↓────Tf重装后备副本恢复─┼───────┴--------→

重新运行事务TaTb8.2.1数据备份备份方法按照备份状态,数据备份可分为静态备份与动态备份按照备份方式,备份还可以分为海量备份与增量备份是在系统中没有正在运行的事务时进行了备份操作。备份期间不允许对数据库的任何存取、修改活动优点:简单

缺点:降低了数据库的可用性静态备份8.2.1数据备份动态备份是指在备份期间允许对数据库进行存取或修改备份操作与用户事务并发进行

优点

不用等待正在运行的用户事务结束

不会影响新事务的运行

缺点

不能保证副本中的数据正确有效动态备份8.2.1数据备份海量备份指每次备份全部数据库增量备份指只备份上次备份后更新过的数据从故障恢复角度看,使用海量备份得到的后备副本进行恢复,会更方便些,直接装入最新副本就行;而使用增量备份的后备副本进行恢复,需要按时间顺序逐个加入副本,恢复时间比较长。从传统效率角度看,如果数据库很大,事务处理又十分频繁,则经常性的做增量备份会更便捷,更实用,更有效,海量备份耗费的时间太多,因而也就不能频繁的进行。8.2.1数据备份8.2.2登记日志文件什么是日志文件1.日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件日志文件(logfile)是用来记录事务对数据库的更新操作的文件8.2.2登记日志文件以记录为单位的日志文件内容各个事务的开始标记(BEGIN

TRANSACTION)各个事务的结束标记(COMMIT或ROLLBACK)各个事务的所有更新操作以上均作为日志文件中的一个日志记录(log

record)8.2.2登记日志文件记录事务开始标记的日志记录事务标志

+

BEGIN

TRANSACTION例:T1BEGIN

TRANSACTION记录事务结束标记的日志记录事务标志

+

COMMIT事务标志

+

ROLLBACK例:T1

COMMITT2

ROLLBACK8.2.2登记日志文件记录事务更新操作的日志记录示意性例子:T1

U

AA

18

20

T1

I

TU

1T1

D

TV

201.事务标识(标明是哪个事务)2.操作类型(插入、删除或修改)3.操作对象(记录ID、Block

NO.)4.更新前数据的旧值(对插入操作而言,此项为空值)5.更新后数据的新值(对删除操作而言,

此项为空值)8.2.2登记日志文件以数据块为单位的日志文件,每条日志记录的内容事务标识被更新的数据块由于将更新前的整个块和更新后的整个块都放入日志文件中,操作类型和操作对象等信息就不必放入日志记录中了。8.2.2登记日志文件2.日志文件的作用具体作用01事务故障恢复和系统故障恢复必须用日志文件。03在静态备份方式中,也可以建立日志文件。02在动态备份时,由于不能获得数据一致性副本,所以采用动态备份方式必须建立日志文件。8.2.2登记日志文件3.登记日志文件的原则

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:登记的次序严格按并发事务执行的时间次序必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件中写数据库操作:把对数据的修改写到数据库中8.2.3数据库镜像技术数据库镜像是数据库管理系统根据数据库管理员的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。应用1应用2应用3应用4镜像update复制readreadread8.2.3数据库镜像技术

出现故障时

可由镜像磁盘继续提供使用

同时数据库管理系统自动利用镜像磁盘数据进行数据库的恢复

不需要关闭系统和重装数据库副本应用1应用2应用3应用4镜像update复制readreadread8.2.3数据库镜像技术频繁地复制数据自然会降低系统运行效率在实际应用中用户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像。数据库备份操作038.3.1备份类型数据备份可以是完整的数据库、部分数据库、一组文件或文件组。根据数据备份范围的不同,SQLServer2019提供了不同的数据库备份类型,以满足不同数据库系统的备份需求。8.3.1备份类型1.完整备份这类备份的速度较慢,而且占用大量的磁盘空间。在对数据库进行完整备份时,所有未完成的事务或者发生在备份过程中的事务都将被忽略。完全备份的主要优点是简单,备份是单一操作,可按一定的时间间隔预先设定,恢复时只需一个步骤就可以完成。完整备份

指对数据库内的所有对象都进行备份(所有对象、系统表以及相关数据)8.3.1备份类型2.差异备份这类备份的速度较快,适于更频繁地执行。差异备份也包括事务日志部分。当数据库发生故障需要进行恢复操作时,差异备份不能单独运行,必须结合数据库的完整备份一起使用,注意要选用最新的数据库完整备份和最新的数据库差异备份来恢复数据库,这样就可以将数据库恢复到差异备份的时刻。差异备份

是完整备份的补充,只备份从最近的完整备份后数据库变动的部分

8.3.1备份类型3.事务日志备份与差异备份类似,事务日志备份生成的文件较小、占用时间较短,但是在还原数据时,除了先要还原完整备份之外,还要依次还原每个事务日志备份,而不是只还原最后一个事务日志备份(这是与差异备份的区别)。事务日志备份

指只备份数据库的事务日志内容

8.3.1备份类型4.文件和文件组备份文件和文件组备份是针对数据库文件或者文件组做备份,文件组是包含一个或者多个数据库文件。在大型的数据库中,可以选用文件和文件组备份的方式复制数据库中比较重要的文件,一旦这些文件发生故障,就可以选用文件和文件组备份进行还原操作,从而大大地提高数据库的恢复效率。这种方式很便利,而且具有很大的弹性空间。8.3.2备份设备SQLServer将备份数据库的载体称为备份设备。备份设备可以是磁带,也可以是磁盘。现在通常采用的是磁盘。备份设备分为永久备份设备和临时备份设备两类。只有创建备份设备后,才能将需要备份的数据库备份到备份设备中。创建备份设备时,需要指定备份设备(逻辑备份设备)对应的操作系统文件名和文件的存放位置(物理备份文件)。SQLServer2019提供了两种创建备份设备的方法:一是使用SQLServerManagementStudio(SSMS);二是使用T-SQL语句。8.3.2备份设备1.使用SQLServerManagementStudio创建备份设备(1)在SSMS工具的对象资源管理器中,展开“服务器对象”,找到“备份设备”,右击,在弹出的快捷菜单中选择“新建备份设备”命令,如图所示:8.3.2备份设备选择“新建备份设备”命令后,打开“备份设备”对话框,如右图所示。(2)在该对话框的“设备名称”文本框中输入设备名称(如bk),设置好目标文件或保持默认值,这里必须保证所选的硬盘驱动器上有足够的可用空间,单击“确定”按钮即可完成操作。8.3.2备份设备定义好备份设备后,在对象资源管理器中,依次展开“服务器对象”→“备份设备”选项,可以看到新建立的备份设备bk,如图所示。【例8.2】建立一个名为bk1的磁盘备份设备,其物理存储位置及文件名为D:\河南城建学院\bk1.bak。EXECsp_addumpdevice'disk','bk1','D:\河南城建学院\bk1.bak'8.3.2备份设备2.使用T-SQL语句创建备份设备创建备份设备的T-SQL语句是sp_addumpdevice系统存储过程:sp_addumpdevice[@devtype=]'device_type',[@logicalname=]'logical_name',[@physicalname=]'physical_name'8.3.3实现备份在SQLServer2019中,完整备份、差异备份、事务日志备份都可以在SQLServerManagementStudio的相同窗口中完成,提高了备份操作的简捷性。另外,也可以用T-SQL语句实现。8.3.3实现备份1.用SQLServerManagementStudio实现备份(1)以系统管理员的身份在连接到相应的SQLServer服务器实例之后,在对象资源管理器中,单击服务器名称展开服务器树,找到“数据库”选项并展开,选择要备份的数据库student,右击,在弹出的快捷菜单中选择“任务”→“备份”命令,如图8.4所示。或在要备份数据库的备份设备上右击,在弹出的快捷菜单中选择“备份数据库”命令,打开“备份数据库”对话框,如图8.5所示,在图中进行相应的设置。图8.4备份命令8.3.3实现备份(2)在图8.5中,从“数据库”下拉列表中选择student数据库,在“备份类型”中选择备份类型,在备份组件中选择“数据库”命令,在“目标”列表框中确保有备份设备。

图8.5“备份数据库”对话框8.3.3实现备份(3)在图8.5中单击左边的“选择页”部分的“介质选项”,如图8.6所示。选中“备份到现有介质集”单选按钮,设置备份介质的使用方式。图8.6设置介质选项8.3.3实现备份(4)在图8.5中单击左边的“选择页”部分的“备份选项”,如图8.7所示。保留“名称”文本框中的内容不变,采用默认方式,单击“确定”按钮,开始备份数据库。图8.7设置备份选项8.3.3实现备份2.用T-SQL语句实现备份备份使用的T-SQL语句为BACKUP。完整备份、差异备份、文件和文件组备份的语句均为BACKUPDATABASE,事务日志备份的语句为BACKUPLOG。8.3.3实现备份实现完整备份、差异备份、文件和文件组备份的基本语法格式为:BACKUPDATABASE{database_name|@database_name_var}[<file_or_filegroup>[,…n]]/*备份文件或文件组时使用*/TO<backup_device>[,…n][WITH[DIFFERENTIAL]/*表示进行差异备份*/[[,]{INIT|NOINIT}]][;]8.3.3实现备份实现事务日志备份的基本语法格式为:BACKUPLOG{database_name|@database_name_var}TO<backup_device>[,…n][WITH[{INIT|NOINIT}]][;]8.3.3实现备份【例8.3】对“student”进行一次完整备份,备份到bk备份设备上(假设此备份设备已创建好),并覆盖掉该备份设备上已有的内容。语句为:

BACKUPDATABASEstudentTObkWITHINIT【例8.4】对“student”进行一次差异备份,也备份到bk备份设备上,并保留该备份设备上已有的内容。语句为:

BACKUPDATABASEstudentTObkWITHDIFFERENTIAL,NOINIT【例8.5】对“student”进行一次事务日志备份,直接备份到“D:\河南城建学院”文件夹下(假设此文件夹已存在)的student_log.bak文件上。语句为:

BACKUPLOGstudentTODISK='D:\河南城建学院\student_log.bak'数据库恢复操作048.4.1还原模式在SQLServer中有3种数据库还原模式,分别是简单还原(SimpleRecovery)、完全还原(FullRecovery)和批日志还原(Bulk-loggedRecovery)。1.简单还原简单还原是指在进行数据库还原时仅使用了完整备份或差异备份,而不涉及事务日志备份。简单还原模式可使数据库还原到上一次备份的状态,但由于不使用事务日志备份进行还原,因此无法将数据库还原到失败点状态。备份策略:数据库完整备份+差异备份8.4.1还原模式2.完全还原完全还原是指通过使用数据库完整备份和事务日志备份,将数据库还原到发生失败的时刻。选择完全还原模式时常使用的备份策略是:首先进行数据库完整备份,然后进行差异备份,最后进行事务日志备份。8.4.1还原模式3.批日志还原批日志还原在性能上要优于简单还原和完全还原模式,它能尽最大努力减少批操作所需要的存储空间。选择批日志还原模式所采用的备份策略与完全还原所采用的备份策略基本相同。8.4.2恢复的顺序恢复数据库的顺序如下。(1)恢复最近的完整备份。(2)恢复最近的差异备份(如果有)。(3)恢复自差异备份之后的所有事务日志备份(按备份的先后顺序)。8.4.3实现恢复在SQLServer2019中,恢复数据库可以在SQLServerManagementStudio中实现,也可以用T-SQL语句实现。1.使用SQLServerManagementStudio恢复数据库(1)在“对象资源管理器”中右击student数据库,在弹出的快捷菜单中选择“任务”→“还原”→“数据库”命令,如图8.8所示,打开图8.9所示的“还原数据库”窗口。8.4.3实现恢复

图8.8选择还原数据库命令

图8.9“还原数据库”窗口8.4.3实现恢复(2)在图8.9的“还原数据库”窗口中,在“源”部分有两个选项。如果选中“数据库”单选按钮,则可从其对应的下拉列表中选择要从哪个数据库的备份进行恢复。如果选中“设备”单选按钮,则可通过单击右侧的按钮,从弹出的“选择备份设备”窗口(见图8.10)中指定备份所在的备份设备或备份所在的文件。这里以选中“数据库”单选按钮为例,并从下拉列表中选择“student”。选择“student”后,在窗口下面的“要还原的备份集”列表框中会列出该数据库的全部备份,利用这些备份可以还原数据库。图8.10“选择备份设备”窗口8.4.3实现恢复单击图8.9中左侧“选择页”部分的“选项”选项,窗口形式如图8.11所示。在图8.11所示的窗口中,“还原选项”部分各复选框的含义如下。覆盖现有数据库:如果服务器中有与被恢复的数据库同名的数据库,则选中该复选框将覆盖掉服务器中现有的同名数据库。如果服务器中存在与被恢复数据库同名的数据库,并且没有对被恢复的数据库进行日志尾部备份,则在恢复数据库时,必须选中该复选框,否则会出现一个报错窗口。保留复制设置:用于复制数据库。将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置。仅在选择“回滚未提交的事务,使数据库处于可以使用的状态”选项(将在后面说明)时,此复选框才可用。限制访问还原的数据库:使正在还原的数据库仅供db_owner、dbcreator或sysadmin的成员使用。其他选择默认,单击“确定”按钮即可完成对student数据库的还原操作。

图8.11还原数据库中的“选项”窗口8.4.3实现恢复2.用T-SQL语句恢复数据库恢复使用的T-SQL语句为RESTORE。数据库恢复的语句为RESTOREDATABASE,事务日志文件恢复的语句为RESTORELOG。8.4.3实现恢复实现数据库恢复的基本语法格式为:RESTOREDATABASE{database_name|@database_name_var}<file_or_filegroup>[,…n][FROM<backup_device>[,…n]][WITH[FILE={file_number|@file_number}][[,]{NORECOVERY|RECOVERY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论