【问题标题】:How to Restore differential backup in case of server failure在服务器故障的情况下如何恢复差异备份
【发布时间】:2017-12-01 08:09:45
【问题描述】:

备份和恢复计划

Full -08:00 PM

Diff - 02:00 PM

Diff - 05:00 PM 

恢复模式:简单

我正在(网络 PC)不同位置进行备份(.bak)

当我尝试恢复没有恢复的完整数据库时,它可以正确恢复,但我无法备份差异备份文件,它显示“由于 LSN 链中断,无法创建恢复计划”

【问题讨论】:

  • 差异备份在完全备份之前。您无法恢复早期的差异备份
  • 我正在做同样的第一次完整备份然后差分
  • NORECOVERY恢复完整备份,然后用RECOVERY恢复DIFF
  • 可能是这里提到的问题:dba.stackexchange.com/questions/128280/…

标签: sql-server database database-backups database-restore


【解决方案1】:

备份数据库时,backup header 和 msdb(backupset 表)中会写入一些数据。

在完全和差异备份的情况下,有database_backup_lsncheckpoint_lsnis_copy_only 感兴趣。

您只能通过对应full备份恢复differential备份。

要找出给定differential backup 的正确full backup,您应该只考虑不是copy_only 的完整备份。对应的完整备份的checkpoint_lsn 等于给定差异备份的database_backup_lsn

这是我用相同颜色标记的图片full backups,可以作为differential backups 的基础:

现在例如你想找到对应的full backup

首先你应该找到差异备份database_backup_lsn,在我的例子中是23064679000002372000077。然后进行这样的查询,你会找到对应的full备份。

select type,
       backup_start_date, 
       backup_finish_date,
       database_backup_lsn,
       checkpoint_lsn,
       is_copy_only,
       f.family_sequence_number,
       f.physical_device_name
from msdb..backupset s 
     join msdb..backupmediafamily f
        on f.media_set_id = s.media_set_id  
where database_name = 'basedati_bi' and type = 'D' and is_copy_only = 0 and checkpoint_lsn = 23064679000002372000077

【讨论】:

  • 什么是差异备份的“checkpoint_lsn”?能否通过差异备份找到合适的 logbackup 进行恢复?
猜你喜欢
  • 1970-01-01
  • 2013-02-19
  • 2011-10-26
  • 2011-02-17
  • 2017-03-09
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多