- 1.06 MB
- 2022-08-08 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
第12章备份和还原\n12.1概述12.2数据库的恢复模式12.3备份基础12.4执行备份操作12.5还原\n12.1概述备份就是制作数据库结构和数据的拷贝,以便在数据库遭到破坏的时候能够修复数据库。数据库的破坏是难以预测的,因此必须采取能够还原数据库的措施。一般地,造成数据丢失的常见原因包括:软件系统瘫痪硬件系统瘫痪人为误操作存储数据的磁盘被破坏地震、火灾、战争、盗窃等灾难\n故障是不可避免的系统故障:计算机软、硬件故障人为故障:操作员的失误、恶意的破坏等。数据库的恢复把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)\n一、事务内部的故障事务内部的故障有的是可以通过事务程序本身发现的有的是非预期的\n二、系统故障称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。整个系统的正常运行突然被破坏所有正在运行的事务都非正常终止不破坏数据库内存中数据库缓冲区的信息全部丢失\n三、介质故障称为硬故障,指外存故障磁盘损坏磁头碰撞操作系统的某种潜在错误瞬时强磁场干扰\n介质故障的恢复装入数据库发生介质故障前某个时刻的数据副本重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库\n四、计算机病毒计算机病毒一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序可以繁殖和传播危害破坏、盗窃系统中的数据破坏系统文件\n故障小结各类故障,对数据库的影响有两种可能性一是数据库本身被破坏二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。\n一般地,在备份时,系统应处于正常的运行状态在进行还原时,应根据故障原因、时间选择备份\n12.2数据库的恢复模式完整恢复模式大容量日志记录的恢复模式简单恢复模式\n完整恢复模式对数据库的所有操作都记入日志优点可以还原到任意时刻缺点耗费大量的存储空间仅用于重要数据库\n大容量日志记录的恢复模式不改变库结构和数据的操作不记入日志优点可以还原到任意时刻存储空间耗费较少\n简单恢复模式通过完整数据备份和增量数据备份还原优点简单缺点只能还原到执行备份的时刻点\n日志文件一、日志文件的格式和内容二、日志文件的作用三、登记日志文件\n一、日志文件的格式和内容什么是日志文件日志文件(log)是用来记录事务对数据库的更新操作的文件\n\n\n\n\n日期源消息2007-11-1308:00:53.17spid15启动数据库“gene_faimaly_ais”。2007-11-1308:00:54.14spid11启动数据库“miRNA_microarray_diff”。2007-11-1308:01:08.29spid15对数据库'gene_faimaly_ais'(29)的分析已完成81%(大约尚需1秒)2007-11-1308:01:08.59spid11对数据库'miRNA_microarray_diff'(30)的分析已完成34%(大约尚需10秒)2007-11-1308:01:09.24spid15对数据库'gene_faimaly_ais'(29)的分析已完成100%(大约尚需0秒)2007-11-1308:01:09.31spid15数据库'gene_faimaly_ais'(29)的恢复已完成0%(大约尚需5秒)(第2阶段,共3阶段)。2007-11-1308:01:17.46spid11对数据库'miRNA_microarray_diff'(30)的分析已完成64%(大约尚需7秒)2007-11-1308:01:18.26spid15数据库'gene_faimaly_ais'(29)的恢复已完成89%(大约尚需1秒)(第2阶段,共3阶段)。2007-11-1308:01:18.68spid15数据库'gene_faimaly_ais'(29)的恢复已完成100%(大约尚需0秒)(第2阶段,共3阶段)。\n日志文件的格式和内容日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件\n日志文件的格式和内容(续)以记录为单位的日志文件内容各个事务的开始标记(BEGINTRANSACTION)各个事务的结束标记(COMMIT或ROLLBACK)各个事务的所有更新操作以上均作为日志文件中的一个日志记录(logrecord)\n日志文件的格式和内容(续)以记录为单位的日志文件,每条日志记录的内容事务标识(标明是哪个事务)操作类型(插入、删除或修改)操作对象(记录内部标识)更新前数据的旧值(对插入操作而言,此项为空值)更新后数据的新值(对删除操作而言,此项为空值)\n日志文件的格式和内容(续)以数据块为单位的日志文件,每条日志记录的内容事务标识(标明是那个事务)被更新的数据块\n二、日志文件的作用进行事务故障恢复进行系统故障恢复协助后备副本进行介质故障恢复\n利用静态转储副本和日志文件进行恢复静态转储运行事务正常运行─┼───────┼─────────────TaTbTf└────────────重装后备副本利用日志文件恢复继续运行恢复─┼───────┼┈┈┈┈┈┈┈┈┼────登记日志文件↓\n利用静态转储副本和日志文件进行恢复系统在Ta时刻停止运行事务,进行数据库转储在Tb时刻转储完毕,得到Tb时刻的数据库一致性副本系统运行到Tf时刻发生故障为恢复数据库,首先由DBA重装数据库后备副本,将数据库恢复至Tb时刻的状态重新运行自Tb~Tf时刻的所有更新事务,把数据库恢复到故障发生前的一致状态\n三、登记日志文件基本原则登记的次序严格按并行事务执行的时间次序必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件写数据库操作:把对数据的修改写到数据库中\n登记日志文件(续)为什么要先写日志文件写数据库和写日志文件是两个不同的操作在这两个操作之间可能发生故障如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性\n设置恢复模式交互式方式命令方式\n交互式方式\n\n命令方式ALTERDATABASEdatabase_name{}\n12.3备份基础备份就是制作数据库结构和数据的拷贝。做好相应的计划工作明确备份的对象\n备份前的计划工作确定备份的频率。确定备份的内容。确定使用的介质。确定备份工作的负责人。确定使用在线备份还是脱机备份。是否使用备份服务器。确定备份存储的地方。确定备份存储的期限。\n备份的对象在备份的时候,应该确定备份的内容。备份的目的是当系统发生故障或瘫痪之后,应该能够将系统还原到发生故障之前的状态。因此,有必要将系统的全部信息都备份下来。\n从大的方面上讲,应该备份两方面的内容一方面是备份记录系统信息的系统数据库另一方面是备份记录用户数据的用户数据库。\n系统数据库mastermsdbmodel\n备份用户数据库时机创建后更新数据后(一般是指大量更新)清除日志后\n备份特点在MicrosoftSQLServer系统中,备份既可以是静态的,也可以是动态的。静态备份(转储),表示备份数据库时不允许用户使用数据库。动态备份(转储),备份数据库时,允许用户继续在数据库中操作。\n什么是数据转储转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用的数据称为后备副本或后援副本如何使用数据库遭到破坏后可以将后备副本重新装入重装后备副本只能将数据库恢复到转储时的状态\n二、转储方法1.静态转储与动态转储2.海量转储与增量转储3.转储方法小结\n静态转储在系统中无运行事务时进行的转储操作转储开始时数据库处于一致性状态转储期间不允许对数据库的任何存取、修改活动得到的一定是一个数据一致性的副本优点:实现简单缺点:降低了数据库的可用性转储必须等待正运行的用户事务结束新的事务必须等转储结束\n动态转储转储操作与用户事务并发进行转储期间允许对数据库进行存取或修改优点不用等待正在运行的用户事务结束不会影响新事务的运行动态转储的缺点不能保证副本中的数据正确有效[例]在转储期间的某个时刻Tc,系统把数据A=100转储到磁带上,而在下一时刻Td,某一事务将A改为200。转储结束后,后备副本上的A已是过时的数据了\n动态转储利用动态转储得到的副本进行故障恢复需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态\n2.海量转储与增量转储海量转储:每次转储全部数据库增量转储:只转储上次转储后更新过的数据海量转储与增量转储比较从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效\n3.转储方法小结转储方法分类转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储\n12.4执行备份操作在执行备份操作之前,应该创建数据库的备份文件。备份文件既可以是永久性的,也可能是临时性的。然后,把指定的数据库备份到备份文件上。\n创建永久性的备份文件执行备份的第一步是创建将要包含备份内容的备份文件。为了执行备份操作,在使用之前所创建的备份文件称为永久性的备份文件。这些永久性的备份文件也称为备份设备。有两种创建永久性备份文件的方法:使用sp_addumpdevice系统存储过程;使用SQLServerManagementStudio。\nsp_addumpdevicedevicetype,logicalname,physicalnameDevicetype(DISK/TAPE)\n\n\n创建临时性的备份文件在执行数据库备份过程中产生的备份文件称为临时性的备份文件。\n使用多个备份文件来存储备份在执行数据库备份过程中,MicrosoftSQLServer系统可以同时向多个备份文件写备份内容。这时的备份称为并行备份。如果使用多个备份文件,那么数据库中的数据就分散在这些备份文件中。在执行一次备份过程中,使用到的一个或多个备份文件称为备份集。\n在一次备份操作中,只能使用同一种介质类型不要同时使用永久性备份和临时性备份不要单独使用某一个备份文件\nBACKUP语句BACKUPDATABASE{database_name|@database_name_var}TO[,...n]\n[WITH [BLOCKSIZE={blocksize|@blocksize_variable}] [[,]{CHECKSUM|NO_CHECKSUM}] [[,]{STOP_ON_ERROR|CONTINUE_AFTER_ERROR}] [[,]DESCRIPTION={'text'|@text_variable}] [[,]DIFFERENTIAL] [[,]EXPIREDATE={date|@date_var} |RETAINDAYS={days|@days_var}] [[,]PASSWORD={password|@password_variable}] [[,]{FORMAT|NOFORMAT}] [[,]{INIT|NOINIT}] [[,]{NOSKIP|SKIP}] [[,]MEDIADESCRIPTION={'text'|@text_variable}] [[,]MEDIANAME={media_name|@media_name_variable}] [[,]MEDIAPASSWORD={mediapassword|@mediapassword_variable}] [[,]NAME={backup_set_name|@backup_set_name_var}] [[,]{NOREWIND|REWIND}] [[,]{NOUNLOAD|UNLOAD}] [[,]RESTART] [[,]STATS[=percentage]] [[,]COPY_ONLY]\nCHECKSUM|NO_CHECKSUM在写入介质前是否执行校验和检查DESCRIPTION:描述DIFFERENTIAL:增量备份\n备份方法MicrosoftSQLServer2005系统提供了四种基本的备份方法,来满足企业和数据库活动的各种需要。\n完全数据库备份增量数据库备份事务日志备份数据库文件或文件组备份。\n\n\n12.5还原备份是一种灾害预防操作,还原则是一种消除灾害的操作。备份是还原的基础,还原是为了实现备份的目的。\n还原的特点数据库还原就是指加载数据库备份到系统中的进程。在进行数据库还原时,系统首先进行一些安全性检查,这些安全性检查包括:指定的数据库是否存在数据库文件是否变化数据库文件是否兼容重建数据库及其相关的文件\n验证备份的内容在还原数据库之前,应该验证使用的备份文件是否有效和查看备份文件中的内容是否自己所需要的内容。可以使用下面的RESTORE语句验证备份的内容:RESTOREHEADERONLYRESTOREFILELISTONLYRESTORELABELONLYRESTOREVERIFYONLY\nRESTORE语句RESTOREDATABASE{database_name|@database_name_var}[FROM[,...n]]\nRecovery:提交完成的事务,数据库可以正常使用,不能继续执行还原操作NoRecovery:不提交未完成的事务,数据库仍处于还原状态,不能使用该数据库,可以继续还原\n\n从不同的备份中还原数据库如果数据库遭到了破坏,那么可以从完全数据库备份中来还原。这种还原也是所有还原操作的基础。如果只使用一个完全数据库的备份,那么可以在还原时使用RECOVERY选项。如果有多个将要还原的内容,那么在执行完全数据库还原时使用NORECOVERY选项。\n具有检查点的恢复技术一、问题的提出二、检查点技术三、利用检查点的恢复策略\n一、问题的提出两个问题搜索整个日志将耗费大量的时间REDO处理:重新执行,浪费了大量时间\n解决方案具有检查点(checkpoint)的恢复技术在日志文件中增加检查点记录(checkpoint)增加重新开始文件恢复子系统在登录日志文件期间动态地维护日志\n二、检查点技术检查点记录的内容1.建立检查点时刻所有正在执行的事务清单2.这些事务最近一个日志记录的地址重新开始文件的内容记录各个检查点记录在日志文件中的地址\n检查点技术(续)具有检查点的日志文件和重新开始文件\n动态维护日志文件的方法动态维护日志文件的方法周期性地执行如下操作:建立检查点,保存数据库状态。具体步骤是:1.将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上2.在日志文件中写入一个检查点记录3.将当前数据缓冲区的所有数据记录写入磁盘的数据库中4.把检查点记录在日志文件中的地址写入一个重新开始文件\n建立检查点恢复子系统可以定期或不定期地建立检查点,保存数据库状态定期按照预定的一个时间间隔,如每隔一小时建立一个检查点不定期按照某种规则,如日志文件已写满一半建立一个检查点\n三、利用检查点的恢复策略使用检查点方法可以改善恢复效率当事务T在一个检查点之前提交T对数据库所做的修改已写入数据库写入时间是在这个检查点建立之前或在这个检查点建立之时在进行恢复处理时,没有必要对事务T执行REDO操作\n利用检查点的恢复策略(续)Tc(检查点)Tf(系统故障)REDOUNDOUNDOREDOT2T3T4T5不要REDOT1系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略\n利用检查点的恢复策略(续)T1:在检查点之前提交T2:在检查点之前开始执行,在检查点之后故障点之前提交T3:在检查点之前开始执行,在故障点时还未完成T4:在检查点之后开始执行,在故障点之前提交T5:在检查点之后开始执行,在故障点时还未完成恢复策略:T3和T5在故障发生时还未完成,所以予以撤销T2和T4在检查点之后才提交,它们对数据库所做的修改在故障发生时可能还在缓冲区中,尚未写入数据库,所以要REDOT1在检查点之前已提交,所以不必执行REDO操作\n利用检查点的恢复步骤1.从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录\n利用检查点的恢复策略(续)2.由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST建立两个事务队列UNDO-LISTREDO-LIST把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。\n利用检查点的恢复策略(续)3.从检查点开始正向扫描日志文件,直到日志文件结束如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列4.对UNDO-LIST中的每个事务执行UNDO操作对REDO-LIST中的每个事务执行REDO操作\n数据库镜像介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性介质故障恢复比较费时为预防介质故障,DBA必须周期性地转储数据库提高数据库可用性的解决方案数据库镜像(Mirror)\n数据库镜像(续)数据库镜像DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上DBMS自动保证镜像数据与主数据库的一致性每当主数据库更新时,DBMS自动把更新后的数据复制过去\n数据库镜像(续)\n数据库镜像的用途出现介质故障时可由镜像磁盘继续提供使用同时DBMS自动利用镜像磁盘数据进行数据库的恢复不需要关闭系统和重装数据库副本(如下图所示)\n数据库镜像(续)没有出现故障时可用于并发操作一个用户对数据加排他锁修改数据,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁\n数据库镜像(续)频繁地复制数据自然会降低系统运行效率在实际应用中用户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像\n\n\n