趙文海 趙祥敏
摘要:文章概述了數據庫恢復技術的種類,介紹了數據庫發生故障時常見的恢復方法,同時針對不同的失效類型提出了恢復對策,以供參考。
關鍵詞:數據庫恢復方法
1、前言
數據庫的失效往往導致一個機構的癱瘓,然而,任何一個數據庫系統總不可能不發生故障。數據庫系統對付故障有兩種辦法:其一是盡可能提高系統的可靠性;另一種方法是在系統發生故障后,把數據庫恢復至原來的狀態。
2、恢復技術的種類
2.1 單純以北方為基礎的恢復技術
單純以備份為基礎的恢復技術是由文件系統恢復技術演變而來的,即周期性地把磁盤上的數據庫復制或轉儲到磁帶上。由于磁帶是脫機存放的,系統對它沒有任何影響。當數據庫失效時,可以取最近一次從磁盤復制到磁帶上的數據庫備份來恢復數據庫。利用這種方法,數據庫只能恢復到最近的備份狀態,而從最近備份到故障發生期間所有數據庫的更新數據將會丟失,這意味著備份周期越長,丟失更新的數據也就越多。因此,這種恢復技術只適用于小型和不太重要的數據庫系統。
2.2 以備份和運行日志為基礎的恢復技術
系統運行日志用于記錄數據庫運行的情況,一般包括三個內容:前像、后像和事物狀態。
所謂前像是指數據庫被一個事物更新時,所涉及的物理塊更新后的影像,它以物理塊為單位。前像在恢復中所起的作用是幫助數據庫恢復更新前的狀態,即撤銷更新。后像恰好與前像相反,它是當數據庫被某一事物更新時,所涉及的物理塊更新前的影像,其單位和前像一樣以物理塊為單位。后像的作用是幫助數據庫恢復到更新后在狀態,相當于重做一次更新。運行日志中的事物狀態記錄每個事物的狀態,以便在數據庫恢復時作不同的處理。
2.3 基于多備份的恢復技術
多備份恢復技術的前提的每個備份必須具有獨立的失效模式,這樣可以利用這些備份互為備份,用于恢復。所謂獨立失效模式是指各個備份不至于因同一故障而一起失效。獲得獨立失效模式的一個重要要素是各備份的支持環境盡可能地獨立,其中包括不共用電源、磁盤、控制器以及CPU等。在部分可靠要求較高的系統中,采用磁盤鏡像技術,即數據庫以雙備份的形式存放在兩個獨立的磁盤系統中,為了使失效模式獨立,兩個磁盤系統有各自的控制器和CPU,但彼此可以相互切換。在讀數據時,可以選讀其中任一磁盤;在寫數據時,兩個磁盤都可以寫入同樣的內容。當一個磁盤數據丟失時,可用另一個磁盤的數據來恢復。
這種恢復技術在分布式數據庫系統中用得較多,這完全是出于性能或其他考慮,在不同的結點上設有數據備份,而這些數據備份由于所處的結點不同,其失效模式也比較獨立。
3、恢復的方法
數據庫的恢復大致有以下幾種方法:
(1)以周期性地對整個數據庫進行轉儲,把它復制到備份介質中,作為后備副本,以備恢復之用。
轉儲通常又可分為精通轉儲和動態轉儲。靜態轉儲是指轉儲期間不允許(或不存在)對數據庫進行任何存取、修改活動,而動態轉儲是指在存儲期間允許對數據庫進行存取或修改。
(2)對數據庫的每次修改,都記下修改前后的值,寫入“運行日志”中,與后備副本結合,可有效地恢復數據庫。
日志文件是用來記錄數據庫每一次更新活動的文件。在動態轉儲方式中必須建立日志文件,后備文件副本和日志文件綜合起來才能有效地恢復數據庫。在靜態轉儲方式中,也可以建立日志文件。當數據庫毀壞后可重新裝入后備副本把數據庫恢復到轉儲結束時刻的正確狀態。然后利用日志文件,把已完成的事務進行重新處理,對故障發生時尚未完成的事務進行撤銷處理。這樣不必重新運行那些已完成的事務程序就可以把數據庫恢復到故障前某一時刻的正確狀態。
4、失效的類型及恢復的對策
一個數據庫恢復方法的恢復能力總是有限的,一般往往只對某一類型的失效有效,在任何情況下都適用的恢復方法是沒有的。在前述的恢復方法中都需要備份,如果備份由于不可抗拒的因素損壞,那么,前述的恢復方法就無能為力。通常的恢復方法都是針對概率較高的失效,這些失效分為三類:事務失效、系統失效和介質失效。
4.1 事務失效
事務失效發生在事務提交之前,事務一旦提交,即使要撤銷也不可能了。造成事務失效的原因主要有以下幾個方面:(1)事務無法執行而自行中止;(2)操作失誤或改變主意而要求撤銷事務;(3)由于系統調度上的原因而中止某些事務的執行。
對于事務失效,可采取如下措施予以恢復:(1)消息管理丟棄該事務的消息隊列;(2)如果需要可進行撤銷;(3)從事務表中刪除該事務的事務標識,釋放該事務占有的資源。
4.2 系統失效
這里所指的系統包括操作系統和數據庫管理系統。系統失效是指系統崩潰,必須重新啟動系統,內存中的數據可能丟失,而數據庫中的數據未遭到破壞。發生系統失效的原因有:(1)掉電;(2)除數據庫存儲介質外的硬、軟件故障;(3)重新啟動操作系統和數據庫管理系統;(4)恢復數據庫至一致狀態時,對未提交的事務進行了Undo操作,對已提交的事務進行了Redo的操作。
4.3 介質失效
介質失效是指磁盤發生故障,數據受損,如劃盤、磁頭破損等。現代的DBMS對介質失效一般都提供恢復數據庫至最近狀態的措施,具體過程如下:(1)恢復系統,必要時更換磁盤;(2)如果系統崩潰,則重新啟動系統;(3)加載最近的備份;(4)用運行日志中的后像重做,去最近備份以后提交的所有事務。
從介質失效中恢復數據庫的代價是最高的,而且要是運行日志提供所有事務的后像,工作量很大。但是為了保證數據庫的安全,這些代價又是必須要付出的。
參考文獻
[1]婁燕飛,楊樹強.《一種基于組通信的復制數據庫在線恢復策略研究》.計算機研究與發展,2007.
[2]林烈青.《基于事務日志的數據庫恢復機制研究》.現代計算機(專業版),2009.