SQL Server誤區30日談 第20天 破壞記錄備份鏈之後,需要一個完整備份來重新開始日誌鏈

來源:互聯網
上載者:User

誤區 #20:在破壞記錄備份鏈之後,需要一個完整備份來重新開始日誌鏈
錯誤

交易記錄備份會備份自前次交易記錄備份以來所有的交易記錄(如果從來沒有過記錄備份的話,那就從上一次完整備份開始)。有好幾種類型的操作會中斷交易記錄的連續性,也就是說除非重新開始新的日誌鏈,SQL Server無法再進行記錄備份。下面這幾種操作都有可能引起日誌鏈斷裂:

由完整復原模式或大容量交易記錄復原模式轉為簡單復原模式
從資料庫鏡像進行恢複
備份日誌時指定了NO_LOG 或 WITH TRUNCATE_ONLY(還好在SQL Server 2008中這個選項被取消了)

更多請看:post BACKUP LOG WITH NO_LOG - use, abuse, and undocumented trace flags to stop it

通過下面的例子對此進行闡述:

複製代碼 代碼如下:CREATE DATABASE LogChainTest;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO
BACKUP DATABASE LogChainTest TO DISK = 'C:\SQLskills\LogChainTest.bck' WITH INIT;
GO
BACKUP LOG LogChainTest TO DISK = 'C:\SQLskills\LogChainTest_log1.bck' WITH INIT;
GO
ALTER DATABASE LogChainTest SET RECOVERY SIMPLE;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO

結果是: 複製代碼 代碼如下:已為資料庫 'LogChainTest',檔案 'LogChainTest' (位於檔案 1 上)處理了 168 頁。
已為資料庫 'LogChainTest',檔案 'LogChainTest_log' (位於檔案 1 上)處理了 2 頁。
BACKUP DATABASE 成功處理了 170 頁,花費 0.224 秒(5.916 MB/秒)。
已為資料庫 'LogChainTest',檔案 'LogChainTest_log' (位於檔案 1 上)處理了 3 頁。
BACKUP LOG 成功處理了 3 頁,花費 0.121 秒(0.137 MB/秒)。

我首先建立了一個資料庫,將其設定為完整復原模式,這個是日誌鏈的起點,然後轉為簡單復原模式,再轉為完整復原模式。
下面我再嘗試進行記錄備份 複製代碼 代碼如下:BACKUP LOG LogChainTest TO DISK = 'C:\SQLskills\LogChainTest_log2.bck' WITH INIT;
GO

則會得到如下報錯資訊: 複製代碼 代碼如下:訊息 4214,層級 16,狀態 1,第 1 行
無法執行 BACKUP LOG,因為當前沒有Database Backup。
訊息 3013,層級 16,狀態 1,第 1 行
BACKUP LOG 正在異常終止。

SQL Server已經記錄了我破壞日誌鏈的操作以及與進行日誌 備份無法備份自上次記錄備份以來所有的日誌,所以SQL Server不允許我進行記錄備份。
這個誤區是說此時就需要完整備份才能恢複日誌鏈,但實際上,我只需要做一個差異備份(這個差異備份的跨度超過日誌鏈斷裂的間隙),代碼如下: 複製代碼 代碼如下:BACKUP DATABASE LogChainTest TO DISK = 'd:\Test_bak\LogChainTest_log1.bck' WITH INIT, DIFFERENTIAL;
GO
BACKUP LOG LogChainTest TO DISK = 'd:\Test_bak\LogChainTest_log1.bck' WITH INIT;
GO

得到的結果: 複製代碼 代碼如下:已為資料庫 'LogChainTest',檔案 'LogChainTest' (位於檔案 1 上)處理了 64 頁。
已為資料庫 'LogChainTest',檔案 'LogChainTest_log' (位於檔案 1 上)處理了 1 頁。
BACKUP DATABASE WITH DIFFERENTIAL 成功處理了 65 頁,花費 0.119 秒(4.267 MB/秒)。
已為資料庫 'LogChainTest',檔案 'LogChainTest_log' (位於檔案 1 上)處理了 1 頁。
BACKUP LOG 成功處理了 1 頁,花費 0.052 秒(0.150 MB/秒)。

不得不說這種方式更Cool一些,因為你不再需要一個完整備份才能繼續進行記錄備份。
如果你的備份策略中包含了檔案或是檔案組的備份,你甚至只需要單個檔案的差異備份就能繼續進行記錄備份。但前提是這個備份的跨度超過了斷裂LSN的長度,當然這是更深的話題了。
又揭穿了一個誤區!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.