
[理学]sql备份与恢复.ppt
37页数据库中数据安全的保护,——SQL Server中数据的备份与恢复技术,为什么要保护数据?,信息是宝贵的 重新创建数据既困难又耗资巨大 停机时间是宝贵的 公众的关注对企业发展的影响,数据面临的威胁,硬件和软件故障 善意的人为因素 恶意的人为因素 自然灾害,实际的挑战,经济限制 人员限制 技术限制 缺乏理解,数据库数据的备份流程,数据被备份到转储文件中,随后被复制到备份介质上,数据备份与恢复的实现方法,,利用“分离/附加”工具实现,利用“备份/恢复”管理工具实现,,分离,附加,,恢复,利用“分离/附加”工具,所谓分离就是将要备份的数据库与SQL Server服务器分离 分离工作完成后,该数据库将从控制台根目录中消失 当需要恢复数据库时,可以选择附加数据库工具将备份的数据库相关文件与SQL Server服务器重新建立联系这就是数据库的附加利用“分离/附加”工具,这是一种基于单纯文件拷贝的备份策略 有时,需要将原数据文件移动到服务器的不同目录上或者在数据库服务器之间移动但是,当数据库联机时,因为文件本身被标记为正在使用,所以无法简单的移动文件系统中的文件利用“分离/附加”工具,可以关闭SQL Sever,然后移动数据文件,但是,在重启SQL Sever时,它将无法找到文件。
原始的图形:,利用“分离/附加”工具,将数据库移动到其他位置之后:,利用“分离/附加”工具,实现“分离/附加”的两种方式: 一、使用图形界面方式 二、使用T-SQL命令方式 可以使用系统存储过程sp_detach_db将数据库从SQL Server中分离,然后将相关文件拷贝到备份路径下 注:SQL Server的存储过程是一个被命名的存储在服务器上的T-SQL语句集合,是封装重复性工作的一种方法可以使EXECUTE命令进行执行利用“分离/附加”工具,具体格式如下: 分离 EXECUTE sp_detach_db [@dbname=]’dbname’ 附加 EXECUTE sp_attach_db [@dbname=]’dbname’, [@filenamel=]’filename_n’,||,SQL数据备份的实现方法,,利用“分离/附加”工具实现,利用“备份/恢复”管理工具实现,,分离,附加,,恢复,利用“备份”工具,这是SQL Server最基本的备份策略 “备份”是将数据库、事务日志等拷贝到备份介质上,当数据遭到破坏时再使用“恢复”将数据还原到原来的状态 使用“备份”管理工具备份数据,要求用户必须有对数据库备份的权限,即只能是系统管理员、数据库所有者或拥有数据库备份权限的其他用户。
备份的类型包括完全备份、差异备份、事务日记备份和文件和文件组备份四种方式 用户可以根据自己的需要以及实际条件灵活运用以上几种方式进行组合备份使用完全备份,完全备份即备份所选数据库的所有数据和对象 每一个完全备份的开始时间与其前一个完全备份的终止时间相一致 完全备份是唯一可以在master数据库上执行的备份类型 完全备份速度慢,占用磁盘空间大是其他备份类型的基础完全备份,完全备份是按照以下顺序执行的: ①在开始存储数据库时启动备份操作,并记录这个时间 ②连续从介质中读存储在数据页面中的数据和对象在这里,备份过程不会跟踪可能在该过程中修改文件的任何事务页面照原样写入备份介质中,直到所有信息都被存储完毕其结构是一个快速的备份操作,但是数据页面与不同的即时点一致 ③在复制了所有数据页面之后,备份的数据与某个单独的即时点一致(为了保证事务一致性和数据完整性)现在,可以从事务日志中获得在备份操作开始时对数据进行的所有更改,并且,可以将这些更改记录在备份文件的末尾,其结果是获得一个数据库备份文件,该文件与备份操作终止时获得的文件一致完全备份过程示意图,①记录开始时间,②按照顺序备份数据页,,,(并发数据事务被记录在 日志中,但是没有被备份),事务日志,备份文件,③最后的数据更改被附加 到备份文件的末尾。
在结 束时,备份数据在逻辑上 是一致的完全备份,虽然完全备份确实是将信息存储在事务日志中,但是它们并没有在操作结束时截断日志 如果只在数据保护计划中使用完全备份,那么必须将定期切断事务日志作为一个单独的操作进行 为了使管理更加容易,可以安排这项工作,使其自动完成 或者,如果确定不需要使用其他备份类型,那么可以为数据库设置Truncate Log on Checkpoint选项差异备份,差异备份记录自从上一次完全备份以后数据库发生的所有更改 差异备份速度快,占用磁盘空间小 在还原之后,数据库所处的状态与完成备份那一时刻的状态一致差异备份,下图显示了如何还原一个完全备份,然后还原一个差异备份,这样就可以产生一个一致的数据库还原完全备份和差异备份,差异备份,数据库备份与恢复流程如下所示:,重做恢复点 之后的事务,||,事务日志备份,事务日志备份用来记录自上一次事务日志备份之后所发生的事务(数据更改) 同差异备份一样,事务日志备份速度快,占用空间小 执行事务日志备份一个很大的优点就是能够执行即时点还原事务日志备份,下图显示了进行即时点还原的过程以及所需要的文件:,执行即时点还原,||,差异备份与事务日志备份的异同,文件和文件组备份,文件实际存储在硬盘上,每个数据库都必须有一个主要数据文件(.mdf)和日志文件(.ldf),还可以有次要数据文件(.ndf)。
文件组是一个逻辑概念,出于分配和管理目的,可以将数据库文件分成不同的文件组 文件组是抽象的,它是在数据库中对文件进行分组的一种管理机制可以指定文件组对应的具体数据库文件,而数据表实际上是保存在文件组对应的数据库文件中 对于表等数据,可以指定储存于特定的文件组中,但不能指定存储于特定的文件中文件和文件组备份,在首次建数据库,或者以后将更多文件添加到数据库时,可以创建文件组 SQL Sever有两种类型的文件组:主要文件组(primary)和用户定义文件组在没有特殊定义的情况下,primary为默认文件组,新建的表将自动保存于默认文件组中文件和文件组备份,文件和文件组备份允许用户只备份数据库中的另一个文件或文件组,通常用在具有较高要求的超大型数据库中 在某些情况下,数据库是如此之大,以至于随时执行完全备份是不可行的文件和文件组备份允许用户通过一次这项操作从这样的数据库中备份一个或多个文件 这种备份策略使用户可以只还原已损坏的文件或文件组,而不还原数据库的其余部分,从而加快了恢复的速度文件和文件组备份,但当丢失了整个数据库的数据时,那么需要分别还原每一个文件 例如,如果数据库由几个在物理上位于不同磁盘上的文件组成。
当其中一个磁盘发生故障时,只需要还原发生了故障的磁盘上的文件,但文件和文件组备份和还原操作必须与日志备份一起使用文件和文件组备份,下图显示了使用多个文件的数据库的结构请注意,各个表都存储在具体的文件组中在多个物理文件上存储的数据库对象,文件和文件组备份,下表显示了一个备份时间表的例子 对于使用有限的硬件资源和其他资源来管理大型数据库而言,执行文件和文件组备份的功能为其提供了灵活性用于包含多个文件数据库的备份时间表,||,四种备份方式的比较,组合备份操作,小型数据库的简单备份可采用只用完全备份或完全备份与事务日志备份相结合的方案 大型数据库的备份可综合采用完全备份、差异备份以及事务日志备份的方案数据库的还原模式,SQL Sever 支持三种主要的数据库还原模式:,使用T-SQL语言执行备份,完整备份 backup database database_name to disk ='d:\1.bak' 差异备份 backup database database_name to disk ='d:\1.bak' with differential 事务日志备份 backup log database_name to disk='d:\1.bak' 文件与文件组备份 backup database database_name filegroup = 'primary' to disk ='d:\1.bak',使用T-SQL语言执行恢复,从完全或差异备份中恢复 restore database database_name from disk = 'd:\1.bak' with replace 恢复事务日志 restore log database_name from disk='d:\1.bak' 恢复文件或文件组 restore database database_name filegroup = 'primary' from disk='d:\1.bak',学习体会,SQL Sever中数据备份与恢复的操作并不复杂,但难点在于对各种方式的相关概念以及过程的理解,只有在正确全面的理解了这些概念的基础上,设计出来的备份与还原方案才能在保持数据的完整性和一致性的基础上保证数据的安全性。
在实际应用中,数据备份与还原方案的设计取决于用户或企业对数据安全性的要求或各种外界条件的限制,如何把握好性能与安全的平衡是关键全篇结束, 谢谢大家!,。












