在SQL Server 2000中,有无数种备份数据库的方法。无论你的数据库有多大、改变是否频繁,都有满足你的要求的备份策略。让我们看看几种可以在不同环境下工作的基本备份策略。 j;) 0_%{- =*a{Z) u
频繁变动的大数据库的备份 Ds[)sc3
!3wosAl
现在,我已经演示了如何备份整个数据库。然而,它只允许你恢复备份结束时刻的数据库所保存的数据。如果数据库很大并且频繁变动,由于时间和空间的限制,频繁进行全数据库备份是不现实的。当数据库失败时,可能会造成大量数据丢失。 W/QXmAl
trlt .7h
在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为FULL或者BULK_LOGGED。 5V)Jk95 2
$J"sg5k0C
第一种方法采用差异数据库备份,它只捕获并保存全数据库备份后改变的数据。由于它的文件较小而且信息简明,用它进行数据恢复的速度非常快。 #GkQkkn/
$n :e
下面的例子在一个名为DiffBackupDevice的逻辑备份设备上创建了一个差异备份: ' #K*70r
PpnuGm32
BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL ?2F#[
_L,5BIG-A]
第二个提高可恢复性的方法利用交易记录备份,恢复可以在一个特定的时间点上完成。 ~^E5v,
DhnOgsP8j
你可能会问这怎么可能。记住,交易记录的目的就是记录发生在数据库中所有交易。交易记录允许COMMIT和ROLLBACK正确工作。为了达到这个功能,该数据的变化前后的数值必须随同操作类型、交易开始(时间)等一齐被记录下来。 "QwW*vEbr
mc:L@gD
备份技巧 C/lHuw
ej<>Q6 !}
利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记关键步骤。 c\VNS$$1
&p/p7
每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的SQL Server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份。 8+Q4P:/y-
]Q&/ A%Pqt
每天备份一次msdb数据库。它一般非常小,但很重要,因为它包含了所有的SQL Server工作、操作和计划任务。 1ac |~_
}`ErRg"-^
只有当你修改它时,才有必要备份模型数据库。 8T dy?\L
(z'CFo
用SQL Server Agent来安排你的备份工作的时间表。 GOG,^HNxV
q)_PM|!o
如果在你的生产(production)环境中有现成资源,备份生产数据库到本地磁盘或者网络服务器(用同一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在许多硬件故障(特别是在RAID系统中)的情况下,磁盘常常是完好的(inact)。如果备份文件是在磁盘上,那么恢复时的速度会提高很多。 J@,v /pN
"tXl*
备份开发和测试数据库至少要用到SIMPLE恢复模型。 O46[Ovp
'zHsgEu
除了有计划的定时备份外,在进行未记录的(nonlogged)批操作(如,批拷贝)、创建索引、或者改变恢复模型后要备份用户数据库。 q<g'{Eg099
# +ntRx}d
如果你使用的是SIMPLE恢复模型,记住在截短(truncate)交易记录之后备份你的数据库。 cluBQnoRd
a )1|}'
用文档记录你的恢复步骤。至少要大概记录这些步骤,注意所有的重要文件的位置。 O0Tw8<
#gZNH`>
在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在SIMPLE恢复模型中,记录在一个CHECKPOINT期间内截短(在SQL Server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是SIMPLE恢复模型不支持时间点(point-in-time)恢复的原因。在FULL和BULK_LOGGED恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。 @Y1uqQ|
R/tRjH<.fr
为了备份交易记录,使用BACKUP LOG命令。其基本语法与BACKUP命令非常相似: ;S6%P?
K'Tqzlw"|
BACKUP LOG { database } TO 'ylh;#
*IkOEh&ac
下面是如何把交易记录备份到一个名为LogBackupDevice的逻辑设备上的例子: Nk"\ P!
lE vhBLn(
BACKUP TRANSACTION Northwind TO LogBackupDevice }4Cmm"u`
bc99Gvp{#Z
如果你不希望截短交易记录,使用NO_TRUNCATE选项,如下所示: >R7+5N.
Du77UN'0
BACKUP TRANSACTION Northwind TO LogBackupDevice WITH NO_TRUNCATE v`D2F}#5
xdPMUE
只是基本知识 2eb/kz!
<a +sXk&
尽管我在本文中仅仅概述了数据库恢复的基本知识,你还是可以通过这些技巧来找到正确的方向。那么,为了避免不必要的(丢失数据造成的)恐慌,你要做到每周备份主数据库,每天备份msdb。