• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      案例驅(qū)動的數(shù)據(jù)庫恢復策略剖析

      2019-11-21 05:38:06
      關(guān)鍵詞:系統(tǒng)故障事務日志

      汪 洋

      (安慶師范大學計算機與信息學院,安徽安慶246133)

      數(shù)據(jù)庫系統(tǒng)發(fā)生故障不可避免,如何保證發(fā)生故障后迅速將數(shù)據(jù)庫恢復到正確的狀態(tài),是衡量一個數(shù)據(jù)庫管理系統(tǒng)(DBMS)優(yōu)劣的重要指標[1],也是數(shù)據(jù)庫管理員(DBA)必備的技能之一。深刻理解并掌握數(shù)據(jù)庫系統(tǒng)恢復策略是數(shù)據(jù)庫教學中的一個重點和難點,現(xiàn)有數(shù)據(jù)庫教材及實際教學中對恢復策略的介紹太偏重理論,學生理解困難,難以真正掌握其實際應用。本文以案例形式詳細分析了事務故障、系統(tǒng)故障和介質(zhì)故障[1-3]這3類數(shù)據(jù)庫故障的成因和產(chǎn)生的結(jié)果,并詳細介紹了恢復策略。

      1 案例驅(qū)動的事務故障恢復策略

      事務故障是對單個事務而言的,指發(fā)生事務故障時,該事務未運行到Commit Transaction 或Rollback Transaction處被終止,此時該未完成的事務把對數(shù)據(jù)庫的修改已寫入數(shù)據(jù)庫。

      1.1 事務故障的案例剖析

      案例1如圖1所示,T1事務由兩個操作構(gòu)成,A=A+1,B=B-1。T1事務在運行完第一個操作A=A+1后,發(fā)生了事務故障,第二個操作B=B-1沒有做,顯然T1事務是一個未完成的事務。若A的初值為1,B的初值為2,在如圖2所示的數(shù)據(jù)庫存儲中,此時事務T1對A的修改操作已寫入數(shù)據(jù)庫,數(shù)據(jù)庫中A的值由1被修改為2,很顯然數(shù)據(jù)庫中A=2是錯誤的,此時數(shù)據(jù)庫處于不一致(不正確)的狀態(tài),其原因就在于未完成的T1事務對A的修改操作已經(jīng)寫入到數(shù)據(jù)庫。

      1.2 事務故障恢復策略

      對于事務故障的恢復策略是利用日志文件對未完成的事務執(zhí)行撤消處理(Undo)。DBMS將事務的開始標記、結(jié)束標記和事務對數(shù)據(jù)庫的所有更新操作形成日志記錄并寫入日志文件,在案例1中形成了如圖3所示的日志文件。

      恢復策略:(1)反向掃描圖3所示的文件日志,查找T1事務的更新操作;(2)對T1事務的每一個更新操作執(zhí)行逆操作,將圖3中日志記錄中更新前的值A=1寫入數(shù)據(jù)庫,此時圖2中數(shù)據(jù)庫中A的值由2又變回原值1;(3)繼續(xù)反向掃描日志文件,查找T1事務的其他更新操作,并做同樣處理,直至讀到T1事務的開始標記結(jié)束。

      圖1 案例1事務故障示意圖

      圖2 案例1數(shù)據(jù)庫存儲變化示意圖

      圖3 案例1的日志文件

      2 案例驅(qū)動的系統(tǒng)故障恢復策略

      系統(tǒng)故障是指由于某些原因?qū)е聰?shù)據(jù)庫系統(tǒng)必須重啟的故障[1]。發(fā)生系統(tǒng)故障時,數(shù)據(jù)庫中有多個事務發(fā)生事務故障,此時,未完成的事務對數(shù)據(jù)庫的修改已寫入數(shù)據(jù)庫,而已完成的事務對數(shù)據(jù)庫的修改可能放于緩沖區(qū)內(nèi)還未寫入數(shù)據(jù)庫。以簡單易懂為目的,我們以兩個事務為例來介紹系統(tǒng)故障的成因和結(jié)果。

      2.1 系統(tǒng)故障的案例剖析

      案例2如圖4所示,當前數(shù)據(jù)庫系統(tǒng)中運行T1和T2兩個事務,圖5所示的數(shù)據(jù)庫存儲中A、B、C、D的初值分別為1,2,3,4。T1事務執(zhí)行完第一個操作A=A+1,并把對A值的修改寫入數(shù)據(jù)庫,此時數(shù)據(jù)庫內(nèi)A的值由1變?yōu)?。然后T2事務依次執(zhí)行了C=C+2,D=D-2兩個操作,此時修改值C=5,D=2存放于如圖6所示的系統(tǒng)緩沖區(qū)中,還未寫入數(shù)據(jù)庫時就發(fā)生了系統(tǒng)故障。顯然數(shù)據(jù)庫中A=2是錯誤的,此時數(shù)據(jù)庫處于不一致(不正確)的狀態(tài),其原因是未完成的T1 事務對A 的修改操作已經(jīng)寫入到數(shù)據(jù)庫;另一方面,T2是已完成事務,但對C和D值的修改沒有來得及寫入數(shù)據(jù)庫中。

      2.2 系統(tǒng)故障恢復策略

      發(fā)生系統(tǒng)故障時,未完成的事務對數(shù)據(jù)庫的更新操作已寫入數(shù)據(jù)庫,已完成的事務對數(shù)據(jù)庫的更新留在緩沖區(qū)中未寫入數(shù)據(jù)庫。系統(tǒng)故障的恢復策略是利用日志文件形成兩個隊列:Undo隊列和Redo隊列。對Undo 隊列中的未完成事務執(zhí)行撤消處理(Undo),對Redo 隊列中的已完成事務執(zhí)行重做處理(Redo)。在案例2中形成了如圖7所示的日志文件。

      恢復策略:(1)正向掃描圖7 所示的日志文件,未完成事務T1 放入Undo 對列,已完成事務T2 放入Redo隊列。(2)對Undo隊列中所有事務逐個執(zhí)行事務故障恢復策略,即進行Undo處理。反向掃描如圖7所示的日志文件,對T1事務的更新操作執(zhí)行逆操作,即將日志記錄中更新前的值A=1寫入數(shù)據(jù)庫,此時圖6中數(shù)據(jù)庫中A的值由2又為回原值1。(3)對Redo隊列所有事務逐個進行Redo處理。正向掃描如圖7所示的日志文件,對T2事務的所有更新操作執(zhí)行重新登記,即將日志記錄中更新后的值C=5,D=2寫入數(shù)據(jù)庫。

      圖4 案例2系統(tǒng)故障示意圖

      圖5 案例2數(shù)據(jù)庫存儲變化示意圖

      圖6 案例2緩沖區(qū)示意圖

      圖7 案例2的日志文件

      3 案例驅(qū)動的介質(zhì)故障恢復策略

      介質(zhì)故障是指由于某些原因?qū)е麓娣旁诖鎯υO備上數(shù)據(jù)庫部分或全部遭到破壞,磁盤上的物理數(shù)據(jù)和日志文件部分或全部丟失[3]。介質(zhì)故障的恢復需要后備副本和日志文件副本,DBA在數(shù)據(jù)庫的日常運行維護中要制定詳細的備份計劃并做好備份工作。限于文章篇幅,本文以SQL Server 為具體DBMS[4],通過一個實際案例簡要介紹數(shù)據(jù)庫備份和介質(zhì)故障恢復策略。

      3.1 介質(zhì)故障的案例剖析

      案例3如圖8所示,現(xiàn)有一個產(chǎn)品銷售數(shù)據(jù)庫cpxs,其中有產(chǎn)品表CP、產(chǎn)品銷售表CPXSB、銷售商表XSS 3張表。首先創(chuàng)建一個備份設備Test1,接著將整個cpxs數(shù)據(jù)庫進行完全備份并存放于Test1備份設備上,形成FILE1文件;然后向數(shù)據(jù)庫中添加人事表RS,并進行一次差異備份并存放于Test1備份設備上,形成FILE2文件;最后向數(shù)據(jù)庫中添加訂貨表DHB,并進行一次日志備份,并存放于Test1備份設備上,形成FILE3文件。

      圖8 案例3備份過程示意圖

      該cpxs數(shù)據(jù)庫備份過程的詳細T-SQL語句如下:

      sp_addumpdevice'disk','Test1','D:ackupTest1.bak'/*增加Test1備份設備*/

      BACKUP DATABASE cpxs TO Test1 WITH INIT/*重寫完全備份cpxs到Test1備份設備,NOINIT為追加*/

      create table RS/*添加員工人事表RS*/

      (emp_no char(5)primary key,emp_name varchar(10), sex char(2),dept varchar(10))

      BACKUP DATABASE cpxs TO Test1 WITH DIFFERENTIAL/*追加差異備份cpxs到Test1備份設備*/

      create table DHB/*添加訂貨表DHB*/

      (order_no char(5),prod_no char(5),qty int price numeric(7,2),order_date datetime)

      BACKUP LOG cpxs TO Test1/*追加備份日志文件到Test1備份設備*/

      3.2 介質(zhì)故障的恢復策略

      介質(zhì)故障的恢復需要DBA重裝備份的數(shù)據(jù)庫副本和有關(guān)的日志文件副本,并執(zhí)行系統(tǒng)提供的恢復命令。

      恢復策略:經(jīng)過前期備份后,形成了兩個數(shù)據(jù)庫副本和一個日志副本,分別對應存儲于Test1備份設備的FILE1、FILE2和FILE3。DBA重裝這些數(shù)據(jù)庫副本和日志副本可以得到不同狀態(tài)的cpxs數(shù)據(jù)庫,解決介質(zhì)故障破壞磁盤上數(shù)據(jù)庫的問題。該cpxs數(shù)據(jù)庫恢復過程的詳細T-SQL語句如下:

      ALTER DATABASE cpxs SET RECOVERY FULL/*設置cpxs數(shù)據(jù)庫恢復模型為全模型*/

      RESTORE DATABASE cpxs FROM Test1 WITH FILE=1, NORECOVERY/*恢復完整備份,完全備份是Test1備份設備的FILE1,并掛起數(shù)據(jù)庫cpxs*/

      RESTORE DATABASE cpxs FROM Test1 WITH FILE=2, NORECOVERY/*恢復差異備份,差異備份是Test1備份設備的FILE2,并掛起數(shù)據(jù)庫cpxs*/

      RESTORE LOG cpxs FROM Test1 WITH FILE=3, RECOVERY/*恢復日志備份,日志備份是Test1備份設備的FILE3*/

      4 結(jié)束語

      為解決數(shù)據(jù)庫恢復教學中理論過于抽象、學生不易掌握的問題,作者在多年數(shù)據(jù)庫教學實踐研究中,探索出一種基于案例的數(shù)據(jù)庫恢復策略教學方法,該方法直觀易懂、簡單清晰、操作性強,學生參與度高,易為學生理解和掌握。該方法在多年的教學實踐中得到了檢驗,并取得了較好的教學效果。

      猜你喜歡
      系統(tǒng)故障事務日志
      “事物”與“事務”
      基于分布式事務的門架數(shù)據(jù)處理系統(tǒng)設計與實現(xiàn)
      某型水泵旋轉(zhuǎn)系統(tǒng)故障分析
      防爆電機(2022年4期)2022-08-17 06:00:14
      一名老黨員的工作日志
      華人時刊(2021年13期)2021-11-27 09:19:02
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      河湖事務
      游學日志
      2015款奔馳R400車預防性安全系統(tǒng)故障
      雷克薩斯ES350車空調(diào)系統(tǒng)故障2例
      豐田普銳斯車HV系統(tǒng)故障排除
      台中市| 灵武市| 介休市| 汝州市| 富源县| 琼海市| 顺昌县| 扎赉特旗| 金川县| 义乌市| 宝丰县| 胶州市| 金阳县| 五大连池市| 精河县| 广宁县| 遂昌县| 青川县| 搜索| 泰来县| 永福县| 舟曲县| 洞头县| 沈丘县| 资阳市| 延长县| 五峰| 阿荣旗| 资溪县| 防城港市| 海城市| 长葛市| 桑植县| 芦山县| 砚山县| 清镇市| 甘德县| 扎鲁特旗| 方山县| 论坛| 保山市|