三级数据库[Sqlserver]数据备份的三个恢复模型(2)

文章作者 100test 发表时间 2007:07:30 13:00:18
来源 100Test.Com百考试题网


如果想进行有规律、有计划的备份,就需要使用逻辑备份设备。一个逻辑备份设备可以保存若干个数据库备份并驻留在磁盘、磁带或者已命名管道上。如果你使用磁带设备,磁带驱动器必须在同一台物理服务器上。已命名管道可以利用第三方备份软件。

  为了创建逻辑备份设备,使用sp_addumpdevice系统保存过程。SQL Enterprise Manager也可以用来创建备份设备。命令行语法如清单A所示。

  清单B给出了一个在磁盘上创建逻辑备份设备的例子。

当备份设备创建完毕,Northwind数据库可以用下面的命令进行备份:

  BACKUP DATABASE Northwind TO DiskBackup

  频繁变动的大数据库的备份

  现在,我已经演示了如何备份整个数据库。然而,它只允许你恢复备份结束时刻的数据库所保存的数据。如果数据库很大并且频繁变动,由于时间和空间的限制,频繁进行全数据库备份是不现实的。当数据库失败时,可能会造成大量数据丢失。

  在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为FULL或者BULK_LOGGED。

  第一种方法采用差异数据库备份,它只捕获并保存全数据库备份后改变的数据。由于它的文件较小而且信息简明,用它进行数据恢复的速度非常快。

  下面的例子在一个名为DiffBackupDevice的逻辑备份设备上创建了一个差异备份:

  BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL

  第二个提高可恢复性的方法利用交易记录备份,恢复可以在一个特定的时间点上完成。

  你可能会问这怎么可能。记住,交易记录的目的就是记录发生在数据库中所有交易。交易记录允许COMMIT和ROLLBACK正确工作。为了达到这个功能,该数据的变化前后的数值必须随同操作类型、交易开始(时间)等一齐被记录下来。

  备份技巧

  利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记关键步骤。

  每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的SQL Server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份。

  每天备份一次msdb数据库。它一般非常小,但很重要,因为它包含了所有的SQL Server工作、操作和计划任务。

  只有当你修改它时,才有必要备份模型数据库。

  用SQL Server Agent来安排你的备份工作的时间表。

  如果在你的生产(production)环境中有现成资源,备份生产数据库到本地磁盘或者网络服务器(用同一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在许多硬件故障(特别是在RAID系统中)的情况下,磁盘常常是完好的(inact)。如果备份文件是在磁盘上,那么恢复时的速度会提高很多。

  备份开发和测试数据库至少要用到SIMPLE恢复模型。

  除了有计划的定时备份外,在进行未记录的(nonlogged)批操作(如,批拷贝)、创建索引、或者改变恢复模型后要备份用户数据库。

  如果你使用的是SIMPLE恢复模型,记住在截短(truncate)交易记录之后备份你的数据库。

  用文档记录你的恢复步骤。至少要大概记录这些步骤,注意所有的重要文件的位置。

  在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在SIMPLE恢复模型中,记录在一个CHECKPOINT期间内截短(在SQL Server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是SIMPLE恢复模型不支持时间点(point-in-time)恢复的原因。在FULL和BULK_LOGGED恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。

  为了备份交易记录,使用BACKUP LOG命令。其基本语法与BACKUP命令非常相似:

  BACKUP LOG { database } TO

  下面是如何把交易记录备份到一个名为LogBackupDevice的逻辑设备上的例子:

  BACKUP TRANSACTION Northwind TO LogBackupDevice

  如果你不希望截短交易记录,使用NO_TRUNCATE选项,如下所示:

  BACKUP TRANSACTION Northwind TO LogBackupDevice WITH NO_TRUNCATE

  只是基本知识

  尽管我在本文中仅仅概述了数据库恢复的基本知识,你还是可以通过这些技巧来找到正确的方向。那么,为了避免不必要的(丢失数据造成的)恐慌,你要做到每周备份主数据库,每天备份msdb。


src="/ncre/js/wxgg.js">

相关文章


三级辅导:数据库原理及应用课程习题二(答案)
数据库原理及应用课程习题二
三级数据库辅导:数据库原理及应用课程习题一(答案)
数据库原理及应用课程习题一
三级数据库[Sqlserver]数据备份的三个恢复模型(2)
三级数据库[Sqlserver]数据备份的三个恢复模型(1)
三级信息管理技术章节要点计算机软件的功能及分类
三级信息管理技术章节要点计算机数据表示[1]
三级信息管理技术章节要点软件工程基本概念[1]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