【譯】The Accidental DBA:SQL Server Backup

最近從新翻看The Accidental DBA,將SQL Server Backup部分稍做整理,方便之後查閱。此篇是Part 1
Part 2:The Accidental DBA:Troubleshooting Performance
Part 3:The Accidental DBA:Troubleshooting
1、Understanding RTO and RPO
1.一、RTO(Recovery Time Objective),停機時間,how much downtime is acceptablehtml

--downtime per year(24*365,5-nines means 99.999% up-time)
select 60*24*365*(1-0.99999)    --5.25600 minutes
select 60*24*365*(1-0.9999)        --52.5600 minutes
select 24*365*(1-0.999)            --8.760 hours

1.二、RPO(Recovery Point Objective),數據丟失,how much data or work it’s acceptable to lose
2、Recovery Models and Backup Types
2.一、Recovery Models(恢復模式)
完整:數據庫中全部修改完整記錄日誌;僅在執行事務日誌備份才截斷日誌
大容量日誌:部分修改(好比索引重建或批量導入)能最小化記錄日誌;僅在執行事務日誌備份才截斷日誌
簡單:部分修改(好比索引重建或批量導入)能最小化記錄日誌;進行檢查點(checkpoint)操做時會截斷日誌;不能進行事務日誌備份
總之,若是你的數據庫使用完整/大容量日誌恢復模式,你必須週期性的執行事務日誌備份,不然事務日誌會不斷的增加。
2.一、Backup types(備份類型)
完整:備份整個數據庫,它是其餘備份的基礎。完整備份會備份數據文件中的全部數據+部分事務日誌記錄。事務日誌記錄用於恢復此數據庫時恢復到事務一致性。完整備份不會截斷事務日誌,實際上它不會以任何方式影響事務日誌。
事務日誌:備份自上次事務日誌備份後產生的全部事務日誌記錄。事務日誌備份不能執行,直到一個完整備份已經執行;可是一旦完整備份執行,事務日誌備份和完整備份再也不受任何一方影響。
差別:備份自上次完整備份後全部變動的數據。差別備份是累積的,而不是增量的。差別備份用於加快恢復速度,它本質上等效於最近一次完整備份以後的全部事務日誌備份的淨效果。
其餘更小粒度的數據備份:完整文件組備份、完整文件備份、差別文件組備份、差別文件備份
災難發生的第一件事是執行一個事務日誌備份(尾日誌備份),捕獲自上次調度事務日誌備份以後的全部事務日誌。而後按照完整備份+差別備份+事務日誌備份+尾日誌備份的順序恢復。
3、Planning a Recovery Strategy
你必須明確須要多快恢復數據庫到某個Point,而後使用這些信息設置備份而且在災難來襲時能夠正確恢復。
就數據丟失而言,能容忍的數據丟失定義了事務日誌備份的執行頻率。若是能容忍15分鐘的數據丟失,那麼你必須至少每15分鐘執行一次事務日誌備份。若是零容忍數據丟失,依賴事務日誌備份是很危險的,由於災難可能破壞數據和日誌文件,以至沒法進行尾日誌備份。這種狀況下,你應該選擇數據鏡像、AlwaysOn等同步技術。
就停機時間而言,能容忍的停機時間定義了整個恢復序列完成須要多快,從最近的完整備份到最後的事務日誌備份恢復。這意味着你將不得不對恢復進行測試,以確保在最壞的狀況下能夠在停機時間內恢復。
3.一、恢復策略
一、定義數據庫的停機時間和數據丟失需求
二、計算知足步驟1所需的恢復
三、計算知足步驟2所需的備份
四、測試恢復序列確保其知足步驟1的條件
五、若是恢復序列不知足步驟1,則返回到步驟3(或者推遲停機需求,或提供一個高可用解決方案容許快速故障轉移到數據庫的冗餘副本)
4、Essential BACKUP Options
COMPRESSION:壓縮備份,減少備份文件,加快備份恢復速度
COPY_ONLY:對於週期備份計劃,想單獨獲取一個備份文件,使用此選項不影響差別備份基準/事務日誌備份鏈
DESCRIPTION and File Names:備份描述,並提供明瞭的文件名稱
CHECKSUM:寫入介質前檢查校驗和
STATS:打印執行進度
5、Backup Testing for Validation
若是你的備份有使用CHECKSUM選項,你至少應該作相似的事情:sql

RESTORE VERIFYONLY
FROM DISK = N'F:\SQLskills\20130609_SalesDB_Full.bck'
WITH CHECKSUM;
GO

最好是實際執行恢復操做,使用CHECKSUM選項;而後運行一致性檢查(DBCC CHECKDB),以確保你將使用的備份都有效。
若是你發現你的備份損壞了,你能夠進行新的備份,或者使用"相對舊"的備份,這些備份是你一直保留的。
6、Backup Storage and Retention
6.一、備份存儲
存儲備份的最糟糕的地方就是與數據庫自己相同的I/O子系統。
一個常見的備份存儲策略:首先備份到本地磁盤存儲,備份到網絡共享,或者備份本地存儲而後拷貝到網絡共享,而後將備份拷貝到線上歸檔系統而且建立一個離線備份。
6.二、備份保持期
若是你不能使用最新的完整備份,那麼最好就是使用它以前的那個完整備份,而後結合其餘的差別+事務日誌備份,你就能夠恢復數據。
若是備份策略是完整備份/周+差別備份/天+事務日誌備份/30分鐘,我會盡可能保持線上一個月的備份,線下三個月的備份。
總結
一、什麼是停機時間(RTO)和數據丟失(RPO)需求,爲何它們對你的數據庫很重要
二、三種恢復模式,它們是如何影響日誌和日誌備份的;三種主要的備份類型(完整、差別、事務日誌)
三、如何設計一個將RPO和RTO需求考慮在內的恢復策略,並依此建立備份策略
四、經常使用的備份選項
五、驗證備份文件確保在你須要的時候,它們可用
六、存儲備份文件的多個副本(本地/遠程,線上/線下);備份保持期,災難恢復時可使用"相對舊"的備份來恢復數據庫

相關文章
相關標籤/搜索