Sql-Server

每週末收縮 T-Log 文件

  • July 20, 2017

最近我們的 SQL Server 日誌驅動器包含所有 T-Log 文件開始快速增長。

注意事項

  • 我們將驅動器空間擴展到 100 GB。
  • 它是 AOAG 環境,SQL Server 2014。
  • 我們每 15 分鐘定期備份一次 T-Log(但沒有釋放日誌驅動器空間,並且日誌驅動器每周越來越多,50 GB 很多)。
  • 我們不能每次都擴大驅動力。
  • 找到了 Rebuild-Index 任務的原因。
  • 我為此部署了 Ola Hallengrens 程式碼來進行索引優化。
  • 重建任務佔用空間很大,近 15 分鐘佔用驅動器為 50 GB。

我一直在考慮在索引優化作業完成後立即執行此操作(索引優化的 Ola Hallengrens 程式碼)。我計劃每週縮減所有日誌文件。

每週日@10:00 PM:

  1. 所有 AVAILABILITY_GROUP_DATABASES 的索引優化
  2. 收縮所有 AVAILABILITY_GROUP_DATABASES 日誌文件。

請在我遇到麻煩之前糾正我的想法。因為隨著空間的不斷增加,即使事務日誌備份也無濟於事。

除了縮小日誌文件(不推薦)之外,在這種情況下應該採取什麼行動。

請任何專家的建議都非常感謝。

謝謝你的幫助。

我建議正確調整日誌文件的大小,而不是定期縮小它。

因為您正在重建索引,所以您將增加日​​誌文件,因為索引將被寫入事務日誌文件。這意味著您的最大索引應該適合事務日誌文件。

如果您的數據庫處於完全恢復模式,您可以嘗試更頻繁地進行 logbackups 以防止它失控。(儲存在 transactionlog 文件中的多個索引重建)

如果您的數據庫處於簡單模式,則情況並非如此。

當您的事務日誌文件增長時,您將創建稱為虛擬日誌文件(事務日誌文件內的結構)的東西,這可能會導致幾個問題。(更多資訊:https ://blogs.msdn.microsoft.com/saponsqlserver/2012/02/22/too-many-virtual-log-files-vlfs-can-cause-slow-database-recovery/ )

我會先縮小您的文件,然後將其增長到適當的大小以避免創建太多 VLF。但不要每週縮小它們。

可能會發現每隔 10 分鐘備份一次 TLog 將減少 TLog 文件的增長。重新創建 TLog 文件以減少/調整 VLF 大小也有幫助。請閱讀SQL Server 2014 (Sqlskills.com) 中對 VLF 創建算法的重要更改,了解如何完成此操作。

如果索引重建過程需要一個小時,那麼每 10 分鐘備份一次 TLog 可能無濟於事。對於 AG,您還必須考慮在輔助節點上進行強化,以便日誌可以在主節點上清除:

當您重建索引時,最終會有大量更改必須流向 AG 輔助節點。在輔助副本上強化所有這些更改(事務)之前,SQL 無法清除主副本上的事務日誌(安全功能,因此您不會失去事務)。

無論您在哪個副本上執行日誌備份都沒有關係,在一切都得到強化之前,您將無法清除這些日誌。這會在您的 TLogs 中創建大量的內容。這是執行 AG 和進行索引維護的副作用。

您需要更多磁碟空間。


社區維基回答如果可以,請編輯以改進。

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