這里簡單總結一下關于SQL Server事務日志備份的一些疑問,如有其它更多疑問,歡迎你們留言討論,
事務日志備份頻繁有性能影響嗎?
關于事務日志備份,如果設定得非常頻繁有什么性能影響嗎? 這個是不少人的疑惑,頻繁的事務日志備份是否影響性能呢?其實這是一個謬論,關于這些問題,我們先來做個假設,假設兩小時內產生了30G大小的事務日志,那么對于下面幾種事務日志備份策略:
1: 2小時做一次事務日志備份,
2: 1小時做一次事務日志備份,
3:30分鐘做一次事務日志備份,
4: 15分鐘做一次事務日志備份,
5: 5分鐘做一次事務日志備份,
總體來說,如果2小時內,產生了30G大小的事務日志,那么不管哪種備份策略,事務日志備份的IO總量(或者事務日志備份檔案大小)是一樣的,并不會因為日志備份頻率有所區別,但是如果2小時備份一次事務日志,那么一次將要備份30G大小的日志,這個對IO的影響將持續較長一段時間,如果是15分鐘備份一次事務日志(這里為了說明,假設事務日志是均衡、平均產生的),那么一次事務日志備份只需要備份3.75GB大小的事務日志,如果從資源消耗的角度來說,頻繁的事務日志備份反而能分散IO到不同時間段,避免較短時間產生大量的IO操作,這樣對系統IO性能反而好處較多,
而且頻繁的事務日志備份不僅可以減少一次備份事務日志的大小,從時間范圍上分散IO,而且頻繁的事務日志備份,還有增加日志截斷頻率的優點,讓事務日志檔案不會變得非常大,
那么說了這么多,頻繁的事務日志備份都是好處,那么是不是我設定的越頻繁越好呢? 要不要設定為1分鐘一次事務日志備份呢?這個也不盡然,我們知道很多事務日志備份作業是串行備份多個資料庫,如果一分鐘做一次事務日志備份,那么可能出現作業在一分鐘內運行不完的情況,另外,可能會產生大量的事務備份檔案,管理和還原的時候也會有所干擾,正確的做法權衡多方面考慮,設定合適的備份頻率,
如何設定日志備份的頻率呢?官方檔案有這樣的描述:
· 事務日志備份頻率應足夠支持業務需求,尤其是對損壞的日志存盤可能導致的資料丟失的容忍程度,
· 適當的日志備份頻率取決于您對資料丟失風險的容忍程度與所能存盤、管理和潛在還原的日志備份數量之間的平衡, 實作恢復策略時,請考慮必需的RTO和 RPO,特別是日志備份頻率,
· 每 15 到 30 分鐘進行一次日志備份可能就已足夠, 但是如果您的業務要求將作業丟失的風險最小化,請考慮進行更頻繁的日志備份,
完整備份包含事務日志備份嗎?
資料庫完整備份將備份整個資料庫, 還包括部分的事務日志,以便在還原完整資料庫備份后可以恢復完整資料庫,其實差異備份也是如此,完整或差異備份需要日志來將資料庫還原到當完整或差異備份結束時的事務一致性狀態,所以,完整備份或差異備份包含部分事務日志備份,準確的說是從完整備份開始到結束這段時間的事務日志備份,
完整備份會截斷事務日志嗎?
首先,我們先搞清楚一個概念,截斷日志(log truncating)和日志清理(log clearing)其實是同一件事情,它們表示事務日志的一部分被標記為不再需要,可以覆寫重復使用了(有點類似Oracle下的redo log歸檔后,可以被重新覆寫了),在完整或大容量事務日志恢復模式下,只有備份日志才會清除日志,我們知道完整備份會包含事務日志備份,但是它確實不會截斷日志(清除日志),跟多詳細細節參考“Misconceptions around the log and log backups: how to convince yourself”
簡單恢復模式下能做事務日志備份嗎?
不行,簡單的恢復模式下僅允許完整備份和差異資料庫備份,并且沒有進行事務日志備份的機會, 在簡單恢復模型中創建檢查點時,將從事務日志中洗掉所有已提交的事務,
參考資料:
https://www.sqlskills.com/blogs/paul/misconceptions-around-the-log-and-log-backups-how-to-convince-yourself/
https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/transaction-log-backups-sql-server?view=sql-server-ver15
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1210.html
標籤:SQL Server
