數據庫恢復技術有: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視頻教程)