周若谷
摘要:隨著信息技術的快速發展企業的數據存儲量越來越大,目前針對數據庫中數據的攻擊也越來越多,怎樣提高數據的安全性和數據恢復能力一直是用戶和廠商關注的焦點。備份是恢復數據最有效的方法,選擇怎樣的備份策略使得當損害來臨的時候將損失減小到最小是備份還原的關鍵。本文主要講解在微軟Sql Server服務器中用戶數據庫的備份還原策略,對當前企業的數據安全和數據恢復提供參考。
關鍵詞:SQL SERVER;數據庫;備份;還原;企業
隨著信息技術的快速發展,企業的信息數據量也急劇增長。如何避免突如其來的數據破壞(如:黑客攻擊、病毒襲擊、硬件故障和人為誤操作等),提高數據的安全性和數據恢復能力一直是用戶和廠商關注的焦點。備份是恢復數據最容易和最有效的保證方法,企業應當根據自己的經濟情況和所能承受的損失來設計數據庫的備份以及還原策略。
1 選擇數據庫恢復模型
在創建企業數據庫時就應當規劃好數據庫的恢復模型,SQL Server中有三種數據庫恢復模型,當損害發生時,每個模型都可以不同程度的恢復數據庫:
1.1 完全恢復模型
在該模型下,SQL Server可以記錄數據庫的所有更改,因此如果日志文件本身沒有被損壞,除故障發生時沒有執行完的事務外,服務器可以還原所有數據,并且可以將數據庫還原到任意時間點。該模型的主要問題是日志文件較大產生的存儲空間開銷和系統性能開銷。
1.2 大容量日志記錄恢復模型
該模型與完全恢復模型相似,當損害發生時使用數據庫和日志備份一同來重建數據庫,但是對于CREATE INDEX、大容量轉載操作、SELECT INTO、WRITETEXT以及UPDATETEXT使用較少的日志空間,不在日志中存儲這些操作的詳細情況。該模型可以還原所有的數據,但是不能只還原備份的一部分,比如不能像完全模型一樣還原到某一個特定標記。
1.3 簡單恢復模型
對于小型數據庫或者不經常更新數據的數據庫,可以使用該模型。它使用數據庫的完全備份或者差異備份恢復數據,只能將數據還原到最后一次備份的時間點的狀態。優點是日志占用空間小。
2 選擇備份數據庫的方法
SQL Server有四種備份方法來滿足數據庫恢復的不同的實際需求:
2.1 完全數據庫備份
完全數據庫備份時,服務器備份整個數據庫。系統發生故障時完全數據庫備份就是恢復的基準。所以任何一個備份策略都必須先對目標數據庫進行完全數據庫備份。
2.2 差異備份
進行差異備份時,服務器備份當前數據庫與上一次完全備份數據庫時相比更改的部分,以及備份過程中發生的活動、事務日志中所有未提交的事務。
2.3 事務日志備份
進行日志備份時,服務器備份上一次執行BACKUP LOG語句到現在執行BACKUP LOG語句中間的這段事務日志。必須明確的是:在進行日志備份之前一定至少要完成一次完全數據庫備份,否則在還原的時候將無法還原事務日志。
2.4 數據庫文件和文件組備份
微軟給超大型的數據庫提供了一種備份方式——文件組和文件備份方法,在這種方式中管理員可以將數據庫大卸八塊,將多個數據文件或者文件組分別進行備份,而不是傳統的備份整個數據文件。需要注意的是,執行這種備份方式時必須同時執行日志備份。
2.5備份策略案例
2.5.1僅使用完全數據庫備份策略
當用戶數據庫較小或者數據庫很少進行修改時,可以只選擇完全數據庫備份,因為完全備份一個小數據庫的時間是可以接受的或者少量的數據丟失是可接受的。此時應該注意經常對事務日志進行清理。例如,某數據庫11M,每天修改很少,每天下午18點對他進行完全備份。某天上午5點數據庫損壞,則使用前一天的完全備份還原數據庫。缺點是:最后一次完全備份到5點之間的數據庫修改將被丟失。如果對丟失數據有一定的要求,可以考慮完全備份和其他備份的聯合使用。
2.5.2完全數據庫和事務日志備份策略
需要對經常修改的數據庫進行完全數據庫備份和日志備份,當然也應考慮它們所需的時間是否可以接受。
例如,某數據庫每天下午18行完全備份,上午9點、中午12點、下午16日志備份,某天下午13點物理媒體損壞。可以立刻用WITH NO_TRUNCATE選項備份日志,用前一天的完全數控備份還原數據庫,再應用當天的9點、12點的日志備份還原數據庫,最后用開始時建立的日志備份還原數據庫,此時數據庫的數據不會丟失。
2.5.3差異備份策略
當完全數據庫和事務日志備份策略還原所消耗的時間用戶不能接受時可以考慮使用差異備份策略,該策略可以減少還原的時間,因為它保留最后一次完全備份數據庫的更改,而不必使用多個較大的日志文件。應該注意的是:差異備份不能捕獲事務日志中的更改,因此也還必須周期性的備份事務日志。
例如,某數據庫每周日2點進行一次完全備份,每個工作日的19點進行差異備份,每天上午8點、18點進行日志備份,某天上午8點30數據庫損壞。可以立刻用WITH NO_TRUNCATE選項備份日志,用最近的周日的完全數據備份還原數據庫,還原前一天的差異備份,再用上午8點的日志備份還原,最后用剛才用WITH NO_TRUNCATE選項備份日志來還原,此時的數據也不會丟失。
2.5.4文件和文件組備份策略
這種備份策略最常用的情況是:當數據庫特別大的時候。例如氣象衛星收集的圖像數庫,數據庫數量相當大完全備份可能需要幾十個鐘頭這種情況下可以考慮分別對它的數據文件或者文件組進行備份以減少備份所消耗的時間。
例如,數據庫的數據分別存放在三個不同的文件中,每周日2點進行完全備份,星期一1點進行文件一的備份,周二1點備份文件二、周三1點備份文件三,日志文件每天23點進行,周四的時候文件2物理媒體損壞,立刻用WITH NO_TRUNCATE選項備份日志,然后使用周二的備份還原數據,接著使用前一天的日志文件還原,最后用剛才用WITH NO_TRUNCATE選項備份的日志來還原數據庫。
3從不同的備份類型還原數據庫
當損壞發生時,對于不同的備份類型可以有不同的還原方法。
3.1從完全數據庫備份還原
當數據庫的物理磁盤受損,數據庫整個損壞或被刪除,應該從完全數據庫備份進行還原,如果恢復后其后沒有任何事務日志或者差異備份,則指定RECOVERY選項,其后還有事務日志備份和差異備份需要還原,則指定NORECOVERY直到最近的備份被還原。
3.2從差異備份還原
必須明確的是,差異備份只還原從它最近的一次完全備份到差異備份時數據庫的更改部分,如果后面還有日志文件需要還原則使用NORECOVERY選項。否則指定RECOVERY選項。
3.3從事務日志備份還原
從事務日志備份還原時,事務日志記錄的數據庫的更改都會被SQL SERVER還原,也就是說還原事務日志可以將數據庫還原到特定的時間點。
3.4從文件組或文件還原
從文件或文件組中還原數據的好處是,它可以減少還原超大型數據庫的時間,在指定文件被損壞時恢復數據。
4總結
本文主要講解在微軟Sql Server服務器中用戶數據庫的備份還原策略,對當前企業的數據安全和數據恢復提供參考。
參考文獻
[1]閃四清. SQL SERVER2000系統管理指南. 清華大學出版社. 2000
[3]MICROSOFT.企業級數據庫的安裝配置和管理.高等教育出版社,2003