1
数据库技术及应用
1.11.5.1 8.5.1 数据的备份策略
8.5.1 数据的备份策略

在进行数据库备份之前,需要对备份内容、备份频率、备份设备和备份类型进行设计。

8.5.1.1 备份内容

通常需要备份的内容有3种,分别是数据库、事务日志和文件。

数据库分为系统数据库和用户数据库。系统数据库指记录了系统配置参数、用户数据库信息的master、msdb和model等数据库。一般情况下,tempdb数据库不需要备份。用户数据库存储了用户的业务数据,因此对用户而言,用户数据库的备份是最重要的。

事务日志记录了用户对数据库的各种操作,是进行事务故障恢复和系统故障恢复的重要资料。相对于数据库备份而言,事务日志备份需要时间较短,但恢复时间较长。

文件是指数据库中的某个特定数据文件,用户可以有选择地进行备份。相对于前两种备份而言,文件备份速度最快、最直接,恢复起来也非常方便。

8.5.1.2 备份频率

备份的频率取决于修改数据库的频繁程度,以及一旦出现意外丢失的工作量大小和意外发生的可能性大小。一般情况下,数据库的检索操作频繁时,系统数据库和用户数据库的备份频率较低。数据库的更新操作频繁时,系统数据库和用户数据库的备份频率较高。

8.5.1.3 备份设备

在进行数据库备份之前,首先要创建备份设备。当建立一个备份设备时,要给该备份设备分配一个逻辑备份名和一个物理备份名,物理备份名是操作系统识别该设备所使用的名称,逻辑备份名是物理备份设备名的一个别名,保存在SQL Server的系统表中。例如,一个物理备份名为D:\medical\backup\medical_bk.bak,使用逻辑备份名可以缩写为medical_bk。数据库备份设备包括磁盘、磁带和命名管道。

1.磁盘备份设备

磁盘备份设备一般是硬盘或其他磁盘类存储介质上的文件,可以与普通的操作系统文件一样进行管理。磁盘备份设备可以定义在数据库服务器的本地磁盘上,也可以定义在通过网络连接的远程磁盘上。如果是网络设备,则需要一个UNC(Universal Naming Convention,通用命名约定)名字,如\\Servername\Sharename\Path\File。

2.磁带备份设备

使用磁带备份设备时,必须有磁带被物理地安装到SQL Server实例的计算机上。磁带设备不支持远程设备备份。

3.命名管道备份设备

命名管道备份设备为使用第三方的备份软件和设备提供了一个灵活、强大的通道。当用户使用命名管道设备进行备份和恢复操作时,需要在BACKUP或RESTORE语句中给出客户端应用程序中使用的命名管道名字。

8.5.1.4 备份类型

SQL Server2008提供了4种备份类型,下面进行具体介绍。

1.完整数据库备份

完整数据库备份就是备份整个数据库,包括备份数据库文件、这些文件的地址以及事务日志的某些部分。这是任何备份策略中都要求完成的第一种备份类型,因为其他所有备份类型都依赖于完整数据库备份。换句话说,如果没有执行完整数据库备份,就无法执行差异数据库备份和事务日期备份。

以下情况下,应采用完整数据库备份:

●数据库较小。

●数据库具有很少的数据修改操作或是只读数据库时。

注意:如果采用完整数据库备份,则要定期清除事务日志。

2.差异数据库备份

差异数据库备份是指只从最近一次完整数据库备份以后发生改变的数据开始记录。如果在完整备份后将某个文件添加到数据库,则下一个差异备份会包括该新文件。这样可以方便地备份数据库,而无须了解各个文件。与完整数据库备份相比,差异数据库备份占用的磁盘空间小,而且备份速度快,因此可以经常地备份,以降低丢失数据的风险。

以下情况下,应采用差异数据库备份:

●数据库频繁修改。

●需要进行最小化备份时。

3.事务日志备份

尽管事务日志备份依赖于完整备份,但并不备份数据库本身。这种类型的备份只记录事务日志的适当部分。确切地说,是自上一个事务以来已经发生了变化的部分。事务日志备份比完整数据库备份更节省时间和空间,而且利用事务日志进行恢复时,可以指定恢复到某一个事务。例如,可以将其恢复到某个破坏性操作执行的前一个事务,这是完整备份和差异备份所不能做到的。但是与完整数据库备份和差异备份相比,用事务日志备份恢复数据库要花费较长的时间,这是因为事务日志备份仅仅存放日志信息,恢复时需要按照日志重新插入、修改或者删除数据。

因此,通常情况下,事务日志备份经常与完整备份和差异备份结合使用。例如,每周进行一次事务完整备份,每天进行一次差异备份,每小时进行一次事务日志备份。这样最多只会丢失一个小时的数据。

4.文件和文件组备份

当一个数据库很大时,对整个数据库进行备份可能会花很多时间,这时就可以采用文件和文件组备份,即对数据库中的部分文件或者文件组进行备份。文件组备份是一种将数据库存放在多个文件上的方法,并允许控制数据库对象存储到这些文件当中的哪些文件上。这样,数据库就不会受到只存储在单个硬盘上的限制,而是可以分散到许多硬盘上。利用文件组备份,每次可以备份这些文件当中的一个或者多个文件,而不是备份整个数据库。

以下情况下,应采用文件或文件组备份:

●超大型数据库备份。

●完整备份时间太长。