《数据库的备份和恢复.ppt》由会员分享,可在线阅读,更多相关《数据库的备份和恢复.ppt(35页珍藏版)》请在三一办公上搜索。
1、第九章数据库的备份和恢复,主要内容 1.SQL Server备份的基本概念 2.备份设备的概念和分类 3.如何实施数据备份 4.如何从备份的数据中恢复数据 5.恢复系统数据库 教学目标 掌握数据备份的方法 掌握从备份中恢复数据的方法和恢复系统数据库的方法,常见的造成数据库损坏的因素有:,事务内部的故障系统故障介质故障(硬故障)计算机病毒 用户操作错误,数据库故障,数据库恢复技术,问题一:如何建立备份数据?,问题二:如何利用备份数据实施数据库恢复?,9.1 备份的概述,1.备份的定义,备份是指制作数据库结构、对象和数据的拷贝,以便在数据库遭到破坏的时候能够修复数据库。,2.备份的分类,备份可以分
2、为种类型:,静态备份:备份期间不允许对数据库有任何存取、修改活动的备份方式,动态备份:备份期间可以对数据库有存取或修改,即备份和用户事务可以并发执行,1、静态备份和动态备份,海量备份:备份全部数据库,增量备份:每次只备份上一次更新过的数据,2、海量备份和增量备份,.何时备份,周期性数据库备份,数据库备份是十分耗费时间和资源的,不能频繁进行。应该根据数据库的使用情况确定一个备份的周期。,数据库的不定期备份,在数据库发生以下变化以后,应该进行数据库的备份:,创建、修改、删除数据库前应该备份数据库。,创建了用户自定义对象。,增加或删除服务器的系统存储过程。,修改了master、msdb、model数
3、据库。,9.2 备份设备,备份设备(backup device)是指SQL Server中存储数据库和事务日志备份拷贝的载体。,备份设备可以被定义成本地的磁盘文件、远程服务器上的磁盘文件、磁带或者命名管道。,创建备份时,必须选择存放备份数据的备份设备。当建立一个备份设备时,需要给其分配一个逻辑名和一个物理名。,1.备份设备的类型,)磁盘设备,磁盘备份设备是指被定义成备份设备文件的硬盘或其它磁盘存储媒体。引用磁盘备份设备与引用任何其它操作系统文件是一样的。,如果在网络上将文件备份到远程计算机上的磁盘,需使用通用命名规则名称,以 ServernameSharenamePathFile 格式指定文件
4、的位置。,2)磁带设备,磁带备份设备的用法与磁盘设备相同,但必须将磁带设备物理连接到运行 SQL Server 实例的计算机上。SQL Server不支持磁带设备的远程备份。,SQL Server基于Windows98的桌面版本中,不支持磁带备份设备。若要将SQL Server的数据备份到磁带,应使用 Windows NT 4.0 或 Windows 2000 支持的磁带备份设备或磁带驱动器。,第一个安装到计算机上的磁带设备被分配的名字是.Tape0,第二个磁带设备的名字是.Tape1,以后安装的磁带设备的命名以此类推。,3)命名管道备份设备,SQL Server系统提供了把备份放在Name
5、Pipe命名管道上的能力,允许第三方软件供应商提供命名管道备份设备来备份和恢复SQL Server数据库。但要注意,命名管道备份设备不能通过企业管理器创建和管理。,展开服务器组,然后展开服务器。展开“管理”文件夹,右击“备份”,然后单击“新建备份设备”命令。,1)使用企业管理器建立备份设备,.建立备份设备,在“名称”框中输入该备份设备的名称,这是备份设备的逻辑名。如果建立一个磁盘备份设备,单击“文件名”,执行下列操作之一以确定备份设备的物理名。,注意:如果窗口中没有列出磁带设备,则表明本地计算机无法检测到磁带设备。,2)使用T-SQL语句建立备份设备,系统存储过程sp_addumpdevice
6、可以用来添加备份设备。,其语法形式如下:sp_addumpdevice device_type,logical_name,physical_name,device_type:备份设备的类型。可以是以下三种类型中的一种:disk 以硬盘文件作为备份设备;pipe 命名管道备份设备;tape 磁带备份设备。,logical_name:备份设备的逻辑名,用于SQL Server管理备份设备。,physical_name:备份设备的物理名称。物理名称必须遵照操作系统文件名称的规则或者网络设备的通用命名规则,并且必须包括完整的路径。,【例】分别创建一个本地磁盘、网络磁盘和磁带备份设备。,/*创建本地磁盘
7、备份设备*/,USE StudentEXEC sp_addumpdevice disk,DiskBak_Student,c:dumpStu.bak,/*创建一个磁带备份设备*/,EXEC sp_addumpdevice tape,TapeBak_Student,.tape0,/*创建一个网络磁盘备份设备*/EXEC sp_addumpdevice disk,NetBak_Stu,BackSrvSQLBakStu.bak,.管理备份设备,)列出备份设备 可以使用企业管理器和执行系统存储过程sp_helpdevice来列出服务器上的备份设备。使用企业管理器列出备份设备的步骤如下:展开服务器组,选择
8、并连接一个服务器展开“管理”,单击“备份”将显示服务器上的所有备份设备。,)查看备份设备信息和删除备份设备,使用T-SQL语句,使用RESTORE FILELISTONLY和RESTORE HEADERONLY可分别查看备份设备中备份集内包含的数据库和事务日志文件列表以及查看特定备份设备上所有备份集的备份首部信息,例:RESTORE FILELISTONLY From DiskBak_Stu,RESTORE HEADERONLY From DiskBak_Stu,删除备份设备sp_dropdevicelogicalname=device,/*删除建立的磁带备份设备TapeBak_Student
9、*/,EXEC sp_dropdevice TapeBak_Student,使用企业管理器,)展开服务器组,然后展开服务器)展开“管理”,然后单击“备份”)在详细信息窗格中右键单击特定的命名备份设备,然后根据需要可进行相关信息的查看以及删除操作,9.3 备份类型,SQL Server 支持的备份类型包括(4类):,完整数据库备份 备份包括事务日志在内的整个数据库。差异数据库备份 在完整数据库备份之间执行差异数据库备份。事务日志备份 日志备份序列提供了连续的事务信息链,可支持从数据库、差异或文件备份中快速恢复数据。数据库文件和文件组备份,1 完整数据库备份,与事务日志备份和差异数据库备份相比,完
10、整数据库备份中的每个备份使用的存储空间更多。另一方面,由于完整数据库备份不能频繁地创建,因此,不能最大程度地恢复丢失的数据。,完整数据库备份是指所有的数据库对象、数据和事务日志都将被备份。,特点:,一般来说完整性备份应该与后面的备份方法结合使用才能最大程度地保护数据库数据,只有以下几种情况下可以单独使用:,)系统中所存数据重要性很低)系统中所存的数据可以很容易再创建)数据库不经常被修改,差异备份,差异数据库备份只记录自上次完整数据库备份后发生更改的数据。,在执行差异数据库备份时注意如下几点:,创建定期的数据库备份。在每个数据库备份之间定期创建差异数据库备份。应该在两个差异数据库备份的时间间隔内
11、执行事务日志备份,把数据损失的风险降到最小。,事务日志备份,事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录。,采用事务日志备份,在故障发生时尚未提交的事务将会丢失。所有在故障发生时已经完成的事务都将会被恢复自动恢复。,一般情况下,事务日志备份比完整数据库备份使用的资源少。,可以使用事务日志备份将数据库恢复到特定的即时点或恢复到故障点时的状态。,作用:,事务日志备份有时比完整数据库备份大。,4数据库文件和文件组备份,SQL Server 2000支持备份或还原数据库中的个别文件或文件组。,这是一种相对较完善的备份和还原过程,通常用在具有较高可用性要求的超大型数据库(VLDB)中
12、。,如果可用的备份时间不足以支持完整数据库备份,则可以在不同的时间备份数据库的子集。,注意:文件备份和还原操作必须与事务日志备份一起使用。,还可以从完整数据库备份集中还原文件和文件组。,9.4 执行备份,1 备份前的准备,为了将系统安全、完整地备份,应该在具体执行备份之前,根据系统的环境和实际需要制定一个切实可行的备份计划,确保数据库的安全。,备份计划主要考虑以下几个方面:,确定备份的频率。确定备份的内容。确定备份的介质。确定备份的方式。确定备份采用动态备份还是静态备份。,估计备份需要的存储空间量。确定备份的人员。应该指定专人负责数据库的备份,一般只有下列角色的成员才可以备份数据库:服务器角色
13、sysadmin、数据库角色db_owner和db_backupoperator。是否使用备份服务器。确定备份存储的期限和存放地点:备份应该存储安全的地方并保存适当的期限。,2 使用企业管理器进行备份,展开服务器组,然后展开服务器。展开“数据库”文件夹,右击要备份的数据库名,指向“所有任务”子菜单,然后单击“备份数据库”命令。,在“名称”框内,输入备份集名称。在“描述”框中输入对备份集的描述(可选)。,在“目的”选项下,单击“磁带”或“磁盘”。如果不能选择,则有可能是因为没有磁带设备。然后指定备份目的地。如果没出现备份目的地,则单击“添加”以添加现有的目的地或创建新目的地。,在“重写”选项下,
14、如单击“追加到媒体”,则将备份追加到备份设备现有的备份中;如单击“重写现有媒体”,将重写备份设备中现有的备份。,选择“调度”复选框,设置备份操作在以后执行或定期执行(可选)。,9.5 从不同备份中恢复数据库,数据库恢复是数据库管理系统管理的另一项重要工作,数据库恢复是在非正常状态下进行的,比如硬件故障、软件瘫痪以及误操作,执行数据库恢复以前,应注意以下两点:,在数据库恢复前,应该删除故障数据库,以便删除对故障数据库的任何引用。数据库恢复之前,必须限制用户对数据库的访问,数据库的恢复是静态的,应使用企业管理器或系统存储过程sp_dbotion设置数据库为单用户。,还原差异数据库备份的顺序为:先还
15、原最新的完整数据库备份,然后还原最后一次的差异数据库备份。,还原事务日志备份的顺序为:先还原最新的完整数据库备份,然后还原最后一次完全备份之后创建的所有事务日志备份,按顺序恢复完全备份之后发生在数据库上的所有操作。,9.5 恢复系统数据库,在备份用户数据库时需要备份系统数据库。这使得在系统或数据库发生故障(例如,如果硬盘发生故障)时可以重建系统。需要经常备份的系统数据库包括master和msdb。如果model数据库被修改过,也需要进行定期备份。,对master数据库进行备份的操作与备份用户数据库相似,需要注意的是只能创建master数据库的完整数据库备份。如果master数据库被严重损坏,则
16、可能无法启动SQL Server实例。,有两种方法将 master 数据库返回到可用状态:,从当前备份还原用重建主控实用工具完全重建,重建主控实用工具,关闭SQL Server2000,打开运行对话框,输入Rebuildm.exe,该工具位于Program FilesMicrosoft SQL Server80ToolsBinn 文件夹中,使用重建主控实用工具重建master数据库,会导致以前存储在 master 数据库中的所有数据永久丢失。SQL Server仍能访问其它数据库。,如果系统可以访问master数据库(至少部分可用)而能够启动SQL Server实例,则可以从完整数据库备份中还
17、原master数据库。,如果由于master数据库严重损坏而无法启动SQL Server实例,怎么办?,首先需要使用重建主控实用工具重建master数据库,然后才可以用普通方法还原当前数据库备份。,生成SQL脚本,在企业管理器中,打开数据库,在某个(些)表上点右键-复制,然后在记事本或查询分析器中粘贴,就可以获得创建该表的 SQL 语句。,在企业管理器中,打开数据库,在某个(些)表上点右键-所有任务-生成 SQL 脚本,同样可以获得创建该表的 SQL 语句。,使用“生成 SQL 脚本”,功能要强大得多,可以删除目的表,可以包含索引,可以包含触发器等等。另外,可以说“生成 SQL 脚本”是智能的,它的目的就是,根据这个数据库的表在另外一个数据库中创建一个相同或相似的表。,导入导出数据,