2020-09-02 09:17 瀟湘隱者 閱讀(533) 評論(0) 編輯 收藏 html
這裏簡單總結一下關於SQL Server事務日誌備份的一些疑問,若有其它更多疑問,歡迎大家留言討論。sql
事務日誌備份頻繁有性能影響嗎?數據庫
關於事務日誌備份,若是設置得很是頻繁有什麼性能影響嗎? 這個是很多人的疑惑,頻繁的事務日誌備份是否影響性能呢?其實這是一個謬論。關於這些問題,咱們先來作個假設,假設兩小時內產生了30G大小的事務日誌,那麼對於下面幾種事務日誌備份策略:ide
1: 2小時作一次事務日誌備份。post
2: 1小時作一次事務日誌備份。性能
3:30分鐘作一次事務日誌備份。rest
4: 15分鐘作一次事務日誌備份。日誌
5: 5分鐘作一次事務日誌備份。code
整體來講,若是2小時內,產生了30G大小的事務日誌,那麼無論哪一種備份策略,事務日誌備份的IO總量(或者事務日誌備份文件大小)是同樣的。並不會由於日誌備份頻率有所區別。可是若是2小時備份一次事務日誌,那麼一次將要備份30G大小的日誌。這個對IO的影響將持續較長一段時間,若是是15分鐘備份一次事務日誌(這裏爲了說明,假設事務日誌是均衡、平均產生的),那麼一次事務日誌備份只須要備份3.75GB大小的事務日誌。若是從資源消耗的角度來講,頻繁的事務日誌備份反而能分散IO到不一樣時間段,避免較短期產生大量的IO操做。這樣對系統IO性能反而好處較多。server
並且頻繁的事務日誌備份不只能夠減小一次備份事務日誌的大小,從時間範圍上分散IO,並且頻繁的事務日誌備份,還有增長日誌截斷頻率的優勢,讓事務日誌文件不會變得很是大。
那麼說了這麼多,頻繁的事務日誌備份都是好處,那麼是否是我設置的越頻繁越好呢? 要不要設置爲1分鐘一次事務日誌備份呢?這個也不盡然,咱們知道不少事務日誌備份做業是串行備份多個數據庫。若是一分鐘作一次事務日誌備份,那麼可能出現做業在一分鐘內運行不完的狀況。另外,可能會產生大量的事務備份文件,管理和還原的時候也會有所幹擾。正確的作法權衡多方面考慮,設置合適的備份頻率。
如何設置日誌備份的頻率呢?官方文檔有這樣的描述:
· 事務日誌備份頻率應足夠支持業務需求,尤爲是對損壞的日誌存儲可能致使的數據丟失的容忍程度。
· 適當的日誌備份頻率取決於您對數據丟失風險的容忍程度與所能存儲、管理和潛在還原的日誌備份數量之間的平衡。 實現恢復策略時,請考慮必需的RTO和 RPO,特別是日誌備份頻率。
· 每 15 到 30 分鐘進行一第二天志備份可能就已足夠。 可是若是您的業務要求將工做丟失的風險最小化,請考慮進行更頻繁的日誌備份。
完整備份包含事務日誌備份嗎?
數據庫完整備份將備份整個數據庫。 還包括部分的事務日誌,以便在還原完整數據庫備份後能夠恢復完整數據庫。其實差別備份也是如此。完整或差別備份須要日誌來將數據庫還原到當完整或差別備份結束時的事務一致性狀態。因此,完整備份或差別備份包含部分事務日誌備份。準確的說是從完整備份開始到結束這段時間的事務日誌備份。
完整備份會截斷事務日誌嗎?
首先,咱們先搞清楚一個概念,截斷日誌(log truncating)和日誌清理(log clearing)實際上是同一件事情,它們表示事務日誌的一部分被標記爲再也不須要,能夠覆蓋重複使用了(有點相似Oracle下的redo log歸檔後,能夠被從新覆蓋了)。在完整或大容量事務日誌恢復模式下,只有備份日誌纔會清除日誌。咱們知道完整備份會包含事務日誌備份,可是它確實不會截斷日誌(清除日誌),跟多詳細細節參考「Misconceptions around the log and log backups: how to convince yourself」
簡單恢復模式下能作事務日誌備份嗎?
不行。簡單的恢復模式下僅容許完整備份和差別數據庫備份,而且沒有進行事務日誌備份的機會。 在簡單恢復模型中建立檢查點時,將從事務日誌中刪除全部已提交的事務。
參考資料: