资源描述
第十四章 数据库备份与恢复及自动管理,14.1 数据库备份概述,计算机系统的各种软硬件故障、用户误操作以及恶意破坏是不可避免的,这将影响到数据的正确性甚至造成数据损失、服务器崩溃的致命后果。备份和恢复对于保证系统的可靠性具有重要的作用。,14.2 备份前的准备工作,SQL Server支持单独使用一种备份方式或组合使用多种备份方式。在执行备份之前选择的恢复模型,决定总体备份策略、可以使用的备份类型以及创建备份设备。,14.2.1 设置恢复模型,SQL Server 2000包括三种恢复模型,每种恢复模型都能够在数据库发生故障的时候恢复相关的数据。 1.简单恢复模型 2.完全恢复模型 3.大容量日志记录恢复模型,14.2.1 设置恢复模型,14.2.2 创建备份设备,创建备份时,必须选择存放数据的备份设备(媒体)。在恢复数据库的时候,SQL Server 使用备份重建数据库文件。SQL Server将数据文件、事务日志备份到磁盘和磁带设备上。 1.磁盘设备 2.磁带设备 3.逻辑设备和物理设备,14.2.3 执行备份的权限,下列角色中的成员具有备份数据库的权限: 固定服务器角色 sysadmin 固定数据库角色 db_owner 固定数据库角色db_backupoperator 除了上述三种角色以外,用户可以创建其他角 色,并且为其分配备份数据库的许可权限。,14.3 数据库备份的时机,系统数据库储存了SQL Server 的服务器配置信息、用户登录信息等、用户数据库信息、作业信息等等,在更改服务器配置和修改系统数据库前后应当注意备份它们。,14.3.1 何时备份系统数据库,1.修改master数据库之后 master数据库包含了SQL Server 中全部数据库的相关信息 。 2.修改msdb数据库之后 msdb数据库包含SQL Server 代理程序调度的作业、警报和操作员的信息。 3.修改model数据库之后 model 数据库是系统中所有数据库的模板。,14.3.2 何时备份用户数据库,1.创建数据库之后 在创建数据库或装载数据之后,都应当备份数据库。 2.创建索引之后 创建索引的时候分析以及重新排列数据的过程消耗时间和系统资源。 3.清理事务日志之后 使用BACKUP LOG WITH TRUNCATE_ONLY 或BACKUP LOG WITH NO_LOG语句清理事务日志后,用户应当备份数据库。 4.执行大容量数据操作之后 诸如使用SELECT INTO语句大批量装载数据、或者使用WRITETEXT、UPDATETEXT语句进行大对象数据处理时,SQL SERVER 不会将数据的活动记录到日志。,14.4 数据库备份的方式,SQL Server 的备份过程是动态的,当数据库处于联机状态或用户正在修改数据库的时候,可以执行备份操作。通过企业管理器和BACKUP语句执行备份。 BACKUP 语法结构和常用选项 BACKUP DATABASE database_nameTO WITH , DESCRIPTION = text , DIFFERENTIAL , EXPIREDATE = date , MEDIAPASSWORD = mediapassword , PASSWORD = password , INIT | NOINIT , NAME = backup_set_name ,14.4 数据库备份的方式,此表描述了BACKUP语句的常用选项:,14.4.1 执行完全数据库备份,当用户执行完全数据库备份时,SQL Server 将备份数据库的所有数据文件和在备份过程中发生的任何活动。系统出现故障时,完全数据库备份是恢复数据库的基线,恢复日志备份和差异备份时都依赖完全数据库备份。,14.4.1 执行完全数据库备份,14.4.1 执行完全数据库备份,使用企业管理器的创建完全数据库备份的步骤为: 1.展开服务器组,然后展开服务器。 2.展开【数据库】文件夹,右击Northwind数据库,指向【所有任务】子菜单,然后单击【备份数据库】命令。 3.在【名称】框内,输入备份集名称。在【描述】框中输入对备份集的描述。(可选) 4.在【备份】选项下单击【数据库完全】。 5.在【目的】选项下,单击【磁带】或【磁盘】,然后指定备份目的地。 6.在备份【目的】列表框旁单击【添加】以添加备份设备Northwind_Full_DB。 7.在【重写】选项下,执行下列操作之一: 8.单击【重写现有媒体】,将重写备份设备中任何现有的备份。 9.选择【调度】复选框调度备份操作在以后执行或定期执行。,14.4.2 执行差异备份,差异备份只备份自最近一次完全数据库备份以来被修改的那些数据。当数据更改频繁的时候,用户应当执行差异备份;差异备份的优点在于备份设备的容量更小,以减少数据损失并且恢复的时间更快。,14.4.3 执行日志备份,1.备份事务日志 日志备份是备份自上次事务日志备份后到当事务日志末尾的部分。 2.清理事务日志 BACKUP LOG 语句有双重的目的,不仅可以备份事务日志,并且在事务日志满的时候,用户还可以利用它清理事务日志。,14.4.4 执行文件/文件组备份,当用户拥有超大型数据库(数据库拥有多个数据文件、多个文件组)的时候,或者每天24小时数据都在变化,这时执行完全数据库备份是不切实际的,应当执行数据库文件或文件组备份。,14.5 SQL Server故障恢复,在系统出现故障或者被关闭之后,当用户重新启动它的时候SQL Server将自动启动还原进程保证数据的一致性。当用户手动执行恢复操作之前,应当验证备份的有效性,确认备份中是否包含有效的信息,并且执行某些特定的任务以启动恢复进程。,14.5.1 SQL Server崩溃后自启动的恢复进程,系统出现故障或被关闭时,数据库中的数据可能存在着两种不一致的状态: 已经提交的事务中有一部分数据尚未写入到数据库。 未提交的事务中有一部分数据已经写入到数据库。,14.5.2 恢复数据库前的准备工作,1.验证备份的有效性 在恢复数据库之前,用户必须保证备份文件的有效性。通过企业管理器,用户可以查看备份设备的属性页,这样有助于避免还原错误的备份文件,如图所示。,14.5.2 恢复数据库前的准备工作,2.断开用户与数据库的连接 断开数据库连接的步骤: (1)展开服务器组,然后展开服务器。 (2)展开【数据库】文件夹。 (3)右击数据库,然后选择【所有任务】子菜单的【分离数据库】命令。 (4)在【分离数据库】的对话框中使用【清除】操作,强制断开所有用户和数据库的连接,如图所示。 3.备份事务日志,14.5.2 恢复数据库前的准备工作,14.5.3 恢复权限,RESTORE权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及该数据库的所有者 (dbo)。 在 BACKUP 语句中,定义备份集密码和媒体集密码为可选功能。使用密码可防止利用 SQL Server 2000 工具未经授权地执行还原操作和在媒体中添加备份集。如果指定了密码,则用户还必须提供媒体密码才能执行这些操作。,14.6 恢复数据库的方法,恢复数据库的操作通过企业管理器或者T-SQL语句执行,用户必须知道执行备份的类型并核实是否存在准备恢复的备份,一般情况下以完全数据库备份为基础,根据备份策略确定数据库恢复的方法,用户可以指定恢复过程中与备份类型的相适应的选项。,14.6 恢复数据库的方法,下表描述了RESTORE语句常用的选项,14.6.1 从全库备份中恢复,恢复完全数据库备份的时候,SQL Server重新创建数据库及其全部数据文件和事务日志文件,并把他们放置在原来的位置。 例:从Northwind_Full_DB备份设备恢复Northwind数据库,恢复数据库的T-SQL语句为: RESTORE DATABASE Northwind FROM Northwind_Full_DB WITH RECOVERY,14.6.2 从差异备份中恢复,从差异备份恢复数据库的时候,SQL Server 只恢复数据库中自最近一次完全数据库备份以来数据库发生更新的部分,恢复差异备份只需要较少的脱机时间。 在恢复差异备份之前,首先恢复完全数据库备份,恢复差异备份时的语法与恢复完全数据库备份的语法基本相同,个别选项不同。,14.6.3 从日志备份中恢复,恢复日志备份的时候,SQL Server 只恢复事务日志中所记录的数据更改。恢复日志备份的时候,首先恢复完全数据库备份,如果存在差异备份,则恢复差异备份,最后恢复日志备份。,14.6.4 从文件或文件组备份中恢复,对于超大型数据库,以及只有在特定文件被破坏的情况下,利用从文件或文件组恢复数据库。从文件或文件组备份中恢复数据的时候,应该将包含索引和表的文件组备份作为一个单元来还原,为保证数据一致性,必须恢复自文件或文件组备份以来的全部日志备份。,14.6.5 直接拷贝文件的备份和恢复,在SQL Server 2000中,由于数据文件和日志文件都是普通的操作系统文件,当数据库被从SQL Server 实例中分离出来时,可以将数据文件和日志文件拷贝出来,达到备份数据库的目的。分离数据库的方法是: 1.分离数据库并拷贝数据文件和日志文件 2.附加数据库到SQL Server实例,14.6.6恢复系统数据库,1.从备份中恢复系统数据库 2.重建系统数据库,14.7 自动化管理任务,自动化管理就是按照计划对可预测的管理职责和服务器事件作出响应。 支持自动化管理任务的功能有: 1.SQL Server Agent服务 2.操作员 3.作业 4.警报,14.7.1 SQL Server Agent服务,SQL Server 代理程序执行管理员定义的作业和警报。SQL Server 代理程序在操作系统中作为SQLServerAgent服务运行。 1.设置启动服务帐户 2.设置邮件系统 (如右图),14.7.1 SQL Server Agent服务,3.设置高级选项,14.7.2 操作员,操作员是为 SQL Server 向管理员报告任务和警报所使用的电子邮件地址和寻呼地址。,14.7.3 设计和规划作业,使用作业定义管理任务。每项作业都有一个或多个步骤;每个步骤都执行一个操作,该操作可以使用 T-SQL 语句、Windows 命令、可执行程序、复制代理程序或 ActiveX 脚本。作业可以只运行一次,也可以按照调度的时间间隔运行,或者指定在服务器空闲时运行。,14.7.4 创建警报响应事件,SQL Server 代理程序将Windows应用程序日志中的 SQL Server 事件与管理员定义的警报进行比较。如果两者匹配,则产生警报,执行警报中所指定的作业,并且通知操作员。 1.利用SQL Server 错误号定义警报 2.利用严重级别定义警报 3.创建用户自定义错误的警报,
展开阅读全文