当前位置:
文档之家› 第12章 数据库的备份和恢复
第12章 数据库的备份和恢复
12.1.2 备份与恢复的方式
1.备份类型
(1)完整数据库备份 完整数据库备份就是备份整个数据库。它备份数据库 文件、文件的地址以及事务日志的某些部分(从备份开始 时所记录的日志顺序号到备份结束时的日志顺序号)。这 是任何备份策略中都要求完成的第一种备份类型,因为其 他所有备份类型都依赖于完整备份。换句话说,如果没有 执行完整备份,就无法执行差异备份和事务日志备份。 完整数据库备份的主要优点是简单,备份是单一操作 ,可按一定的时间间隔预先设定,恢复时只需一个步骤就 可以完成。若数据库不大,或者数据库中的数据变化很少 甚至是只读的,使用完整数据库备份是最佳选择。
(3)大容量日志恢复模式 不支持时间点恢复。在“大容量日志”模式下,与“ 完整模式”类似,可以执行完整备份、差异式备份和事务 日志备份。但是这种模式,对于SELECT INTO、BULK INSERT、WRITETEXT和UPDATETEXT等大批量数据复制的操 作,在事务日志中会以节省空间的方式来记录,而不像“ 完整”模式时记录得那么完整。因此,对于这些操作的恢 复会受影响,无法恢复到特定的时间点。
12.1 备份与恢复的基本概念
备份就是制作数据库结构和数据的拷贝,以便 在数据库遭到破坏时能够修复数据库。对于计算 机用户来说,对一些重要文件、资料定期进行备 份是一种良好的习惯。如果出现突发情况,比如 系统崩溃、系统遭受病毒攻击等,使得原先的文 件遭到破坏甚至于全部丢失,启动备份文件进行 数据恢复,就可以节省大量的时间和精力。
在SQL Server系统中,只有获得许可的角色才可以 备份数据,分别是以下几种:
• 固定的服务器角色sysadmin(系统管理员); • 固定的数据库角色db_owner(数据库所有者); • 固定的数据库角色db_backupoperator(允许进行数据库备 份的用户)。 当然,管理员也可以授权某些用户来执行备份工作。
(2)差异备份 差异备份并不对整个数据库执行完整的备份,它只是 对上次数据库备份后发生更改的部分进行备份,它是用来 扩充完整数据库备份或数据库事务日志备份的方法。因为 只保存改变内容,所以这种类型的备份速度比较快,对于 一个经常修改的数据库,采用差异备份策略可以减少备份 和恢复时间。 (3)事务日志备份 事务日志备份是所有数据库修改的系列记录,用来在 恢复操作期间提交完成的事务以及回滚未完成的事务。这 种方法不需很频繁地定期进行数据库备份,而是在两次完 整数据库备份期间,进行事务日志备份,所备份的事务日 志记录了两次数据库备份之间所有的数据库活动记录。
(1)完整备份和差异备份 完整备份和差异备份的语法格式如下:
BACKUP DATABASE {database_name | @database_name_var } TO < backup_device > [ , …n ] [ < MIRROR TO clause > ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | < general_WITH_options > [ , …n ] } ] COPY_ONLY | { COMPRESSION | NO_COMPRESSION } | DESCRIPTION = { 'text' | @text_variable } | NAME = { backup_set_name | @backup_set_name_var } | PASSWORD = { password | @password_variable } | { EXPIREDATE = { 'date' | @date_var } | RETAINDAYS = { days | @days_var } } ]
(2)文件和文件组备份 备份文件和文件组的语法格式和完整备份、差异备份 的代码基本一样,不同的是在语句“TO < backup_device >” 前多了一句“<file_or_filegroup>”,该语法块里的参数如下 。 FILE:备份的数据库逻辑文件名。 FIELGROUP:备份的数据库文件组名。 (3)事务日志备份 事务日志备份和完整备份、差异备份的代码基本一样 ,只是将完整备份、差异备份中的BACKUP DATABASE修改为 BACKUP LOG。
• 设计备份策略的指导思想是:以最小的代价恢复数据库。 备份和恢复是相互联系的,因此备份的策略与恢复应结合 起来考虑。 • 如何针对不同的需求设计出最佳的备份策略?首先要考虑 的是数据库使用何种恢复模式。SQL Server提供三种数据 库恢复模式:简单恢复模式、完整恢复模式和大容量日志 恢复模式。 • 通常,数据库使用完整恢复模式或简单恢复模式。一般来 说如果是测试或者是小型正式用数据库则会使用简单恢复 模式,而完整恢复模式则应用于大中型正式数据库,当然 也可以选择使用大容量日志恢复模式作为互补。制定最佳 的数据库备份策略还要考虑到数据库的数据恢复目标要求 ,数据的使用方式,是否对事务日志进行管理等。
(3)备份操作 具体步骤如下: ①连接到相应的SQL Server服务器实例,在“对象资源管 理器”中,展开实例中的“数据库”节点,选择“学生选 课”节点,右击选择“任务”→“备份”命令,出现“备 份数据库”对话框。如图2所示。 ②单击“常规”选择页,在“数据库”下拉列表中选择“ 学生选课”选项;在“备份类型”下拉列表中选择“完整 ”选项;在“备份组件”区域选中“数据库”单选按钮; 在“目标”区域已经给出了默认的备份文件名,选中后, 单击“删除”按钮删除;在“目标”区域单击“添加”按 钮,打开“选择备份目标”对话框,选中“备份设备”单 选按钮,并在对应的下拉列表框中选择相应的备份设备选 项,单击“确定”按钮 。如图3所示。
12.2 备份数据库
1. 使用SQL Server Management Studio备份数据库
(1)创建备份设备 备份设备是用来存储数据库、事务日志或者文件和文件组 备份的存储介质,所在执行备份数据之前,首先要创建备 份设备和管理备份设备。 创建设备的方法有两种: 一是使用SQL Server Management Studio工具创建; 二是使用系统存储过程sp_addumpdevice创建。
12.1.1备份策略的制定
数据库备份就是创建完整数据库的副本,并将 所有的数据项都复制到备份集,以便在数据库遭 到破坏时能够恢复数据库。为了保证数据的安全 ,数据库管理员应定期对数据进行备份。关于备 份需要遵循两个简单规则: 尽早并且经常备份; 不要只备份到相同磁盘的一个文件中,应该在完 全分离的位置还有一个副本,以确保备份安全。
(2)管理备份设备 ①查看备份设备
可以通过两种方式查看服务器上所有备份设备,一种是使 用SQL Server Management Studio工具,另一种是使用系统 存储过程SP_HELPDEVICE。 ②删除备份设备 如果不再需要的备份设备,可以将其删除,删除备份设备 后,其上的数据都将丢失。删除备份设备也有两种方式, 一种是使用SQL Server Management Studio工具,另一种是 使用系统存储过程SP_DROPDEVICE。
• •
• •
• • • • • • • • • •
其中,各参数说明如下。 {database_name | @database_name_var}:指定要备份的数据库名或存放数据库名称的 变量。 <backup_device>:指定用于备份的逻辑备份设备名或物理备份设备名。 <MIRROR TO clause>::=MIRROR TO < backup_device> [,…n]:指定将要镜像TO子句中指定 备份设备的一个或多个备份设备。最多可以使用三个MIRROR TO子句。 WITH选项:指定要用于备份操作的选项。 DIFFERENTIAL:只能与BACKUP DATABASE一起使用,指定数据库备份或文件备份只包含 上次完整备份后修改的数据库或文件部分,即要做差异备份。默认情况下,BACKUP DATABASE创建完整备份。 <general_WITH_options>:指定一些诸如是否仅复制备份、是否对此备份执行备份压缩 、说明备份集的自由格式文本等操作选项。 COPY_ONLY:指定备份为“仅复制备份”,该备份不影响正常的备份顺序。仅复制备份 是独立于定期计划的常规备份而创建的。仅复制备份不会影响数据库的总体备份和恢 复过程 COMPRESSION| NO_COMPRESSION:显示是否启用备份压缩。 DESCRIPTION:指定说明备份集的自由格式文本。该字符串最长可以有 255 个字符。 NAME:指定备份集的名称。名称最长可达 128 个字符。如果未指定 NAME,它将为空 。 PASSWORD:为备份集设置密码。PASSWORD 是一个字符串。 EXPIREDATE:指定备份集到期和允许被覆盖的日期。 RETAINDAYS:指定必须经过多少天才可以覆盖该备份媒体集。
图1 创ห้องสมุดไป่ตู้备份设备
• 使用系统存储过程SP_ADDUMPDEVICE创建备份设备: SP_ADDUMPDEVICE的基本语法如下: SP_ADDUMPDEVICE [ @devtype = ] 'device_type' , [ @logicalname = ] 'logical_name' , [ @physicalname = ] 'physical_name' [ , { [ @cntrltype = ] controller_type | [ @devstatus = ] 'device_status' } ]
(4)数据库文件或文件组备份
SQL Server 2008可以备份数据库文件和文件组而不是 备份整个数据库。如果正在处理大型数据库,并且希望只 备份文件而不是整个数据库以节省时间,则选择使用这个 备份。这种方法只备份特定的数据库文件或文件组,同时 还要定期备份事务日志,这样在恢复时可以只恢复已损坏 的文件,而不用恢复数据库的其余部分,从而加快了恢复 速度。