程代娣,王鶴琴
(安徽警官職業(yè)學(xué)院,安徽 合肥230031)
在互聯(lián)網(wǎng)和云技術(shù)時(shí)代,網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)在很多行業(yè)和部門管理數(shù)據(jù)中得到廣泛采用,因而,數(shù)據(jù)安全問(wèn)題倍受用戶重視。對(duì)于一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)來(lái)說(shuō),數(shù)據(jù)是至關(guān)重要的資源,一旦數(shù)據(jù)丟失,可能影響正常的業(yè)務(wù)活動(dòng),甚至造成災(zāi)難性后果。盡管SQL Server 的安全管理機(jī)制采取了各種保護(hù)措施來(lái)維護(hù)數(shù)據(jù)的安全性和完整性,但在計(jì)算機(jī)系統(tǒng)中常常出現(xiàn)硬件故障、軟件故障、誤操作和惡意破壞行為,這些故障的出現(xiàn)在不同程度上會(huì)破壞數(shù)據(jù)庫(kù)中的數(shù)據(jù),甚至引起災(zāi)難性的后果。因此,僅僅靠登錄帳號(hào)、數(shù)據(jù)庫(kù)用戶賬號(hào)和權(quán)限管理措施,還不能完全確保數(shù)據(jù)庫(kù)的安全。本文提出了一系列的數(shù)據(jù)備份和恢復(fù)措施,以保證SQL Server 數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的完整性和安全性,將損失減少到最小程度。
數(shù)據(jù)庫(kù)備份是指對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)定期進(jìn)行復(fù)制保存到本地存儲(chǔ)設(shè)備或其他機(jī)器存儲(chǔ)設(shè)備上,當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)故障發(fā)生時(shí),能盡快地利用這些數(shù)據(jù)備份把數(shù)據(jù)庫(kù)恢復(fù)到破壞前的狀態(tài),使系統(tǒng)能在較短的時(shí)間內(nèi)恢復(fù)正常,將損失減小到最低[1]。
2.2.1 完全數(shù)據(jù)庫(kù)備份
完全數(shù)據(jù)庫(kù)備份是備份數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)信息,包括備份數(shù)據(jù)文件、事務(wù)日志部分(以便可以恢復(fù)整個(gè)備份)及數(shù)據(jù)庫(kù)中的所有對(duì)象,也稱全庫(kù)備份[2]。完整數(shù)據(jù)庫(kù)備份還原到備份時(shí)刻的數(shù)據(jù)庫(kù)狀態(tài),但從備份以后到發(fā)生故障的這段時(shí)間對(duì)數(shù)據(jù)庫(kù)的修改將被丟失。完全備份是所有備份的基點(diǎn),其他備份只有在執(zhí)行了完全備份之后才能被執(zhí)行。它的優(yōu)點(diǎn)是操作簡(jiǎn)單,備份數(shù)據(jù)庫(kù)所有信息。完全數(shù)據(jù)庫(kù)備份適合數(shù)據(jù)庫(kù)數(shù)量少,且數(shù)據(jù)更改不是很頻繁的情況,一般設(shè)定系統(tǒng)1 周做1 次全庫(kù)備份。
2.2.2 數(shù)據(jù)庫(kù)差異備份
數(shù)據(jù)庫(kù)差異備份,是指只備份從最近完全備份以后的對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改更新的數(shù)據(jù)。它以最近一次全庫(kù)備份為基點(diǎn),備份最近一次全庫(kù)備份后變化的內(nèi)容,也稱增量備份[3]。備份內(nèi)容少且備份速度快,因而,為減少丟失數(shù)據(jù)的風(fēng)險(xiǎn)可經(jīng)常備份。若需要使用增量備份還原被破壞的數(shù)據(jù)庫(kù)系統(tǒng),不能直接使用數(shù)據(jù)增量備份來(lái)還原,而需要先用最新的一次全庫(kù)備份進(jìn)行來(lái)恢復(fù),然后再使用一次增量備份進(jìn)行還原到差異備份的時(shí)刻點(diǎn)。
2.2.3 事務(wù)日志備份
事務(wù)日志是一個(gè)記錄數(shù)據(jù)庫(kù)改變的單獨(dú)文件。事務(wù)日志備份指只復(fù)制上一次日志備份之后的日志記錄,又稱日志備份。對(duì)于大型數(shù)據(jù)庫(kù)來(lái)說(shuō),進(jìn)行一次完全備份會(huì)占用較長(zhǎng)的時(shí)間,這降低數(shù)據(jù)庫(kù)系統(tǒng)的整體性能,為了提高數(shù)據(jù)庫(kù)系統(tǒng)的使用效率,此時(shí)可采用事務(wù)日志備份方式。日志備份也必須要有一個(gè)完全備份作為恢復(fù)的基準(zhǔn)點(diǎn)。當(dāng)數(shù)據(jù)庫(kù)需要事務(wù)日志備份時(shí),數(shù)據(jù)庫(kù)還原模式應(yīng)首先設(shè)為“完全”或“大容量日志記錄”的方式,然后進(jìn)行一個(gè)完全數(shù)據(jù)庫(kù)備份后才能進(jìn)行事務(wù)日志備份。事務(wù)日志備份所處理的數(shù)據(jù)量較小,占用較少的備份時(shí)間和存儲(chǔ)空間,一般系統(tǒng)每小時(shí)進(jìn)行一次事務(wù)日志備份。當(dāng)使用事務(wù)日志備份還原數(shù)據(jù)庫(kù)時(shí),不能直接單獨(dú)使用,需要用一次完全數(shù)據(jù)庫(kù)備份先還原,然后再使用事務(wù)日志備份按備份的時(shí)間先后順序依次還原。
2.2.4 數(shù)據(jù)文件及文件組備份
數(shù)據(jù)庫(kù)一般是保存在存儲(chǔ)介質(zhì)上的多個(gè)文件組成。數(shù)據(jù)文件及文件組備份是指定對(duì)數(shù)據(jù)庫(kù)中的某一部分文件進(jìn)行復(fù)制。這類恢復(fù)過(guò)程簡(jiǎn)單,在恢復(fù)時(shí)只對(duì)被破壞的數(shù)據(jù)庫(kù)文件做恢復(fù),不必對(duì)其余部分?jǐn)?shù)據(jù)庫(kù)還原,加快了恢復(fù)進(jìn)度?;謴?fù)部分?jǐn)?shù)據(jù)和文件或文件組后,必須再恢復(fù)該備份后所做的所有事務(wù)日志備份,通過(guò)結(jié)合事務(wù)日志備份,這樣可避免造成數(shù)據(jù)庫(kù)不一致。因此,在做文件或文件組備份之后,有必要立即做一個(gè)事務(wù)日志備份[4]。
盡管SQL Server 提供了多種備份方式,但要使數(shù)據(jù)庫(kù)備份方式符合實(shí)際應(yīng)用需要,還需要制定合適的備份策略。不同的備份適用不同的應(yīng)用,選擇或制定最合適的備份策略可以最大程度地減少數(shù)據(jù)丟失,并可加快恢復(fù)過(guò)程。
2.3.1 完全備份策略
完全備份策略適合數(shù)據(jù)庫(kù)數(shù)據(jù)量不大,且數(shù)據(jù)修改小或允許一定量的數(shù)據(jù)丟失時(shí),備份的時(shí)間間隔較大,一般1 周備份1 次。
2.3.2 完全備份+日志備份策略
如果用戶數(shù)據(jù)十分重要不允許丟失太多的數(shù)據(jù),數(shù)據(jù)庫(kù)又更新頻繁,為了節(jié)省時(shí)間,不易經(jīng)常備份數(shù)據(jù)庫(kù),可在完全備份中間進(jìn)行日志備份。完全備份加日志備份策略特別適合生產(chǎn)數(shù)據(jù)庫(kù)系統(tǒng),這時(shí)可以在完全備份中間加入日志備份。由于數(shù)據(jù)庫(kù)備份的容量較小,可以較頻繁進(jìn)行,使數(shù)據(jù)庫(kù)數(shù)據(jù)丟失程度最小,使用日志備份還可以在還原數(shù)據(jù)時(shí)指定到特定的時(shí)間點(diǎn)。
2.3.3 完全備份+差異備份+日志備份策略
僅使用完全備份加日志備份的方法恢復(fù)數(shù)據(jù)庫(kù),則還原時(shí)將會(huì)占用大量的時(shí)間。差異備份操作速度快,減少備份時(shí)間。如果希望加快恢復(fù)故障數(shù)據(jù)庫(kù)的時(shí)間,降低數(shù)據(jù)損失,在進(jìn)行完全備份中間加一些差異備份,即完全備份+差異備份+日志備份策略組合,在恢復(fù)時(shí)也只還原最近一次差異備份,然后依次還原日志備份。
2.3.4 數(shù)據(jù)庫(kù)鏡像(硬盤(pán)鏡像備份)
數(shù)據(jù)庫(kù)鏡像也稱磁盤(pán)鏡像備份,鏡像就是在不同的存儲(chǔ)設(shè)備上同時(shí)保存兩個(gè)數(shù)據(jù)庫(kù),一個(gè)設(shè)備稱為主設(shè)備,另一個(gè)稱為鏡像設(shè)備,二者互為鏡像關(guān)系。為了防止介質(zhì)故障影響數(shù)據(jù)庫(kù)系統(tǒng)的有用性,SQL Server 數(shù)據(jù)庫(kù)管理系統(tǒng)可使用數(shù)據(jù)庫(kù)鏡像功能來(lái)還原數(shù)據(jù)庫(kù),通常由數(shù)據(jù)庫(kù)管理員設(shè)定SQL Server 系統(tǒng)自動(dòng)完成。即按照數(shù)據(jù)庫(kù)管理員的指令,數(shù)據(jù)庫(kù)管理系統(tǒng)把全部數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)中核心數(shù)據(jù)自動(dòng)復(fù)制到備用存儲(chǔ)介質(zhì)上,主數(shù)據(jù)庫(kù)修改變化時(shí),自動(dòng)地把更新后的數(shù)據(jù)拷貝過(guò)去,實(shí)現(xiàn)了鏡像數(shù)據(jù)和主數(shù)據(jù)庫(kù)的同一性。
2.3.5 服務(wù)器鏡像備份(雙熱機(jī)備份)
在經(jīng)濟(jì)條件允許和數(shù)據(jù)的安全性要求特別高的情況下,可采用雙熱機(jī)備份策略。該方法保護(hù)數(shù)據(jù)最快,安全性高。雙熱機(jī)備份策略就是單獨(dú)使用一臺(tái)計(jì)算機(jī)作為備份服務(wù)器,此臺(tái)計(jì)算機(jī)的軟硬件配置與服務(wù)器配置相當(dāng),隨時(shí)替代主服務(wù)器,如果主服務(wù)器受到安全上的攻擊和軟硬件故障,用備份服務(wù)器接替主服務(wù)器工作即可,就好像什么也沒(méi)有發(fā)生,然而這是費(fèi)用最昂貴的。
2.3.6 異機(jī)備份
異機(jī)備份則是最好最經(jīng)濟(jì)的備份方式。具體做法是:在局域網(wǎng)的任何一臺(tái)工作站計(jì)算機(jī)上安裝(Windows NT)或SQL Server,并在該機(jī)上建立一個(gè)與服務(wù)器上數(shù)據(jù)庫(kù)同名的數(shù)據(jù)庫(kù),利用SQL Server系統(tǒng)本身提供的異機(jī)傳送功能(在企業(yè)管理器重的“工具”菜單下的DataBase/Object Transfer)通過(guò)設(shè)置定時(shí)由計(jì)算機(jī)自動(dòng)地把服務(wù)器中數(shù)據(jù)庫(kù)的數(shù)據(jù)傳送到該工作站機(jī)的數(shù)據(jù)庫(kù)中。
數(shù)據(jù)庫(kù)恢復(fù)是指利用事先的備份策略將數(shù)據(jù)庫(kù)系統(tǒng)從錯(cuò)誤狀態(tài)還原到最近的正確時(shí)刻狀態(tài)的過(guò)程[5]。
數(shù)據(jù)庫(kù)出現(xiàn)故障的原因多種多樣,不同的故障原因采用還原策略和方法也不一致。對(duì)于系統(tǒng)故障、事務(wù)故障恢復(fù)由系統(tǒng)重新啟動(dòng)時(shí)自動(dòng)完成。而對(duì)于發(fā)生介質(zhì)故障,磁盤(pán)上的物理數(shù)據(jù)和日志被破壞,損失最大,恢復(fù)需要用戶干預(yù)。這里主要分析當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)介質(zhì)故障或異常毀壞時(shí),適合采用數(shù)據(jù)備份對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)。恢復(fù)模式是數(shù)據(jù)庫(kù)的一種特性,它控制著數(shù)據(jù)庫(kù)備份和還原的基本行為,數(shù)據(jù)庫(kù)管理員應(yīng)根據(jù)實(shí)際運(yùn)作的需求,對(duì)數(shù)據(jù)的可用性和恢復(fù)需求來(lái)選擇合適的恢復(fù)模式,對(duì)介質(zhì)引起的故障SQL Server 提供了3 種恢復(fù)技術(shù)。
3.2.1 利用備份技術(shù)恢復(fù)
數(shù)據(jù)庫(kù)管理員合理規(guī)劃好數(shù)據(jù)庫(kù)備份策略,并進(jìn)行定期備份數(shù)據(jù)瞬時(shí)正確狀態(tài),以保證在數(shù)據(jù)庫(kù)系統(tǒng)發(fā)生故障時(shí),管理員可以利用備份副本還原數(shù)據(jù)庫(kù)到備份完成時(shí)刻點(diǎn)的正確狀態(tài)?;謴?fù)的方案是首先重裝數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)管理系統(tǒng)能正常運(yùn)行,然后利用介質(zhì)損壞前對(duì)數(shù)據(jù)庫(kù)已做的備份或利用鏡像設(shè)備恢復(fù)數(shù)據(jù)庫(kù)。SQL Server 提供了3 種恢復(fù)模式。
3.2.1.1 簡(jiǎn)單恢復(fù)模式
該模式系統(tǒng)自動(dòng)地定期將事務(wù)日志中不活動(dòng)的部分清除掉,只能進(jìn)行完全備份和差異備份,不使用事務(wù)日志備份,只能還原到執(zhí)行備份操作的那一時(shí)刻,不可能恢復(fù)到失敗時(shí)刻點(diǎn),將丟失執(zhí)行備份之后的所有修改的數(shù)據(jù)。對(duì)生產(chǎn)系統(tǒng)來(lái)說(shuō),丟失最新的更新時(shí)是難以接受的,因此,簡(jiǎn)單恢復(fù)模式并不適合生產(chǎn)系統(tǒng)。
3.2.1.2 完整恢復(fù)模式
該模式使用數(shù)據(jù)庫(kù)備份和事務(wù)日志備份來(lái)對(duì)數(shù)據(jù)庫(kù)故障進(jìn)行完全防范,防止最大范圍的故障情形所造成的工作損失,為數(shù)據(jù)提供了最大的保護(hù)性。事務(wù)日志中記錄了數(shù)據(jù)庫(kù)數(shù)據(jù)的全部更新操作,當(dāng)數(shù)據(jù)庫(kù)遭到破壞時(shí),可以利用事務(wù)日志快速地將數(shù)據(jù)庫(kù)恢復(fù)到故障點(diǎn)狀態(tài)?;謴?fù)順序是首先使用最近的一次完整備份恢復(fù),其次恢復(fù)最近的一個(gè)增量備份,最后按備份先后順序還原日志備份。
3.2.1.3 大容量日志恢復(fù)模式
作為完全恢復(fù)模式的補(bǔ)充模式,大容量日志恢復(fù)模式使用最小的方法記錄大規(guī)模大容量操作,其事務(wù)日志占用的磁盤(pán)空間遠(yuǎn)遠(yuǎn)小于其他恢復(fù)模式。它保護(hù)大規(guī)模操作不因介質(zhì)媒體故障而受到損害,提供最佳性能并占用最小日志空間,為某些大規(guī)模操作提供了更高的性能和最少的日志使用空間。大容量日志恢復(fù)模式不能使數(shù)據(jù)庫(kù)系統(tǒng)恢復(fù)到破壞時(shí)的正確狀態(tài),因此該恢復(fù)模式下,需要事先進(jìn)行日志備份。
3.2.2 利用鏡像技術(shù)恢復(fù)
數(shù)據(jù)庫(kù)鏡像功能常用于恢復(fù)由磁盤(pán)介質(zhì)引起的數(shù)據(jù)庫(kù)故障。當(dāng)發(fā)生介質(zhì)故障影響數(shù)據(jù)庫(kù)系統(tǒng)的有用性時(shí),數(shù)據(jù)庫(kù)管理員可使用SQL Server 數(shù)據(jù)庫(kù)鏡像功能來(lái)還原數(shù)據(jù)庫(kù)。突發(fā)介質(zhì)損壞引起的故障,鏡像的磁盤(pán)就代替主磁盤(pán)進(jìn)行工作,實(shí)現(xiàn)數(shù)據(jù)庫(kù)繼續(xù)使用的,并通過(guò)鏡像數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的修復(fù),不必關(guān)閉系統(tǒng)或重裝數(shù)據(jù)庫(kù)副本。
3.2.3 異機(jī)備份恢復(fù)技術(shù)
采用異機(jī)備份恢復(fù)技術(shù)策略,一旦服務(wù)器(操作系統(tǒng)) 崩潰或Microsoft SQL Server 系統(tǒng)崩潰時(shí),只要重裝服務(wù)器操作系統(tǒng)(Microsoft Windows NT)或重裝Microsoft SQL Server 從異機(jī)傳送數(shù)據(jù)恢復(fù),即采用異機(jī)傳送工具來(lái)通過(guò)該工作站把數(shù)據(jù)傳回至服務(wù)器的Microsoft SQL Server 數(shù)據(jù)庫(kù)中,以確保數(shù)據(jù)的安全恢復(fù)。這也是最好最經(jīng)濟(jì)的備份恢復(fù)技術(shù)。
總之,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)性質(zhì)特點(diǎn),合理有效的規(guī)劃數(shù)據(jù)庫(kù)備份和恢復(fù)策略,可以較好地保證數(shù)據(jù)的安全。SQL Server 是一個(gè)高性能、分布式的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)管理系統(tǒng),它的備份和還原組件為數(shù)據(jù)庫(kù)中的關(guān)鍵數(shù)據(jù)提供了有力的安全保障。本文提出了一系列的備份和恢復(fù)策略,在數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)故障時(shí),只要采用適當(dāng)有效地備份和恢復(fù)措施,大型數(shù)據(jù)庫(kù)SQL Server 的數(shù)據(jù)安全性和完整性能夠得到有效地保障。
[1]張浩軍,張鳳玲.數(shù)據(jù)庫(kù)設(shè)計(jì)開(kāi)發(fā)技術(shù)案例教程[M].北京:清華大學(xué)出版社,2012:242.
[2]尹志宇,郭晴.數(shù)據(jù)庫(kù)原理與應(yīng)用教程——SQL Server2008[M].北京:清華大學(xué)出版社,2013:285.
[3]何玉潔.數(shù)據(jù)庫(kù)原理與應(yīng)用教程(第2 版)[M].北京:機(jī)械工業(yè)出版社,2007:168.
[4]王暉媛.SQL Server 中數(shù)據(jù)庫(kù)備份和恢復(fù)方法的研究[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2011(2):112.
[5]王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論(第4 版)[M].北京:高等教育出版社,2006:285.