此備份與還原主題與所有 SQL Server 資料庫相關。
差異備份所基於的是最近一次的完整資料備份。 差異備份僅捕獲自該次完整備份後發生更改的資料。 差異備份所基於的完整備份稱為差異的“基準”。 完整備份(僅複本備份除外)可以用作一系列差異備份的基準,包括Database Backup、部份備份和檔案備份。 檔案差異備份的基底備份可以包含在完整備份、檔案備份或部份備份中。
本主題內容:
優點
差異備份概述
對唯讀資料庫進行差異備份
相關任務
優點
與建立完整備份相比,建立差異備份的速度可能非常快。 差異備份只記錄自差異備份所基於的完整備份後更改的資料。 這有助於頻繁地進行資料備份,減少資料丟失的風險。 但是,在還原差異備份之前,必須先還原其基準。 因此,從差異備份進行還原必然要比從完整備份進行還原需要更多的步驟和時間,因為這需要兩個備份檔案。
如果資料庫的某個子集比該資料庫的其餘部分修改得更為頻繁,則差異Database Backup特別有用。 在這些情況下,使用差異Database Backup,您可以頻繁執行備份,並且不會產生完整Database Backup的開銷。
在完整復原模式下,使用差異備份可以減少必須還原的記錄備份的數量。
差異備份概述
差異備份捕獲在建立差異基底和建立差異備份之間發生更改的任何“區”(物理上連續的八個頁的集合)的狀態。 這意味著,給定差異備份的大小取決於自建立差異基底後更改的資料量。通常,差異基底越舊,新的差異備份就越大。 在一系列差異備份中,頻繁更新的區可能在每個差異備份中包含不同的資料。
下圖顯示的是差異備份的工作原理。 該圖顯示了二十四個資料區,其中的六個已發生更改。 差異備份只包含這六個資料區。 差異備份操作取決於位元影像頁,此頁針對每個區包含一位。 對於自建立差異基底後更新的每個區,該位在位元影像中設定為 1。
| 注意 |
| 僅複本備份不能更新差異位元影像。 因此,僅複本備份不會影響後續差異備份。 |
在建立基準之後立即執行的差異備份通常明顯小於差異基底。 這可以節省儲存空間和備份時間。 但是,當資料庫隨著時間的推移發生更改時,資料庫與特定差異基底之間的差異將增大。 差異備份與其基準間隔的時間越長,差異備份可能就越大。 這意味著差異備份的大小最終會接近差異基底的大小。 較大的差異備份將失去備份更快、更小的優勢。
當差異備份的大小增大時,還原差異備份會顯著延長還原資料庫所需的時間。 因此,建議按設定的間隔執行新的完整備份,以便為資料建立新的差異基底。 例如,您可以每周執行一次整個資料庫的完整備份(即完整Database Backup),然後在該周內執行一系列常規的差異Database Backup。
在還原過程中,還原差異備份之前,必須先還原其基準。 然後只需還原最新的差異備份,即可將資料庫前滾到建立差異備份的時間。 通常,應該先還原最新的完整備份,然後再還原基於該完整備份的最新差異備份。
對唯讀資料庫進行差異備份
對於唯讀資料庫,單獨使用完整備份比同時使用完整備份和差異備份更容易管理。 當資料庫為唯讀時,備份和其他動作無法變更檔中包含的中繼資料。 因此,差異備份所要求的中繼資料(如差異備份開始的記錄序號,即差異基底 LSN)儲存在 master 資料庫中。 如果在資料庫唯讀時採用的是差異基底,則差異位元影像指示的更改多於在基底備份之後實際發生的更改。 額外的資料由備份讀取,但不會寫入到備份中,因為儲存在 backupset 系統資料表中的 differential_base_lsn 用於確定在基準之後是否實際更改了資料。
重新構建、還原唯讀資料庫或者分離再重新附加唯讀資料庫後,會丟失差異基底資訊。 這是因為 master 資料庫與使用者資料庫不同步。 SQL Server 資料庫引擎無法檢測或防止此問題的出現。 所有後續差異備份都不是基於最新的完整備份,從而可能會出現出人意料的結果。 若要建立新的差異基底,建議先建立完整Database Backup。