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