
我的一個資料庫遇到交易日誌填滿的問題。它已設定為完全恢復,並透過維護計劃定期進行備份。我每個週末都會進行完整的資料庫備份,然後在工作日進行每日差異備份,並且每小時進行一次交易日誌備份。我檢查了日誌截斷狀態,目前狀態是LOG_BACKUP。我可以透過按需備份將其清除,但為什麼不透過維護計劃將其清除?
我缺什麼?
答案1
如果您的資料庫有大量事務,您可能需要比每小時更頻繁地備份交易日誌。每 15 分鐘一次並不罕見。我建議編輯維護作業以更頻繁地執行日誌備份。
另外,.ldf 是否有足夠的磁碟空間?如果阻止實體檔案成長,即使截斷,它也會耗盡空間。
答案2
有一些因素會影響 SQL Server 的交易日誌是否顯示為「已滿」或需要成長:
- 長時間運行的事務
- 採用完整或批次日誌復原模式時日誌備份的頻率
- 交易日誌中虛擬日誌檔案 (vlfs) 的數量和大小
Jes Schultz Borland 有一個免費視頻,她在其中更詳細地描述了這一切是如何工作的,聽起來它會對您有所幫助:http://www.brentozar.com/archive/2012/09/how-sql-server-works-log-file-video/
當避免資料遺失很重要時,請每隔一段時間執行日誌備份一分鐘並不罕見。關鍵在於在最壞的情況下可以遺失多少資料。
答案3
是的。如果您從不進行備份,就會發生這種情況。類似於如果你不費心去做你的工作並加滿油,你車裡的油箱就會空了。
交易日誌應在完整或增量備份後刪除 - 如果您不進行備份,則將資料庫模型設為簡單。
如果您定期進行完整備份,那麼顯然有人不知道如何進行備份,並且忘記將交易日誌的刪除放入序列中。維護計劃對此有一個設定。
也就是說:如果您運行複製之類的東西,如果您落後了,可能會阻塞日誌。