Sql-Server
此備份集中的日誌太新,但它來自上次完整備份之前!
我正在嘗試將完整的數據庫備份和事務日誌恢復到最新的事務日誌。我已將事務日誌設置為每 15 分鐘發送一次。此設置是通過 SMSS GUI 執行的。完整的數據庫備份從每天凌晨 12 點開始,通常在凌晨 2 點之前完成。
首先,我使用 NORECOVERY 恢復完整備份:
USE [master] RESTORE DATABASE [DBNAME] FROM DISK = N'X:\path\to\DBNAME.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 5 GO
這成功完成。
然後,我抓取最舊的事務日誌並執行以下命令:
RESTORE LOG DBNAME FROM DISK = 'X:\path\to\OldestTransactionLog.trn' WITH NORECOVERY;
但是,我收到以下錯誤:
Msg 4305, Level 16, State 1, Line 10 The log in this backup set begins at LSN 421814812000000025600001, which is too recent to apply to the database. An earlier log backup that includes LSN 421787067000000013800001 can be restored. Msg 3013, Level 16, State 1, Line 10 RESTORE LOG is terminating abnormally.
我不明白為什麼這太新了!
我的備份在凌晨 12 點進行,並在凌晨 2 點完成。
起初我從上午 12 點開始嘗試事務日誌,然後看到“最近”消息,嘗試了我擁有的最舊的消息,從昨天上午 11:30 開始。
所以這個事務日誌應該比最近的完整數據庫備份早半天。
我在這裡錯過了什麼嗎?這怎麼可能太近了?
任何幫助表示讚賞 - 這不在生產系統上,不用擔心!
FULL BACKUP 的最後一個 LSN 應該與日誌備份的 Last LSN 匹配。這將是您的第一個日誌備份,然後連續的日誌備份將具有
A.LAST_LSN
=B.FIRST_LSN
–> 其中 B = 在 A 之後立即進行的日誌備份。來自 BOL:
現在看看你得到的錯誤:
此備份集中的日誌從 LSN 421814812000000025600001 開始,該日誌太新,無法應用於數據庫。可以恢復包含 LSN 421787067000000013800001的早期日誌備份。
因此,本質上,您在 LSN 中有一個缺口,因此您無法恢復您的日誌備份。
我建議使用Restore Gene - 自動化數據庫恢復。您甚至可以使用 PowerShell 使用它來完全自動化您的還原。(我用過它,它非常有用。)
請參閱我的回答以更好地了解完整備份和 LSN 的工作原理。