Sql-Server

壓縮設置對差異備份維護計劃無效?

  • September 29, 2017

我們正在使用 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_sizebackup_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(並且您定期進行日誌備份)這一事實意味著由於某些原因(可能是一個打開的事務),日誌無法長時間清除。與該事務關聯的所有日誌都已添加到差異備份中。

如果您想檢查是否是這樣,請嘗試將您的數據庫恢復到另一個(新)數據庫,可能在另一台伺服器上。這樣你會做兩件事:

  1. 您將驗證您的完整備份和差異備份;和
  2. 您將看到您的差異需要多長時間才能恢復。

如果差異需要很長時間(例如 3 小時以上),則表明花費了大量時間來消除長期執行的未結交易的影響。

引用自:https://dba.stackexchange.com/questions/187167