SQL Server 2005和2008中数据库的镜像备份功能

原创|其它|编辑:郝浩|2009-07-06 11:38:02.000|阅读 1093 次

概述:上周,当我进行季度的灾难恢复工作时,我发现最新的完全数据库备份是损坏的。我想知道是否有什么方法可以让我避免以后遇到这种情况。在这个技巧中,我们将介绍镜像数据库备份功能和RESTORE VERIFYONLY命令,它们将帮助我们最大限度地避免将来再遇到这种问题。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  专家解答

  在SQL Server 2005和更高的版本中,你可以创建一个数据库的镜像备份。特定时间的镜像备份允许你创建一个数据库备份的2 – 4个相同的副本。使用镜像备份的最大优势是,万一其中一个备份集或者备份文件损坏了,你就可以使用另一个备份集中的备份文件来恢复这个数据库。

  在这个技巧中,你将看到如何使用一个数据库的完全、差异和事务日志镜像备份。一旦这个数据库备份成功完成,我们就是用不同的镜像备份集中可用的备份文件来恢复这个数据库。

  SQL Server 2008中的格式化日期

  镜像备份功能只能在SQL Server 2005企业版和更高的版本中使用。尽管如此,一旦这个备份完成了,那么执行RESTORE VERIFYONLY命令是一个不错的选择,因为这个命令将帮助校验这个数据库备份集是完整的,而且这个备份也是完全易读的。

  例如,让我们假设您在三个不同的镜像集Mirror Set 1、Mirror Set 2和Mirror Set 3上有完全、差异和事务日志备份。假想万一Mirror Set 1中的全数据库备份损坏了,那么在这种情况下你可以通过NORECOVERY模式使用Mirror Set 2或Mirror Set 3中的全数据库备份来恢复上面的全数据库备份。接下来,你可以通过NORECOVERY模式挑选三个Mirror Set中任何一个的差异数据库备份来恢复差异数据库备份。最后,你可以在RECOVERY模式中挑选三个Mirror Set中任何一个的事务日志数据库备份来恢复事务日志数据库备份。

  在BACKUP DATABASE命令中,第一个镜像是通过TO从句指定的,你可以通过MIRROR TO从句指定剩下的镜像。尽管如此,你应该使用WITH FORMAT从句创建一个新的镜像备份集,否则你的完全数据库备份命令会失败。

  探究SQL Server 2008的过滤索引

  创建镜像数据库备份

  我们将通过下面的例子详细了解怎样使用镜像备份集功能。在这些例子中,我创建了三个备份文件,并且把每个备份类型写到相同的文件中。这个过程不需要这么做,但是它通过为每个镜像备份集创建一个文件而不是拥有很多个文件,从而使整个过程变得更加简单。因此,基于这一点,如下每个备份文件都有三个备份:

  · File 1 = 完全备份

  · File 2 = 差异备份

  · File 3 = 事务日志备份

  第一步是创建完全备份。下面我们创建带有两个镜像副本的完全备份。

    -- Take a Full Backup of Products Database Using WITH FORMAT clause
  BACKUP DATABASE Products

  TO DISK ='C:\DBBackup\Products_Mirror_Set_1.bak'

  MIRROR TO DISK ='D:\DBBackup\Products_Mirror_Set_2.bak'

  MIRROR TO DISK ='E:\DBBackup\Products_Mirror_Set_3.bak'

  WITH FORMAT

  接着,我们再次创建带有两个镜像副本的差异备份,这些将写到上面创建的相同备份文件中。

    -- Take a Differential Backup of Products Database
  BACKUP DATABASE Products

  TO DISK ='C:\DBBackup\Products_Mirror_Set_1.bak'

  MIRROR TO DISK ='D:\DBBackup\Products_Mirror_Set_2.bak'

  MIRROR TO DISK ='E:\DBBackup\Products_Mirror_Set_3.bak'

  WITH DIFFERENTIAL
 
  最后,我们创建带有两个镜像副本的事务日志备份,这些将写到上面创建的相同备份文件中。

    -- Take Transactional Log Backup of Products Database
  BACKUP LOG Products

  TO DISK ='C:\DBBackup\Products_Mirror_Set_1.bak'

  MIRROR TO DISK ='D:\DBBackup\Products_Mirror_Set_2.bak'

  MIRROR TO DISK ='E:\DBBackup\Products_Mirror_Set_3.bak'
 
  我们可以运行RESTORE VERIFYONLY命令,看看备份文件是否可读。

  -- Verify all the Mirrored database backup sets
  RESTORE VERIFYONLY

  FROM DISK ='C:\DBBackup\Products_Mirror_Set_1.bak'

  RESTORE VERIFYONLY

  FROM DISK ='D:\DBBackup\Products_Mirror_Set_2.bak'

  RESTORE VERIFYONLY

  FROM DISK ='E:\DBBackup\Products_Mirror_Set_3.bak'
 
  为了显示你可以混合并且匹配这些备份以便用来恢复,我将如下存储这些备份:

  完全备份- 从Products_Mirror_Set_2

  差异备份 – 从 Products_Mirror_Set_1

  事务备份 – 从 Products_Mirror_Set_3

    -- Restore Full Backup of Products database using NORECOVERY Mode,
  -- the backup file used is from Mirror Set 2

  RESTORE DATABASE [Products]

  FROM DISK = N'D:\DBBackup\Products_Mirror_Set_2.bak'

  WITH FILE = 1, NORECOVERY, STATS = 10

  GO

  -- Restore Differential Backup of Products database using NORECOVERY Mode,

  -- the backup file used is from Mirror Set 1

  RESTORE DATABASE [Products]

  FROM DISK = N'C:\DBBackup\Products_Mirror_Set_1.bak'

  WITH FILE = 2, NORECOVERY, STATS = 10

  GO

  -- Restore Transactional Log Backup of Products database using RECOVERY Mode,

  -- the backup file used is from Mirror Set 3

  RESTORE LOG [Products]

  FROM DISK = N'E:\DBBackup\Products_Mirror_Set_3.bak'

  WITH FILE = 3, RECOVERY, STATS = 10

  GO
 
  正如你所看到的,你创建了镜像备份副本,然后使用任何集合中的文件从而完成恢复过程。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP