您好,登錄后才能下訂單哦!
事故背景:
突然間數據庫無緣無故損壞了,差異備份或事務日志備份在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:
a. 刪除原始數據庫(先備份原始的mdf,ldf文件)
--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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。