分类: 服务器与存储
2008-06-13 00:24:30
每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的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选项,如下所示:
BACKUP TRANSACTION Northwind TO LogBackupDevice WITH NO_TRUNCATE
基本知识
尽管我在本文中仅仅概述了数据库恢复的基本知识,你还是可以通过这些技巧来找到正确的方向。那么,为了避免不必要的(丢失数据造成的)恐慌,你要做到每周备份主数据库,每天备份msdb。