首頁 >資料庫 >mysql教程 >資料庫復原技術有哪些

資料庫復原技術有哪些

青灯夜游
青灯夜游原創
2021-07-27 11:17:2922350瀏覽

資料庫復原技術有:1、資料轉儲,也就是DBA定期將整個資料庫複製到磁帶或另一個磁碟上儲存起來的過程。 2.登記日誌文件,日誌文件是用來記錄事務對資料庫的更新操作的文件,設立日誌檔案可以進行交易故障復原、系統故障復原、協助後備副本進行媒體故障復原。

資料庫復原技術有哪些

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

資料庫恢復概述

  資料庫管理系統必須具有把資料庫從某一錯誤狀態恢復到某一已知的正確狀態的功能,這就是資料庫的恢復。復原子系統是資料庫管理系統的重要組成部分,而且還相當龐大,常常佔整個系統程式碼的百分之十以上。資料庫系統所採用的復原技術是否行之有效,不僅對系統的可靠性起著決定性作用,而且對系統的運作效率也有很大影響,是衡量系統效能優劣的重要指標。

  系統故障稱為軟體故障,媒體故障稱為硬故障。硬故障指外存故障,如磁碟損壞、磁頭碰撞、瞬時強磁場幹擾等。這類故障將破壞資料庫或部分資料庫,並影響正在存取這部分資料的所有事務。

電腦病毒

  總結各類故障,對資料庫的影響有兩種可能性。一是資料庫本身被破壞。二是資料庫沒有被破壞,但資料可能不正確,這時由於交易的運作被非正常終止造成的。

復原的實作技術

復原機制涉及兩個關鍵問題:

1、如何建立冗餘資料;

# 2、如何利用這些冗餘資料實施資料庫復原。 

建立冗餘資料最常用的技術是資料轉儲和登記日誌檔案。通常在一個資料庫系統中,這兩種方法是一起使用的。

資料轉儲

資料轉儲是資料庫復原中採用的基本技術。所謂轉儲即DBA會定期將整個資料庫複製到磁帶或另一個磁碟上保存起來的過程。這些備用的資料成為後備副本或後援副本。 

轉儲可分為靜態轉儲與動態轉儲。 

  • 靜態轉儲是系統中無運作交易時進行的轉儲作業。即轉儲作業開始的時刻,資料庫處於一致性狀態,而轉儲期間不允許對資料庫的任何存取、 修改活動。顯然,靜態轉儲得到的一定是資料一致性的副本。 

  • 動態轉儲是指在轉儲期間允許對資料庫進行存取或修改。但是,轉儲結束時後援副本上的資料並不能保證正確有效。為此,必須把轉儲期間各事務對資料庫的修改活動登記下來,建立日誌文件,這樣,後援副本加上日誌文件就能把資料庫恢復到某一時刻的正確狀態。 

轉儲可分為大量轉儲與增量轉儲兩種方式。海量轉儲是指每次轉儲全部資料庫。增量轉儲則指每次只轉儲上次轉儲後更新過的資料。從恢復角度來看,使用海量轉儲得到的後備副本進行恢復一般來說更方便一些。
資料轉儲方法可分為四大類:動態增量轉儲、動態海量轉儲、靜態增量轉儲、靜態海量轉儲。

登記日誌檔案

日誌檔案的格式和內容

日誌檔案是用來記錄事務對資料庫的更新操作的檔案。日誌檔案主要有兩種格式:以記錄為單位的日誌檔案和以資料區塊為單位的日誌檔案。

以記錄為單位的日誌文件,需要登記的內容包括: 

1、各個事務的開始標記
2、各個事務的結束標記
3、各個事務所有的更新操作 

每個日誌記錄的內容包括: 

1、交易識別碼(標示是哪個交易)
2、操作的類型(插入、刪除或修改)
3、操作物件(記錄內部識別)
4、更新前資料的舊值
5、更新後資料的新值

日誌檔案的作用

日誌檔案在資料復原中扮演著非常重要的角色。可用來進行事務故障恢復和系統故障恢復,並協助後備副本進行媒體故障恢復。

具體作用是: 

1、交易故障復原和系統故障復原必須使用日誌檔案

2、在動態轉儲方式必須建立日誌文件,後備副本和日誌檔案結合起來才能有效地恢復資料庫。 

3、在靜態轉儲方式中,也可以建立日誌檔。

登記日誌檔案

為確保資料庫是可恢復的,登記日誌文件時必須遵循兩個原則:
1.登記的次序嚴格按並發事務執行的時間次序
2.必須先些日誌文件,後寫資料庫.

恢復策略

交易故障的復原

交易故障的復原是由系統自動完成的,對使用者是透明的。系統的復原步驟是: 

1、反向掃描日誌檔案(即從最後向前掃描日誌檔案),尋找此交易的更新操作。 

2、對此事務的更新作業執行反向操作。即將日誌記錄中「更新前的值」寫入資料庫。這樣如果記錄中是插入操作,則相當於做刪除操作;若記錄中是刪除操作,則做插入操作;若是修改操作,則相當於修改求前值代替修改後值。 

3、繼續反向掃描日誌文件,找出該交易的其他更新操作,並做相同處理。 

4、如此處理下去,直到讀到此事務的開始標記,事務故障復原就完成了。

系統故障的復原

交易故障的復原是由系統自動完成的,對使用者是透明的。系統的復原步驟是: 

1、正向掃描日誌文件,找出在故障發生前已經提交的事務,將其事務識別記入重做佇列。同時找出故障發生時尚未完成的事務,將其事務表示計入撤銷佇列。

2、對撤銷(UNDO)佇列中的各個事務進行撤銷處理。 

進行UNDO處理的方法是,反向掃描日誌文件,對每個UNDO交易的更新操作執行逆操作,即將日誌記錄中「更新前的值」寫入資料庫。

3、對重做佇列中的各個事務進行重做REDO處理 

進行REDO處理的方法是:正向掃描日誌文件,對每個REDO事務重新執行日誌文件登記的操作。即將日誌記錄中「更新後的值」寫入資料庫。

媒體故障的復原

恢復故障的方法是重裝資料庫,然後重做已完成的交易。 

1、裝入最新的資料庫後備副本,是資料庫復原到最近一次轉儲時的一致性狀態。 

2、裝入對應的日誌檔案副本,重做已完成的交易。即先掃描日誌文件,找出故障發生時已提交的事務的標識,將其計入重做佇列。然後正向掃描日誌文件,對重做佇列中的所有交易進行重做處理。即將日誌記錄中「更新後的值」寫入資料庫。 

媒體故障的恢復需要DBA介入。但DBA只需要重裝最近轉儲的資料庫副本和相關的各日誌檔案副本,然後秩序系統提供的復原指令即可,具體的復原操作仍有DBMS完成。

資料庫鏡像

  隨著磁碟容量越來越大,價格越來越便宜,為避免磁碟媒體故障影響資料庫的可用性,許多資料庫管理系統提供了資料經銷功能用於資料庫復原。根據DBA的要求,自動把整個資料庫或其中 的關鍵資料複製到另一個磁碟上。

  由於資料庫鏡像是透過複製資料實現的,頻繁地複製資料自然會降低系統運作效率,因此在時間應用中使用者往往只選擇對關鍵資料和日誌檔案鏡像,而不是對整個資料庫進行鏡像。

(推薦教學:mysql影片教學

以上是資料庫復原技術有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn