MS SQL基础教程:备份和恢复概述

原理主要是为防止非法登录者或非授权用户对SQL Server 数据库或数据造成破坏,但在有些情况下这种安全管理机制显得力不从心。例如合法用户不小心对数据库数据做了不正确的操作或者保存数据库文件的磁盘遭到损坏或者运行SQL Server 的服务器因某种不可预见的事情而导致崩溃。所以我们需要提出另外的方案即数据库的备份和恢复来解决这种问题。本章的主要目的就是介绍备份、恢复的含义,数据库备份的种类以及备份设备等基本的概念,以及如何创建备份和恢复数据库,使读者对其有全面的了解和认识,能够自主制定自己的备份和恢复计划。

15.1.1 备份和恢复

备份和恢复组件是SQL Server 的重要组成部分。备份就是指对SQL Server 数据库或事务日志进行拷贝,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,如果数据库因意外而损坏,这些备份文件将在数据库恢复时被用来恢复数据库。

由于SQL Server 支持在线,备份所以通常情况下可一边进行备份,一边进行其它操作,但是,在备份过程中不允许执行以下操作: 创建或删除数据库文件; 创建索引; 执行非日志操作; 自动或手工缩小数据库或数据库文件大小。

  如果以上各种操作正在进行当中,且准备进行备份则备份,处理将被终止;如果在备份过程中,打算执行以上任何操作,则操作将失败而备份继续进行。

恢复就是把遭受破坏或丢失数据或出现错误的数据库恢复到原来的正常状态,这一状态是由备份决定的,但是为了维护数据库的一致性,在备份中未完成的事务并不进行恢复。

进行备份和恢复的工作主要是由数据库管理员来完成的。实际上数据库管理员日常比较重要、比较频繁的工作就是对数据库进行备份和恢复。

注意:如果在备份或恢复过程中发生中断,则可以重新从中断点开始执行备份或恢复。这在备份一个大型数据库时极有价值。

15.1.2 数据库备份的类型

在SQL Server 2000 中有四种备份类型,分别为; 数据库备份(Database Backups) 事务日志备份(Transaction Log Backup) 差异备份(Differential Database Backups) 文件和文件组备份(File and File Group Backup) 下面我们将详细介绍其所表述的内容,并涉及到一些使用时注意事项。

1 数据库备份(Database Backups)

数据库备份是指对数据库的完整备份,包括所有的数据以及数据库对象。实际上备份数据库过程就是首先将事务日志写到磁盘上,

然后根据事务创建相同的数据库和数据库对象以及拷贝数据的过程。由于是对数据库的完全备份,所以这种备份类型不仅速度较慢,

而且将占用大量磁盘空间。正因为如此,在进行数据库备份时,常将其安排在晚间,因为此时整个数据库系统几乎不进行其它事务操作,从而可以提高数据库备份的速度。

在对数据库进行完全备份时,所有未完成的事务或者发生在备份过程中的事务都不会被备份。如果您使用数据库备份类型,

则从开始备份到开始恢复这段时间内发生的任何针对数据库的修改将无法恢复。所以我们总是在一定的要求或条件下才使用这种备份类型,比如: 数据不是非常重要,尽管在备份之后恢复之前数据被修改,但这种修改是可以忍受的; 通过批处理或其它方法,在数据库恢复之后可以很容易地重新实现在数据损坏前发生的修改; 数据库变化的频率不大。

在进行数据库备份时,如果您在备份完成之后又进行了事务日志备份,则在数据库备份过程中发生的事务将被备份:但若只进行数据库备份,常将数据库选项“trunc.log onchkpt” 设置为true, 这样每次在运行到检查点(checkpoint) 时,都会将事务日志截断。

注意:如果对数据一致性要求较高(将数据库恢复到发生损坏的刻),则不应使用数据库备份。

2 事务日志备份(Transaction Log Backup)

事务日志备份是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。在以下情况下我们常选择事务日志备份。 不允许在最近一次数据库备份之后发生数据丢失或损坏现象; 存储备份文件的磁盘空间很小或者留给进行备份操作的时间有限,例如兆字节级的数据库需要很大的磁盘空间和备份时间; 准备把数据库恢复到发生失败的前一点; 数据库变化较为频繁。   由于事务日志备份仅对数据库事务日志进行备份,所以其需要的磁盘空间和备份时间都比数据库备份(备份数据和事务)少得多,这是它的优点所在。正是基于此,我们在备份时常采用这样的策略,即每天进行一次数据库备份,而以一个或几个小时的频率备份事务日志。这样利用事务日志备份,我们就可以将数据库恢复到任意一个创建事务日志备份的时刻。

但是,创建事务日志备份却相对比较复杂。因为在使用事务日志对数据库进行恢复操作时,还必须有一个完整的数据库备份,而且事务日志备份恢复时必须要按一定的顺序进行。比如在上周末对数据库进行了完整的数据库备份,在从周一到本周末的每一天都进行一次事务日志备份,那么若要打算对数据库进行恢复,则首先恢复数据库备份,然后按照顺序恢复从周一到本周末的事务日志备份。

有些时侯数据库事务日志会被中断,例如数据库中执行了非日志操作(如创建索引、创建或删除数据库文件、自动或手工缩小数据库文件大小),此时应该立即创建数据库或差异备份,然后再进行事务日志备份。以前进行的事务日志备份也没有必要了。

3 差异备份(Differential Database Backups)

差异备份是指将最近一次数据库备份以来发生的数据变化备份起,来因此差异备份实际上是一种增量数据库备份。与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。通过增加差异备份的备份次数,可以降低丢失数据的风险,将数据库恢复至进行最后一次差异备份的时刻,但是它无法像事务日志备份那样提供到失败点的无数据损失备份。

但在实际中为了最大限度地减少数据库恢复时间以及降低数据损失数量,我们常一起使用数据库备份、事务日志备份和差异备份,而采用的备份方案是这样的; 首先有规律地进行数据库备份,比如每晚进行备份; 其次以较小的时间间隔进行差异备份,比如三个小时或四个小时; 最后在相临的两次差异备份之间进行事务日志备份,可以每二十或三十分钟一次。

这样在进行恢复时,我们可先恢复最近一次的数据库备份,接着进行差异备份,最后进行事务日志备份的恢复。

但是,在更多的情况下我们希望数据库能恢复到数据库失败那一时刻,那么我们该怎样做呢?下面的方法也许会有大帮助。 首先如果能够访问数据库事务日志文件则应备份当前正处于活动状态的事务日志; 其次恢复最近一次数据库备份; 接着恢复最近一次差异备份; 最后按顺序恢复自差异备份以来进行的事务日志备份。

  当然,如果无法备份当前数据库正在进行的事务,则只能把数据库恢复到最后一次事务日志备份的状态,而不是数据库失败点。

4 文件和文件组备份(File and File Group Backup)

文件或文件组备份是指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。

但是在使用文件或文件组进行恢复时,仍要求有一个自上次备份以来的事务日志备份来保证数据库的一致性。所以在进行完文件或文件组备份后应再进行事务日志备份。否则备份在文件或文件组备份中所有数据库变化将无效。

如果需要恢复的数据库部分涉及到多个文件或文件组,则应把这些文件或文件组都进行恢复。例如,如果在创建表或索引时,表或索引是跨多个文件或文件组,则在事务日志备份结束后应再对表或索引有关的文件或文件组进行备份,否则在文件或文件组恢复时将会出错。

15.1.3 备份和恢复的策略

通常而言,我们总是依赖所要求的恢复能力(如将数据库恢复到失败点) 、备份文件的大小(如完成数据库备份或只进行事务日志的备份或是差异数据库备份)以及留给备份的时间等来决定该使用哪种类型的备份。常用的备份选择方案有:仅仅进行数据库备份、或在进行数据库备份的同时进行事务日志备份,或使用完整数据库备份和差异数据库备份。

