壓縮設置對差異備份維護計劃無效?
我們正在使用 SQL Server 中的維護計劃功能對數據庫進行備份(完整、差異和事務日誌)。
在進行備份時,我選擇了壓縮選項來壓縮備份文件,並且我還啟用了“備份壓縮預設值”。
完整備份維護計劃正在壓縮備份文件;文件大小比數據庫大小小 4 倍。但是當我們談到差異備份時,我認為壓縮設置不起作用。
我觀察了今天的備份差異文件。昨天數據庫中的 4 個表每個都填充了 10GB 的數據,因此差異備份文件的大小超過了 40GB。我確信這些是唯一的更改,因為它是一個全新的數據庫,並且當天沒有進行任何維護活動。
在執行備份的當天,
.ldf
文件大小增加到 500 GB。這可能會導致大尺寸問題,但數據庫大小 (.mdf
) 小於 50GB。請查看下圖以獲取更多資訊:
我想確認壓縮不適用於差異備份,或者可能還有其他我錯過的東西?
如果它不起作用,根據 Paul Randal 的數據庫百分比更改腳本,我可能會決定進行完整備份或差異備份。
版本
select @@version;
Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64) May 4 2015 18:48:09 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
尺寸資訊
select type, backup_size, compressed_backup_size from msdb..backupset where backup_start_date >= '20170927' and database_name = 'yourDB'
type backup_size compressed_backup_size I 213,473,351,680 42,147,293,093
檢查壓縮
您可以檢查您的備份是否已壓縮。如何判斷 SQL Server 備份是否已壓縮中有幾種方法?.
您還可以檢查中表的
compressed_backup_size
和backup_size column
的值。例如:backupset``msdb
SELECT database_name, type, PctCompression = CONVERT(NUMERIC(20,2),100 - (compressed_backup_size / backup_size) * 100) FROM msdb.dbo.backupset WHERE ...
您的問題的更新表明差異備份確實被壓縮了。
備份大於預期
這 10GB 的數據可能分佈在很多頁面上,這些頁面的總和可能比您插入的 10GB 多得多(尤其是在聚集索引選擇不佳的情況下)。另請注意,差異備份在擴展區級別執行,因此對 8 頁擴展區中任何頁面的任何更改都將導致整個擴展區被備份。
log_reuse_wait_desc
做日誌備份或使用後檢查dbcc opentran
。如果從昨天開始有一個打開的事務,由於包含活動日誌,您的完整備份和差異備份將更大。現在可能沒有打開的事務,但是如果在差異備份時有一個長時間執行的事務處於活動狀態,那麼備份文件的大小將超出預期。
您的日誌增長到 500GB(並且您定期進行日誌備份)這一事實意味著由於某些原因(可能是一個打開的事務),日誌無法長時間清除。與該事務關聯的所有日誌都已添加到差異備份中。
如果您想檢查是否是這樣,請嘗試將您的數據庫恢復到另一個(新)數據庫,可能在另一台伺服器上。這樣你會做兩件事:
- 您將驗證您的完整備份和差異備份;和
- 您將看到您的差異需要多長時間才能恢復。
如果差異需要很長時間(例如 3 小時以上),則表明花費了大量時間來消除長期執行的未結交易的影響。