2007-09-24

SQL Server备份的三个恢复模型

来源: 开发者在线 作者: 评论 0 条
 

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

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

在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为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 <backup device>

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

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

共3页: 上一页 [1] 2 [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:SQL Server的空值处理策略  
下一篇:执行一个安全的SQL Server安装
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号