數(shù)據(jù)庫(kù)的故障及其恢復(fù)策略是怎樣的

本篇文章為大家展示了數(shù)據(jù)庫(kù)的故障及其恢復(fù)策略是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專(zhuān)業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專(zhuān)業(yè)提供成都服務(wù)器托管,服務(wù)器租用,中國(guó)電信云錦天府,中國(guó)電信云錦天府,成都多線(xiàn)服務(wù)器托管等服務(wù)器托管服務(wù)。

數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中,可能會(huì)出現(xiàn)各種各樣的故障,這些故障可分為以下三類(lèi):事務(wù)故障、系統(tǒng)故障和介質(zhì)故障。應(yīng)該根據(jù)故障類(lèi)型的不同,采取不同的恢復(fù)策略。
1,事務(wù)故障及其恢復(fù):
事務(wù)故障表示由非預(yù)期的、不正常的程序結(jié)束所造成的故障。
造成程序非正常結(jié)束的原因包括輸人數(shù)據(jù)錯(cuò)誤、運(yùn)算溢出、違反存儲(chǔ)保護(hù)、并行事務(wù)發(fā)生死鎖等。
發(fā)生事務(wù)故障時(shí),被迫中斷的事務(wù)可能已對(duì)數(shù)據(jù)庫(kù)進(jìn)行丁修改,為了消除該事務(wù)對(duì)數(shù)據(jù)庫(kù)的影響,要利用日志文件中所記載的信息,強(qiáng)行回滾(RoLLBAcK)該事務(wù),將數(shù)據(jù)庫(kù)恢復(fù)到修改前的初始狀態(tài)。
為此,要檢查日志文件中由這些事務(wù)所引起的發(fā)生變化的記錄,取消這些沒(méi)有完成的事務(wù)所做的一切改變。
這類(lèi)恢復(fù)操作稱(chēng)為事務(wù)撤銷(xiāo)(uNDo),具體做法如下。
(1)反向掃描日志文件,查找該事務(wù)的更新操作。
(2)對(duì)該事務(wù)的更新操作執(zhí)行反操作,即對(duì)已經(jīng)插入的新記錄進(jìn)行刪除操作,對(duì)己刪除的記錄進(jìn)行插入操作,對(duì)修改的數(shù)據(jù)恢復(fù)舊值,用舊值新值。這樣由后向前逐個(gè)掃描該事務(wù)已做的所有更新操作,并做同樣處理,直到掃描到此事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障恢復(fù)完畢為止。
因此,一個(gè)事務(wù)是一個(gè)工作單位,也是一個(gè)恢復(fù)單位。一個(gè)事務(wù)越短,越便于對(duì)它進(jìn)行UNDO操作。如果一個(gè)應(yīng)用程序運(yùn)行時(shí)間較長(zhǎng),則應(yīng)該把該應(yīng)用程序分成多個(gè)事務(wù),用明確的coMMIT語(yǔ)句來(lái)結(jié)束各個(gè)事務(wù)。
2,系統(tǒng)故障及其恢復(fù)系統(tǒng)故障是指系統(tǒng)在運(yùn)行過(guò)程中,由于某種原因,造成系統(tǒng)停止運(yùn)轉(zhuǎn),致使所有正在運(yùn)行的事務(wù)都以非正常方式終止,要求系統(tǒng)重新啟動(dòng)。引起系統(tǒng)故障的原因可能有硬件錯(cuò)誤(如CPu故障、操作系統(tǒng))或DBMS代碼錯(cuò)誤、突然斷電等。
這時(shí),內(nèi)存中數(shù)據(jù)庫(kù)緩沖區(qū)的內(nèi)容全部丟失,雖然存儲(chǔ)在外部存儲(chǔ)設(shè)備上的數(shù)據(jù)庫(kù)并未破壞,但其內(nèi)容不可靠了。系統(tǒng)故障發(fā)生后,對(duì)數(shù)據(jù)庫(kù)的影響有以下兩種情況。
一種情況是一些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫(xiě)入數(shù)據(jù)庫(kù),這樣在系統(tǒng)重新啟動(dòng)后,要強(qiáng)行撤銷(xiāo)(uNDo)所有未完成的事務(wù),清除這些事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改。這些末完成事務(wù)在日志文件中只有BEGIN TRANsLATl0N標(biāo)記,而無(wú)COMMIT標(biāo)記。
另一種情況是有些已提交的事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新結(jié)果還保留在緩沖區(qū)中,尚未寫(xiě)到磁盤(pán)上的物理數(shù)據(jù)庫(kù)中,這也使數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài),因此應(yīng)將這些事務(wù)已提交的結(jié)果重新寫(xiě)入數(shù)據(jù)庫(kù)。這類(lèi)恢復(fù)操作稱(chēng)為事務(wù)的重做(REDo)。這種巳提交事務(wù)在日志文件中既有BGIN TRANSCATION標(biāo)記,也有COMMIT標(biāo)記。
因此,系統(tǒng)故障的恢復(fù)要完成兩方面的工作,既要撤銷(xiāo)所有末完成的事務(wù),還要重做所有已提交的事務(wù),這樣才能將數(shù)據(jù)庫(kù)真正恢復(fù)到一致的狀態(tài)。具體做法如下。
(1)正向掃描日志文件,查找尚未提交的事務(wù),將其事務(wù)標(biāo)識(shí)記人撤銷(xiāo)隊(duì)列。同時(shí)查找已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識(shí)記入重做隊(duì)列。
(2)對(duì)撤銷(xiāo)隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤銷(xiāo)處理。方法同事務(wù)故障中所介紹的撤銷(xiāo)方法。
(3)對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做處理。進(jìn)行重做處理的方法是正向掃描日志文件,按照日志文件中所登記的操作內(nèi)容,重新執(zhí)行操作,使數(shù)據(jù)庫(kù)恢復(fù)到最近某個(gè)可用狀態(tài)。
系統(tǒng)發(fā)生故障后,由于無(wú)法確定哪些末完成的事務(wù)已更新過(guò)數(shù)據(jù)庫(kù),哪些事務(wù)的提交結(jié)果尚未寫(xiě)入數(shù)據(jù)庫(kù),因此系統(tǒng)重新啟動(dòng)后,要撤銷(xiāo)所有的末完成的事務(wù),重做所有的已經(jīng)提交的事務(wù)。
但是,在故障發(fā)生前已經(jīng)運(yùn)行完畢的事務(wù)有些是正常結(jié)束的,有些是異常結(jié)束的。所以無(wú)須把它們?nèi)砍蜂N(xiāo)或重做。
通常采用設(shè)立檢查點(diǎn)(checkPoint)的方法來(lái)判斷事務(wù)是否正常結(jié)束。每隔一段時(shí)間,比如說(shuō)5分鐘,系統(tǒng)產(chǎn)生一個(gè)檢查點(diǎn),做下面一些事情:a,把仍保留在日志緩沖區(qū)中的內(nèi)容寫(xiě)到日志文件中;b,在日志文件中寫(xiě)一個(gè)“檢查點(diǎn)記錄”;c,把數(shù)據(jù)庫(kù)緩沖區(qū)中的內(nèi)容寫(xiě)到數(shù)據(jù)庫(kù)中,即把更新的內(nèi)容寫(xiě)到物理數(shù)據(jù)庫(kù)中;d,把日志文件中檢查點(diǎn)記錄的地址寫(xiě)到“重新啟動(dòng)文件”中。
每個(gè)檢查點(diǎn)記錄包含的信息有在檢查點(diǎn)時(shí)間的所有活動(dòng)事務(wù)一覽表、每個(gè)事務(wù)最近日志記錄的地址。
在重新啟動(dòng)時(shí),恢復(fù)管理程序先從“重新啟動(dòng)文件”中獲得檢查點(diǎn)記錄的地址,從日志文件中找到該檢查點(diǎn)記錄的內(nèi)容,通過(guò)日志往回找,能決定哪些事務(wù)需要撤銷(xiāo),恢復(fù)到初始的狀態(tài),哪些事務(wù)需要重做。為此利用檢查點(diǎn)信息能做到及時(shí)、有效、正確地完成恢復(fù)工作。
3,介質(zhì)故障及其恢復(fù)介質(zhì)故障是指系統(tǒng)在運(yùn)行過(guò)程中,由于輔助存儲(chǔ)器介質(zhì)受到破壞,使存儲(chǔ)在外存中的數(shù)據(jù)部分或全部丟失。
這類(lèi)故障比事務(wù)故障和系統(tǒng)故障發(fā)生的可能性要小,但這是最嚴(yán)重的一種故障,破壞性很大,磁盤(pán)上的物理數(shù)據(jù)和日志文件可能被破壞,這需要裝入發(fā)生介質(zhì)故障前的后備數(shù)據(jù)庫(kù)副本,然后利用日志文件重做該副本后所運(yùn)行的所有事務(wù)。
具體方法如下。
(1)裝入的數(shù)據(jù)庫(kù)副本,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的可用狀態(tài)。
(2)裝入的日志文件副本,根據(jù)日志文件中的內(nèi)容重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時(shí)己提交的事務(wù),將其記入重做隊(duì)列。然后正向掃描日志文件,對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做處理,方法是正向掃描日志文件,對(duì)每個(gè)重做事務(wù)重新執(zhí)行登記的操作,即將日志記錄中“更新后的值”寫(xiě)入數(shù)據(jù)庫(kù)。
這樣可以將數(shù)據(jù)庫(kù)恢復(fù)至故障前某一時(shí)刻的一致?tīng)顟B(tài)了。

上述內(nèi)容就是數(shù)據(jù)庫(kù)的故障及其恢復(fù)策略是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:數(shù)據(jù)庫(kù)的故障及其恢復(fù)策略是怎樣的
當(dāng)前鏈接:http://bm7419.com/article30/jjsspo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、軟件開(kāi)發(fā)、ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)