本篇文章為大家展示了數(shù)據(jù)庫的故障及其恢復(fù)策略是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)主營漳平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),漳平h5微信小程序開發(fā)搭建,漳平網(wǎng)站營銷推廣歡迎漳平等地區(qū)企業(yè)咨詢在數(shù)據(jù)庫運(yùn)行過程中,可能會出現(xiàn)各種各樣的故障,這些故障可分為以下三類:事務(wù)故障、系統(tǒng)故障和介質(zhì)故障。應(yīng)該根據(jù)故障類型的不同,采取不同的恢復(fù)策略。
1,事務(wù)故障及其恢復(fù):
事務(wù)故障表示由非預(yù)期的、不正常的程序結(jié)束所造成的故障。
造成程序非正常結(jié)束的原因包括輸人數(shù)據(jù)錯誤、運(yùn)算溢出、違反存儲保護(hù)、并行事務(wù)發(fā)生死鎖等。
發(fā)生事務(wù)故障時,被迫中斷的事務(wù)可能已對數(shù)據(jù)庫進(jìn)行丁修改,為了消除該事務(wù)對數(shù)據(jù)庫的影響,要利用日志文件中所記載的信息,強(qiáng)行回滾(RoLLBAcK)該事務(wù),將數(shù)據(jù)庫恢復(fù)到修改前的初始狀態(tài)。
為此,要檢查日志文件中由這些事務(wù)所引起的發(fā)生變化的記錄,取消這些沒有完成的事務(wù)所做的一切改變。
這類恢復(fù)操作稱為事務(wù)撤銷(uNDo),具體做法如下。
(1)反向掃描日志文件,查找該事務(wù)的更新操作。
(2)對該事務(wù)的更新操作執(zhí)行反操作,即對已經(jīng)插入的新記錄進(jìn)行刪除操作,對己刪除的記錄進(jìn)行插入操作,對修改的數(shù)據(jù)恢復(fù)舊值,用舊值新值。這樣由后向前逐個掃描該事務(wù)已做的所有更新操作,并做同樣處理,直到掃描到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)完畢為止。
因此,一個事務(wù)是一個工作單位,也是一個恢復(fù)單位。一個事務(wù)越短,越便于對它進(jìn)行UNDO操作。如果一個應(yīng)用程序運(yùn)行時間較長,則應(yīng)該把該應(yīng)用程序分成多個事務(wù),用明確的coMMIT語句來結(jié)束各個事務(wù)。
2,系統(tǒng)故障及其恢復(fù)系統(tǒng)故障是指系統(tǒng)在運(yùn)行過程中,由于某種原因,造成系統(tǒng)停止運(yùn)轉(zhuǎn),致使所有正在運(yùn)行的事務(wù)都以非正常方式終止,要求系統(tǒng)重新啟動。引起系統(tǒng)故障的原因可能有硬件錯誤(如CPu故障、操作系統(tǒng))或DBMS代碼錯誤、突然斷電等。
這時,內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的內(nèi)容全部丟失,雖然存儲在外部存儲設(shè)備上的數(shù)據(jù)庫并未破壞,但其內(nèi)容不可靠了。系統(tǒng)故障發(fā)生后,對數(shù)據(jù)庫的影響有以下兩種情況。
一種情況是一些未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫,這樣在系統(tǒng)重新啟動后,要強(qiáng)行撤銷(uNDo)所有未完成的事務(wù),清除這些事務(wù)對數(shù)據(jù)庫所做的修改。這些末完成事務(wù)在日志文件中只有BEGIN TRANsLATl0N標(biāo)記,而無COMMIT標(biāo)記。
另一種情況是有些已提交的事務(wù)對數(shù)據(jù)庫的更新結(jié)果還保留在緩沖區(qū)中,尚未寫到磁盤上的物理數(shù)據(jù)庫中,這也使數(shù)據(jù)庫處于不一致狀態(tài),因此應(yīng)將這些事務(wù)已提交的結(jié)果重新寫入數(shù)據(jù)庫。這類恢復(fù)操作稱為事務(wù)的重做(REDo)。這種巳提交事務(wù)在日志文件中既有BGIN TRANSCATION標(biāo)記,也有COMMIT標(biāo)記。
因此,系統(tǒng)故障的恢復(fù)要完成兩方面的工作,既要撤銷所有末完成的事務(wù),還要重做所有已提交的事務(wù),這樣才能將數(shù)據(jù)庫真正恢復(fù)到一致的狀態(tài)。具體做法如下。
(1)正向掃描日志文件,查找尚未提交的事務(wù),將其事務(wù)標(biāo)識記人撤銷隊(duì)列。同時查找已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識記入重做隊(duì)列。
(2)對撤銷隊(duì)列中的各個事務(wù)進(jìn)行撤銷處理。方法同事務(wù)故障中所介紹的撤銷方法。
(3)對重做隊(duì)列中的各個事務(wù)進(jìn)行重做處理。進(jìn)行重做處理的方法是正向掃描日志文件,按照日志文件中所登記的操作內(nèi)容,重新執(zhí)行操作,使數(shù)據(jù)庫恢復(fù)到最近某個可用狀態(tài)。
系統(tǒng)發(fā)生故障后,由于無法確定哪些末完成的事務(wù)已更新過數(shù)據(jù)庫,哪些事務(wù)的提交結(jié)果尚未寫入數(shù)據(jù)庫,因此系統(tǒng)重新啟動后,要撤銷所有的末完成的事務(wù),重做所有的已經(jīng)提交的事務(wù)。
但是,在故障發(fā)生前已經(jīng)運(yùn)行完畢的事務(wù)有些是正常結(jié)束的,有些是異常結(jié)束的。所以無須把它們?nèi)砍蜂N或重做。
通常采用設(shè)立檢查點(diǎn)(checkPoint)的方法來判斷事務(wù)是否正常結(jié)束。每隔一段時間,比如說5分鐘,系統(tǒng)產(chǎn)生一個檢查點(diǎn),做下面一些事情:a,把仍保留在日志緩沖區(qū)中的內(nèi)容寫到日志文件中;b,在日志文件中寫一個“檢查點(diǎn)記錄”;c,把數(shù)據(jù)庫緩沖區(qū)中的內(nèi)容寫到數(shù)據(jù)庫中,即把更新的內(nèi)容寫到物理數(shù)據(jù)庫中;d,把日志文件中檢查點(diǎn)記錄的地址寫到“重新啟動文件”中。
每個檢查點(diǎn)記錄包含的信息有在檢查點(diǎn)時間的所有活動事務(wù)一覽表、每個事務(wù)最近日志記錄的地址。
在重新啟動時,恢復(fù)管理程序先從“重新啟動文件”中獲得檢查點(diǎn)記錄的地址,從日志文件中找到該檢查點(diǎn)記錄的內(nèi)容,通過日志往回找,能決定哪些事務(wù)需要撤銷,恢復(fù)到初始的狀態(tài),哪些事務(wù)需要重做。為此利用檢查點(diǎn)信息能做到及時、有效、正確地完成恢復(fù)工作。
3,介質(zhì)故障及其恢復(fù)介質(zhì)故障是指系統(tǒng)在運(yùn)行過程中,由于輔助存儲器介質(zhì)受到破壞,使存儲在外存中的數(shù)據(jù)部分或全部丟失。
這類故障比事務(wù)故障和系統(tǒng)故障發(fā)生的可能性要小,但這是最嚴(yán)重的一種故障,破壞性很大,磁盤上的物理數(shù)據(jù)和日志文件可能被破壞,這需要裝入發(fā)生介質(zhì)故障前的后備數(shù)據(jù)庫副本,然后利用日志文件重做該副本后所運(yùn)行的所有事務(wù)。
具體方法如下。
(1)裝入的數(shù)據(jù)庫副本,使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時的可用狀態(tài)。
(2)裝入的日志文件副本,根據(jù)日志文件中的內(nèi)容重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時己提交的事務(wù),將其記入重做隊(duì)列。然后正向掃描日志文件,對重做隊(duì)列中的各個事務(wù)進(jìn)行重做處理,方法是正向掃描日志文件,對每個重做事務(wù)重新執(zhí)行登記的操作,即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。
這樣可以將數(shù)據(jù)庫恢復(fù)至故障前某一時刻的一致狀態(tài)了。
上述內(nèi)容就是數(shù)據(jù)庫的故障及其恢復(fù)策略是怎樣的,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:數(shù)據(jù)庫的故障及其恢復(fù)策略是怎樣的-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://muchs.cn/article14/phhge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、域名注冊、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容