SQL Server 2005灾难恢复步骤
2010-03-06 15:42:21 来源:WEB开发网问题
SQL Server 2005在实现高可用性和灾难恢复方面给我们提供了很多种选择。比技术本身更重要的是拿出适当的程序,这是因为我们要管理不同的灾难恢复方案。我们应该如何拿出程序来管理多种多样的灾难恢复场景呢?
专家解答
这一系列文章将探讨不同的灾难恢复场景和涉及你的恢复计划的程序。考虑到你的SQL Server 2005数据库中的灾难恢复选项,你应该包含尽可能多的技术,因为如果灾难发生时你将会有很多种选择来解决这个问题。尽管拥有这些技术被证实是很重要的,但是它也是一个伴随着使整个程序更加有效的过程。在这篇文章里,让我们来看看一个简单的场景,那就是在发生数据库备份的5个小时后,一个用户不小心删除了一张表。从一个数据库备份中恢复意味着失去5小时的数据。而对于大多数的公司来说,比起失去数据,他们更愿意选择失去时间。并且,如果这是一个非常大的数据库,那么将花很长一段时间来恢复和使它联机。在将数据损失控制到最小的前提下,我们将考虑这种情况来建立一个程序方法,以此来尽快地恢复数据库。我们将使用Northwind数据库来显示这个过程。记住在进行以下步骤之前先把Northwind中的数据库恢复模式改成FULL。
1) 确保你有一个好的备份
针对上面的场景,我们假设你有一个每天早上6:00运行的备份,并且没有一个定期创建的数据库快照。你的数据库被配置成使用一个单一的MDF和LDF文件,这个文件对灾难恢复不太适用。让我们在Northwind数据库中创建一个全数据库备份,它将是数据库恢复的起始点。以下是代码:
USEmaster
GO
BACKUPDATABASENorthwind
TODISK=N'D:DBBackupNorthwindBackup.bak'
WITHNAME=N'FullDatabaseBackup',DESCRIPTION='Startingpointforrecovery',
INIT,STATS=10
GO
从Northwind数据库模式中,你很难删除Products, Orders和Customers表,这是因为有其他表比如Order Details表的外码约束限制。但我敢打赌你可以轻易地删除Order Details表。接下来,我们来模拟在大约上午11:00时删除这张表的灾难情景。
DROPTABLE[OrderDetails]
2) 包含发生的问题
由于这个数据库只有一个单一的MDF和LDF文件,我们不可能做很多操作。我们所能做的就是通过把它设置成有限制的用户模式来使数据库脱机。
USEmaster
GO
ALTERDATABASENorthwind
SETRESTRICTED_USER
WITHROLLBACKIMMEDIATE
GO
这将很有效地使数据库脱机,停止所有活动的连接。这是分秒必争的时刻,我们需要采取行动。当进行到下面的步骤时,请牢记你的RPO和RTO。
3) 备份事务日志
一个好的数据库管理员应该知道当灾难来临时,首先要做的是备份事务日志 – 假设你的数据库被设置成全数据库备份。这是为了确保在上次备份之后你还保存所有活动的事务。在我们的场景中,由于上次的备份 – 全备份,在这个例子中 – 发生于早上6:00。
BACKUPLOGNorthwind
TODISK=N'D:DBBackupNorthwindBackupLog.trn'
WITHNAME=N'TransactionLogBackup'
,DESCRIPTION='Gettingeverythingtocurrentpointintime.',
STATS=10
GO
更多精彩
赞助商链接