,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,10,章 备份与恢复,第,10,章 备份与恢复,10.1,数据备份概述,10.2,数据库备份策略,10.3,数据库备份与恢复的实施,10.4,数据库表数据的导入导出,2,数据库,恢复,当某种故障使,数据库,当前状态已不正确或不可靠时,把,数据库恢复,到故障发生前的某一已知的正确状态的过程,数据库恢复的基本原理,利用数据冗余。即数据库中的数据是根据冗余存储在系统其他地方的数据来重建。,数据库恢复是以数据备份为前提的,利用备份数据恢复数据库,数据库备份,周期性或非周期性地将数据库中的数据进行复制,转储在联机或脱机设备中,备份设备,可以是磁盘或磁带,10.1,数据备份概述,3,备份的类型,数据库备份(,Database Backups,),对数据库的完全备份,备份所有数据以及数据库对象,通过还原数据库,只用一步就可以利用数据库备份重新创建整个数据库,将其恢复到服务器或数据库发生故障前最后一次数据库备份时的状态,数据库完全备份速度较慢,且占用大量的磁盘空间,通常安排在晚间数据库操作相对空闲时,条件,数据不是非常重要,数据库变化的频率不大,若对数据库一致性要求较高,要求将数据库恢复到发生损坏的一刻,则不应仅使用数据库备份。,4,事务日志备份(,Transaction Log Backup,),对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后所有已经完成的事务,利用事务日志备份可将数据库恢复到任意一个创建事务日志备份的时刻,在下列情况下选择事务日志备份,不允许在最近一次数据库备份之后发生数据丢失或损坏,存储备份文件的磁盘空间很小或者留给进行备份操作的时间有限,准备把数据库恢复到发生失败的前一点,数据库变化较为频繁,5,在使用事务日志对数据库进行恢复操作时,必须有一个完整的数据库备份,事务日志备份恢复时,必须要按照一定的顺序进行,如,上周末进行了数据库完全备份,从周一到本周末的每一天都进行一次事务日志备份,若要对数据库进行恢复,则,首先恢复数据库备份,然后按照顺序恢复从周一到本周末的事务日志备份,6,差异备份(,Differential Database Backups,),备份最近一次数据库备份以来发生的数据变化,是一种增量数据库备份,与完整数据库备份相比,差异备份的数据量较小,备份和恢复所用的时间较短,与事务日志备份相比,增加差异备份的备份次数,可降低丢失数据的风险,将数据库恢复至进行最后一次差异备份的时刻,但无法像事务日志备份那样提供到失败点的无数据损失备份,7,在实际应用中,可采用下列备份方案来综合使用,3,种备份,首先有规律地进行数据库备份,如每晚备份一次,其次以较小的时间间隔进行差异备份,如三、四个小时备份一次,最后在相邻的两次差异备份之间进行事务日志备份,如每二、三十分钟备份一次,进行恢复时,可先恢复最近一次的数据库备份,接着恢复差异备份,最后进行事务日志备份的恢复,8,若要将数据库恢复到数据库失败点,方法为,若能够访问数据库事务日志文件,则应备份当前正处于活动状态的事务日志,恢复最近一次数据库备份,恢复最近一次差异备份,按顺序恢复自差异备份以来进行的事务日志备份,若无法备份当前数据库正在进行的事务,则只能把数据库恢复到最后一次事务日志备份的状态而不是数据库失败点,9,文件和文件组备份(,File and File Group Backup,),对数据库文件或文件夹进行备份,这种备份用于仅想对遭到破坏的文件或文件组进行恢复时,可提高数据库恢复的速度。,在使用文件或文件组进行恢复时,要求有一个自上次备份以来的事务日志备份来保证数据库的一致性,故在文件或文件组备份后应再进行事务日志备份,否则备份在文件或文件组备份中所有数据库的变化将无法恢复,10,实现数据库恢复所需的系统功能,日志程序,建立系统日志(,Log file,),登记系统运行过程中的重要信息和历史记录,主要包括如下信息,对数据库操作的应用程序、事务、用户和客户机标识,程序和事务进入的时间和装入的数据,向数据库发出的操作要求,操作引起的数据库改变情况,如改变的地址、数据改变前的状态、改变后的状态,拷贝功能,系统需具有周期性或非周期性转储和更新数据的功能,数据可以使用磁盘或磁带介质联机或脱机保存,回滚程序,系统能够在事务回滚时消除该事务在数据库中留下的影响,释放其占有的资源,11,建立检查点,系统重启时,要将发生故障时正在运行的事务回滚,为避免从头搜索整个日志以找出要回滚的事务十分耗费时间的问题,可按预定的时间建立检查点,在检查点时刻要完成的操作有,把日志缓冲区中的内容强制写入日志,即将仍在内存中的任何运行记录强行写入实际的运行日志中,在运行日志中强行写入一个检查点记录,这个记录包括,在这一时刻正在运行的所有事务的登记表,这些事务的最近运行记录在运行日志中的地址,把数据库缓冲区中的内容强行写入数据库,把检查点记录在运行日志中的地址写入启动文件,12,恢复管理程序,系统或数据库故障迫使系统停止运转时,恢复管理程序重新启动程序,并从启动文件中得到检查点在日志中的地址,在运行日志中找到这条检查点记录,并从该点开始搜索日志,根据日志提供的信息,确定要撤消回滚的事务,回滚,同时还需确定要重作的事务,使数据库得以恢复,13,数据库恢复的步骤,周期性地将数据库转储到备份的储存器上,每次修改数据库时,在运行日志上将特殊数据集中进行登记,因故障而使数据库本身遭破坏(例如:磁盘的磁头碰撞)时,要重新装入最新的存档拷贝,然后利用运行日志重新做在这个拷贝之后实现的一切修改,由于故障,虽未使数据库遭受破坏,但使某些内容不可靠时,要利用日志撤消所有,“,不可靠,”,的修改,而把数据库恢复到某一正确状态,14,T1,T2,T3,T5,T4,tc,tf,t,tf,:,事故发生点,tc,:,故障发生前最近的一个检查点,15,其中,根据,tc,、,tf,时刻各事务的状态把事务可分成,5,类,T1,类:,tc,时刻前已完成的事务,其修改结果在检查点时刻已被强行写入数据库,故该类事务不必作恢复处理,T2,类:,tc,时刻前已开始,但在,tc,后,,tf,前完成的事务,T3,类:,tc,时刻前已开始,但到,tf,时刻尚未完成的事务,T4,类:,tc,时刻后开始,而在,tf,时刻前已完成的事务,T5,类:,tc,时刻后开始,但到,tf,时刻尚未完成的事务,说明,T2,和,T4,:,修改结果不能确定是否已写入数据库,故障可能发生在更新已完成,修改结果已置于数据库缓冲区,但还没写到数据库的时刻,所以这类事务必须重做,T3,和,T5,:,两事务在故障点尚未完成,这类事务的旧值仍在数据库中,要将数据库状态恢复到一个正确稳定的状态,故这类事务必须回滚,16,10.2,数据库备份策略,备份策略,常用的备份策略有,只进行数据库备份,在进行数据库备份的同时,进行事务日志备份,进行数据库备份和差异备份。,若只进行数据库备份,则将无法恢复自最近一次数据库备份以来数据库中所发生的所有事务,若在进行数据库备份时也进行事务日志备份,则可将数据库恢复到失败点。但在失败前未提交的事务将无法恢复,若在数据库失败后,立即对当前处于活动状态的事务进行备份,则未提交的事务也可以恢复。,17,SQL Server,还提供了几种减少备份和恢复操作执行时间的方法,如,使用多个备份设备同时进行备份,从多个备份设备上同时恢复数据库,综合使用数据库备份、差异备份和事务日志备份来减少每次需要的备份数据数量,使用文件或文件组备份以及事务日志备份,来减少每次的备份数据量,综合使用数据库备份、差异备份和事务日志备份的策略是,有规律地进行数据库备份,以较小的时间间隔进行差异备份,在相邻两次差异备份之间进行频繁的事务日志备份,18,恢复策略,恢复时若能访问数据库事务日志文件,则备份当前正处于活动状态的事务日志。恢复策略是:恢复最近一次的数据库备份、恢复最近一次差异备份、按顺序恢复自差异备份以来进行的事务日志备份。,若无法备份当前数据库正在进行的事务,则只能把数据库恢复到最后一次事务日志备份的状态,而不是数据库失败点。,19,概述,SQL Server,提供的内置的安全性和数据保护,主要是为防止非法登录者或非授权用户对数据库所造成的破坏,有些情况是这种安全管理机制无能为力的,如:,合法的用户不小心对数据库数据做了不正确的操作,保存数据库文件的磁盘遭到损坏,运行,SQL Server,的服务器因某种不可预见的因素而导致崩溃等,SQL Server,的主要备份工作,对,SQL Server,数据库或事务日志进行拷贝,若数据库因意外而损坏,备份文件将在数据库恢复时,被用来恢复数据库,10.3,数据库备份与恢复的实施,20,注,备份和恢复工作主要是由,DBA,来完成的,实际上,DBA,日常比较重要而频繁的工作就是对数据库进行备份和恢复,SQL Server,支持在线备份,通常可一边进行备份一边进行其它操作,但在备份过程中不允许执行创建或删除数据库文件、创建索引等执行非日志操作,21,备份设备,每次执行,SQL Server,备份时,都会形成一个备份集,备份集必须存储在磁盘和磁带设备上,这些设备称为备份设备,SQL Server,使用物理设备名或逻辑设备名来标识备份设备,物理设备,操作系统用来标识备份设备的名称,如,C:Backups,MyBackup.bak,。,逻辑设备,用来标识物理备份设备的别名或公用名称,逻辑设备名永久地存储在,SQL Server,内的系统表中,以相对简单的方式引用物理设备,如物理设备名,C:Backups,MyBackup.bak,的逻辑设备名可以是,MyBackup,注,备份和恢复过程中既可以使用逻辑设备名,也可使用物理设备名,两种在备份设备上创建备份的方式:将备份添加到备份设备上或将其覆盖,备份前先必须创建备份设备,22,用,SQL Server,企业管理器管理备份设备,23,使用系统过程管理备份设备,sp_addumpdevice,功能:创建备份设备,格式:,sp_addumpdevice,设备类型,设备逻辑名,设备实际名,说明:使用不同的备份介质其名称格式不同,举例:,sp_addumpdevice,disk,MyBackup1,c:Mybackup1.bak,sp_dropdevice,功能:删除备份设备,格式:,sp_dropdevice,备份设备逻辑名,delfile,说明:要删除实际物理设备文件时,,delfile,必须给出,否则备份设备相对应的实体文件仍旧存在,举例:,sp_dropdevice,MyBackup1,delfile,24,数据库恢复模式,可为,SQL Server,中的每个数据库选择,3,种恢复模型中的一种,以确定如何备份数据以及能承受何种程度的数据丢失,三种模型,简单恢复(,Simple Recovery,),仅使用数据库备份或差异备份而不涉及事务日志备份,可使数据库恢复到上一次备份的状态,无法恢复到失败点状态,选择该模式的常用备份策略是先进行数据库备份,再进行差异备份,25,完全恢复(,Full Recovery,),使用数据库备份和事务日志备份将数据库恢复到失败点,该模型几乎不造成任何数据丢失而成为对付因存储介质损坏而造成数据丢失的最佳方法,为保证数据库的这种恢复能力,所有的批数据操作(如:,SELECT,、,INTO,、,创建索引)都被写入日志文件,选择完全恢复模式时通常使用的备份策略为,首先进行完全数据库备份,然后进行差异数据库备份,最后进行事务日志的备份,如果准备让数据库恢复到失败时刻,必须对数据库失败前正处于运行状态的事务进行备份,26,批日志恢复(,Bulk-logged Recovery,),性能上优于简单恢复和完全恢复模式,能尽可能减少批操作所需要的日志存储空间。,说明,数据库在创建时具有与,model,数据库相同的恢复模型,若要更改默认恢复模型,可使用,ALTE