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