事故背景:
突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到2点40之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。
环境描述:
某公司装了一台sql Server数据库,为了保证数据库能够在出现故障时及时的修复,管理员做了备份操作,比如说完整备份+差异备份或者完整备份+事务日志备份,而且备份的时间是每隔6个小时做一次完整备份,在每天的1点、6点、12点、18点,6个小时之内是每隔1个小时做一次差异备份事务日志备份,并且和计划任务结合在了一起。
假如现在存在这样一种场景,在2点40分左右,突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到2点40之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。(必须确保log文件没有损坏)
原文出处:
***** http://blog.csdn.net/misterliwei/article/details/5884656****
http://www.w2bc.com/Article/44855
http://www.jb51.net/article/18613.htm
尾部日志:
http://blog.csdn.net/misterliwei/article/details/5884656
http://blog.csdn.net/dba_huangzj/article/details/8491327
sql Server 备份基础 :
http://blog.csdn.net/dba_huangzj/article/details/22683687
场景:
--1. Backup:
a. Fullbackup @1:00AM: (Every 6 hours)
111
222
--insert into [Temp].[dbo].[demo] values(111)
--insert into [Temp].[dbo].[demo] values(222)
--alter databasetemp set recovery full
--backup databasetemp todisk='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_full.bak' with INIT
b. DiffBackup 或者Logback @2:00AM : (Every 1 hour)
111
222
333
444
--insert into [Temp].[dbo].[demo] values(333)
--insert into [Temp].[dbo].[demo] values(444)
--backup databasetemp todisk='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_diff.bak' with INIT, differential
或者
-- backup logtemp todisk='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_log.bak' with INIT
差异备份或日志备份结束后,做了一些插入操作
--insert into [Temp].[dbo].[demo] values(555)
111
222
333
444
555
c. 在数据文件损坏后,完整备份恢复之前,做一次备份尾部日志,备份差异备份之后的改动
NO_TruncATE LogBackup@2:45AM :
-- BACKUP LOG temp TO disK = 'D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_log2.bak' WITH INIT, NO_TruncATE;
GO
--2. Restore:
--drop database temp
b. 恢复完整备份,norecovery 模式,最后一次恢复选择recovery
--restore database temp from disk ='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_full.bak' with norecovery
c. 恢复差异/日志备份,norecovery模式
--restore database temp from disk ='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_diff.bak' with norecovery
或
--restore log temp from disk ='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_log.bak' with norecovery
d. 恢复’备份尾部’日志,recovery模式
--restore log temp from disk ='D:\MSsql10.MSsqlSERVER\MSsql\Bak\Temp_log2.bak' with recovery
All data:
111
222
333
444
555
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。