选用怎样的备份方案将对备份和恢复产生直接影响,而且也决定了数据库在遭到破坏前后的一致性水平。所以在做出该决策时,您必须认识到以下几个问题: 如果只进行数据库备份,那么将无法恢复自最近一次数据库备份以来数据库中所发生的所有事务。这种方案的优点是简单,而且在进行数据库恢复时操作也很方便; 如果在进行数据库备份时也进行事务日志备份,那么可以将数据库恢复到失败点,那些在失败前未提交的事务将无法恢复,但如果您在数据库失败后立即对当前处于活动状态的事务进行备份,则未提交的事务也可以恢复。 从以上可以看出,对数据库一致性的要求程度成为我们选择这样或那样的备份方案的主要的普遍性原因。但在某些情况下对数据库备份提出更为严格的要求,例如在处理比较重要业务的应用环境中,常要求数据库服务器连续工作,至多只留有一小段时间来执行系统维护任务,在该情况下一旦出现系统失败,则要求数据库在最短时间内立即恢复到正常状态,以避免丢失过多的重要数据,由此可见备份或恢复所需时间往往也成为我们选择何种备份方案的重要影响因素。

那么如何才能减少备份和恢复所花费时间呢?SQL Server 提供了几种方法来减少备份或恢复操作的执行时间。 使用多个备份设备来同时进行备份处理。同理,可以从多个备份设备上同时进行数据库恢复操作处理; 综合使用完整数据库备份、差异备份或事务日志备份来减少每次的需要备份的数据数量; 使用文件或文件组备份以及事务日志备份,这样可以只备份或恢复那些包含相关数据的文件,而不是整个数据库。 另外需要注意的是,在备份时我们也要决定该使用哪种备份设备如磁盘或磁带,并且决定如何在备份设备上创建备份,比如将备份添加到备份设备上或将其覆盖。

  在SQL Server 2000 中,有三种数据库恢复模式,它们分别是:简单恢复(SimpleRecovery)、 完全恢复(Full Recovery)、 批日志恢复(Bulk-logged Recovery)。

1 简单恢复(Simple Recovery)

所谓简单恢复就是指在进行数据库恢复时仅使用了数据库备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到失败点状态。当选择简单恢复模式时常使用的备份策略是:首先进行数据库备份,然后进行差异备份。

2 完全恢复(Full Recovery)

完全数据库恢复模式是指通过使用数据库备份和事务日志备份将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失,这成为对付因存储介质损坏而数据丢失的最佳方法。为了保证数据库的这种恢复能力,所有的批数据操作比如SELECT INGO、创建索引都被写入日志文件。选择完全恢复模式时常使用的备份策略是: 首先进行完全数据库备份; 然后进行差异数据库备份; 最后进行事务日志的备份。

如果准备让数据库恢复到失败时刻必须对数据库失败前正处于运行状态的事务进行备份。

3 批日志恢复(Bulk-logged Recovery)

批日志恢复在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批操作所需要的存储空间。这些批操作主要是:SELECT INTO 批装载操作(如bcp 操作或批插入操作)、创建索引针对大文本或图像的操作(如WRITETEXT、 UPDATETEXT)。选择批日志恢复模式所采用的备份策略与完全恢复所采用的恢复策略基本相同。

从以上的论述中我们可以看到,在实际应用中,备份策略和恢复策略的选择不是相互孤立的,而是有着紧密的联系。我们并不仅仅是因为数据库备份为数据库恢复提供了 “原材料”这一事实,以便在采用何种数据库恢复模式的决策中考虑该怎样进行数据库备份,更多是因为在选择该使用哪种备份类型时我们必须考虑到当使用该备份进行数据库恢复时,它能把遭到损坏的数据库“带”到怎样的状态(是数据库失败的时刻,还是最近一次备份的时刻)。但有一点我们必须强调,即备份类型的选择和恢复模式的确定都应服从于这一目标:尽最大可能,以最快速度减少或消灭数据丢失。

查看全套"MS SQL基础教程"

时间: 2024-07-30 00:27:45

MS SQL基础教程:备份和恢复概述的相关文章

MS SQL基础教程:Transact-SQL语言概述

Transact-SQL 语言中标准的SQL 语句畅通无阻.Transact-SQL 也有类似于SQL 语言的分类,不过做了许多扩充.Transact-SQL 语言的分类如下: ·变量说明 用来说明变量的命令. ·数据定义语言(DDL,Data Definition Language) 用来建立数据库.数据库对象和定义其列,大部分是以CREATE 开头的命令,如:CREATE TABLE .CREATE VIEW .DROP TABLE 等. ·数据操纵语言(DML,Data Manipulat

MS SQL基础教程:复制的概述和术语

对一个地域分散的大型企业组织来说,构建具有典型的分布式计 算特征的大型企业管理信息系统时总要解决一个很棘手的问题:如何 在多个不同数据库服务器之间保证共享数据的完整性.安全性和可用 性.之所以引发这样的问题在于企业组织存在这样的数据处理和要求: 在不同的地点对具有相同结构的本地数据库进行修改:但要保证修改 后的数据库有相同的结果.其实质就是将对本地数据库的修改体现在 其它具有相同结构的远程数据库中. 那么我们如何实现这种数据的一致性呢?答案可能有很多种,但 是包括SQL Server 在内的大多

MS SQL基础教程:备份和恢复系统数据库

系统数据库保存了有关SQL Server 的许多重要数据信息,这些数据的丢失将给系统带来极为严重的后果,所以我们也必须对系统数据库进行备份.这样一旦系统或数据库失败,则可以通过恢复来重建系统数据库.在SQL Server 中重要的系统数据库主要有master. msdb. distribution. model. 虽然tempdb 也是系统数据库但没有必要对其进行备份,因为SQL Server 每次启动都会重新创建该数据库,而当SQL Server 停止运行时,tempdb 数据库中所有数据都会

MS SQL基础教程:备份向导

我们知道备份和恢复数据库是DBA 的主要工作,但是如果您是一名DBA 新手,我们建议您在没有搞清楚到底如何进行之前,不妨使用备份向导.它能告诉您在备份时应该干些什么使用备份向导的步骤如下: (1) 启动SQL Server Enterprise Manager, 单击要登录的服务器,此时在主菜单上选择Tools, 在弹出菜单上选择Wizards 后弹出Select Wizard 对话框,如图15-7 所示. 图15-7 Select Wizard 对话框 (2) 单击Management 左边的

MS SQL基础教程:创建备份设备

在进行备份以前首先必须创建备份设备.备份设备是用来存储数据库.事务日志或文件和文件组备份的存储介质.备份设备可以是硬盘.磁带或管道.SQL Server 只支持将数据库备份到本地磁带机,而不是网络上的远程磁带机.当使用磁盘时,SQL Server 允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的. 15.2.1 用SQL Server Enterprise Manager 管理备份设备 1 使用SQL Server Enterprise Manager 创建

MS SQL基础教程:存储过程概述

在大型数据库系统中,存储过程和触发器具有很重要的作用.无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合.就 本质而言,触发器也是一种存储过程.存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快.SQL Server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程. 12.1.1 存储过程的概念 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库.中用户通过指定存储过程的

MS SQL基础教程:系统存储过程

系统存储过程就是系统创建的存储过程,目的在于能够方便地从系统表中查询信息或完成与更新数据库表相关的管理任务或其它的系统管理任务.系统过程以"sp_"_ 为开头,在Master 数据库中创建并保存在该数据库中,为数据库管理者所有.一些系统过程只能由系统管理员使用,而有些系统过程通过授权可以被其它用户所使用. 系统存储过程主要包括以下几类:(这里主要给出每类系统过程中经常使用的系统过程) 查看全套"MS SQL基础教程"

MS SQL基础教程:用户和安全性管理--SQL Server的登录认证

对任何企业组织来说,数据的安全性最为重要.安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作.因此,安全性管理与用户管理是密不可分的.SQL Server 2000 提供了内置的安全性和数据保护,并且这种管理有效而又容易. 本章主要讨论如何创建和管理用户账号,以及如何实现和管理安全性,同时包括很多技巧和注意事项,这些技巧和注意事项将使您的工作更轻松,高效. SQL Server

MS SQL基础教程:SQL Server安全性管理的途径

当在服务器上运行SQL Server 时,我们总是要想方设法去使SQL Server 免遭非法用户的侵入,拒绝其访问数据库,保证数据的安全性.SQL Server 提供了强大的内置的安全性和数据保护,来帮助实现这种理所当然的要求.从前面的介绍中我们可以看出SQL Server 提供了从操作系统,SQL ServerE, 数据库到对象的多级别的安全保护.其中也涉及到角色.数据库用户.权限等多个与安全性有关的概念.在本书前面我们也暗示过存储过程和触发器在保护数据安全性上不可小视的作用.现在我们面临的