天天看點

資料庫三級(11)11.故障處理

目錄

  • 11.故障處理
    • 11.1. 故障管理概述
      • 11.1.1.故障類型及其解決方法
      • 11.1.2.資料庫恢複技術概述
    • 11.2.資料轉存
      • 11.2.1.資料轉儲的基本概念
      • 11.2.2.靜态轉儲和動态轉儲
      • 11.2.3.資料轉儲機制
      • 11.2.4.多種轉儲方法結合使用
    • 11.3.日志檔案
      • 11.3.1.日志檔案的概念
      • 11.3.2.日志檔案的格式與内容
      • 11.3.3.登記日志檔案的原則
      • 11.3.4.檢查點
    • 11.4.硬體容錯方案
      • 11.4.1.硬體容錯方案概述
      • 11.4.2.RAID系統
      • 11.4.3.伺服器容錯技術
      • 11.4.4.資料庫鏡像與資料庫容災

11.故障處理

選擇、填空

11.1. 故障管理概述

11.1.1.故障類型及其解決方法

在資料庫系統中大緻存在四類故障:事務内部的故障、系統故障、媒體故障、計算機病毒故障

資料庫三級(11)11.故障處理

四類故障各有不同,但其對資料庫的景響有兩種,即對資料庫本身的破壞或是對資料庫中資料的破壞。

其恢複的基本原理概括為:備援,資料庫中所有資料都可以根據存儲在别處的備援資料來重建。

  1. 事務内部故障

    事務内部故障分為預期和非預期的,其中大部分是非預期的。

    1.1 預期的事物内部的故障

  1. 預期的事物内部故障是指可通過事務程式本身發現的事物内部故障。如校園—卡通中的轉賬業務
  2. 如果發生了預期的事務内部故障,可通過将事務復原,撤銷其對資料庫的修改,進而使資料庫回到一緻性的狀态

     1.2. 非預期的事務内部故障

非預期的事務内部故障是不能由事務程式處理的,如運算溢出故障、并發事務死鎖故障、違反了某些完整性限制而導緻的故障等
  1. 事務故障表明事務沒有送出或撤銷就結束了,是以資料庫可能處于不準确狀态
  2. 恢複程式必須強行復原事務,在保證該事務對其他事務沒有影響的條件下,利用日志檔案撤銷其對資料庫的修改,使資料庫恢複到該事務運作之前的狀态
  3. 事務故障的恢複是由系統自動完成的,對使用者是透明的
  1. 系統故障

    系統故障又稱軟故障,是指資料庫在運作過程中由于硬體故障、資料庫軟體及作業系統的漏同、突然停電等,正在運作的事務以非正常方式終止,需要系統重新啟動的一類故障。這類故障影響正在運作的所有事務。

    2.1 系統故障導緻的後果:導緻易失性存儲器内容的丢失,而非易失性存儲器内容仍然完好

消除事務對教據庫的景響,保證資料庫中資料的一緻性的方法:
  1. 在計算機系統重新啟動後,對于未完成的事務可能已經寫入資料庫的内容,復原所有未完成的事務寫的結果,保證資料庫中資料的一緻性
  2. 對于已完成的事務可能部分或全部留在緩沖區的結果,需要重做所有已送出的事務,以将資料庫真正恢複到一緻狀态

     2.2 當資料庫發生故障時,容錯對策是在重新啟動系統後,撤銷(UNDO )所有未送出的事務,重做(REDO )所有已送出的事務,以達到容錯目的。

  1. 媒體故障

    媒體故障又叫硬故障,主要指資料庫在運作過程中,由于磁頭碰撞、磁盤損壞、強磁幹擾、天災人禍等,使得資料庫中的資料部分或全部丢失的一類故障。媒體故障的容錯對策有兩種方式:軟體容錯和硬體容錯。

    3.1 軟體容錯

  1. 使用資料庫備份及事務日志檔案,通過恢複技術,恢複資料庫到備份結束時的狀态
  2. 軟體容錯隻能恢複到備份資料庫後的某個時間點
  3. 若導緻資料庫實體儲存設備損壞,事務日志檔案丢失,用軟體容錯不能達到資料庫的完全恢複,隻能恢複到備份資料庫後的某個時間點

     3.2 硬體容錯

  1. 硬體容錯方法可以保證媒體故障下的資料庫能能夠完全恢複
  2. 硬體容錯目前常用的方法是采用雙實體儲存設備,如雙硬碟鏡像
  3. 在較進階别的硬體容錯方案中需要使用專用的儲存設備
  4. 硬體容錯另一種方法是設計兩套相同的資料庫系統,通過資料庫軟體機制,同步變化資料,兩套系統空間上有一定的距離
  1. 計算機病毒故障

    計算機病毒是一種惡意的計算機程式,它可以像病毒一樣繁殖和傳播,在對計算機系統造成破壞的同時也可能對資料庫系統造成破壞(破壞方式以破壞資料庫檔案為主)

    防止計算機病毒破壞的方法:

    資料庫三級(11)11.故障處理

11.1.2.資料庫恢複技術概述

  1. 資料庫恢複概念:在故障發生時能夠利用存儲在系統其它地方的備援資料來重建資料庫中被破壞的或不正确的資料把資料庫從錯誤狀态恢複到某一已知的正确狀态,進而重建立立一個完整的資料庫。
  2. 恢複機制涉及的兩個問題是:①如何建立備援資料;②如何利用這些備援資料實施資料庫恢複。
    資料庫三級(11)11.故障處理

11.2.資料轉存

11.2.1.資料轉儲的基本概念

  1. 資料轉儲概念:指資料庫管理者(DBA )或資料庫管理系統定期複制資料庫,并将複制得到的資料存放到其他媒體中的過程,資料轉儲也稱資料備份。
  2. 資料庫管理者可以在資料庫系統發生故障後,利用這些副本恢複資料庫,但隻能恢複到轉儲時的狀态,想要恢複到故障之前的狀态需要參考日志檔案。
    資料庫三級(11)11.故障處理
  3. 引入日志檔案再加上動态轉儲就可将資料庫恢複到某一正确的時刻。

11.2.2.靜态轉儲和動态轉儲

  1. 資料轉儲分為靜态轉儲和動态轉儲,具體内容如下:

    1.1 靜态轉儲:

  1. 在靜态轉儲過程中系統不能運作其他事務,不允許在轉儲期間對資料庫有任何的存取、修改活動,即轉儲前後系統必須處于一個一緻性的狀态
  2. 靜态轉儲雖然簡單,但轉儲操作必須等舊事物的結束,而新事物也必須等待轉儲操/作的完成,轉儲操作和事務是互斥的,一個時間段内要麼轉儲要麼運作事務,是以會降低資料庫的可用性

     1.2 動态轉儲:

  1. 動态轉儲是指允許轉儲操作和使用者事務并發執行,即允許在轉儲過程中對資料庫進行存取和修改操作
  2. 動态轉儲中可能存在事務對資料庫中的資料進行修改操作,它不能保證轉儲資料的一緻性,因為轉儲檔案隻儲存了轉儲期間某一刻的資料,若下一時刻事務修改該資料,這個變動的資料并不會反映在轉儲檔案上
  3. 轉儲檔案上的資料并非是某個時間點的資料,而可能是多個時間點的混合資料

11.2.3.資料轉儲機制

資料轉儲機制的3種轉儲方式:

  1. 增量存儲:

    隻複制上次轉儲後發生變化的檔案或資料塊。增量轉儲所需的時間和空間都比較短但增量轉儲資料隻能和完全轉儲配合,才能對資料庫進行恢複。增量轉儲恢複時間比僅使用完全轉儲要長

  2. 完全轉儲:

    完全轉儲是對資料庫中所有資料進行轉儲。這種轉儲方式需占用較多的時間和空間,但在系統失敗時恢複時間短

  3. 差量轉儲:

    對最近一次資料庫完全轉儲以來發生的資料變化進行轉儲,差量轉儲也稱差異轉儲。它和完全轉儲相比速度快,占用較小的空間;和增量轉儲相比,速度慢占用空間多,恢複速度比增量轉儲快

完全轉儲,增量轉儲和差量轉儲3種資料轉儲機制的特點比較:

完全轉儲 增量轉儲 差量轉儲
時間和空間使用 最多 最少 中間
轉儲速度 最慢 最快 中間
恢複速度 最快 最慢 中間

11.2.4.多種轉儲方法結合使用

資料庫三級(11)11.故障處理

11.3.日志檔案

11.3.1.日志檔案的概念

日志檔案記錄每個事務對資料庫的修改操作,資料庫系統在運作過程中,将所有事務的修改操作登記到日志檔案中。日志檔案的具體作用如下:

資料庫三級(11)11.故障處理
  1. 事務故障恢複和系統故障恢複必須使用日志檔案

    1.1 故障恢複的兩個基本操作。利用日志檔案進行故障恢複時有兩個基本操作:UNDO(T)和REDO(T)。

  1. 故障恢複的兩個基本操作:

    1.1 UnDO(T):撤銷事務

    1.2 REDO(T):重做事務

  2. UNDO(T)具體步驟:

    反向掃描日志檔案,找到需要撤銷的事務的更新操作,對事務進行逆操作

  3. REDO(T)具體步驟:

    正向掃描日志檔案,找到需要重做的事務的更新操作

     1.2 事務故障恢複

事務是一個完整的工作單元,事務中的工作要麼全做,要麼全不做,否則資料庫會出現不一樣的狀态,是以事務故障恢複時隻需把相應的事務做撤銷操作UNDO(Ti)即可

     1.3 系統故障恢複

系統故障時受影響的可能是正在運作的多個事務,需要分情況讨論∶
  1. 撤銷:

    事務已經開始但還沒送出,即在日志檔案中有開始記錄BEGIN TRANSACTION,而沒有COMMIT或者ROLLBACK

  2. 重做:

    事務已經完成事務的所有操作并送出,在日志檔案中既有BEGIN TRANSACTION記錄,又有COMMIT記錄

  1. 正向掃描日志檔案,找到系統故障前發生的所有事務,如果該事務沒有完成,将其事務标記加入撤銷隊列;若該事務完成将其事務标記加入重做隊列
  2. 對撤銷隊列中的所有事務做撤銷操作UNDO
  3. 對重做隊列中的所有事務做重做操作REDO
  1. 在動态轉儲方式中必須建立日志檔案

    2.1 在動态轉儲中,利用轉儲檔案隻能将資料庫恢複到轉儲過程中的某個狀态,且轉儲檔案中的資料可能處于不一緻狀态。

    2.2 隻有動态轉儲和日志檔案綜合使用,才能将資料庫恢複一緻狀态,或将資料庫恢複到故障發生前的狀态,進而有效地恢複資料庫。

  2. 在靜态轉儲方式中也可使用日志檔案

    3.1 在靜态轉儲方式中,當資料庫毀壞後可使用轉儲檔案把資料庫恢複到轉儲結束時刻的狀态,然後利用日志檔案,把已經完成的事務進行重做處理,對故障發生時尚未完成的事務進行撤銷處理。

    3.2 在靜态轉儲方式中使用日志檔案恢複的流程:

    資料庫三級(11)11.故障處理

11.3.2.日志檔案的格式與内容

  1. 不同的資料庫系統采用的日志檔案格式并不完全一樣,概括起來與兩種:以記錄為機關的日志檔案和以資料塊為機關的日志檔案。
    資料庫三級(11)11.故障處理
  2. 日志檔案的組成
    資料庫三級(11)11.故障處理

11.3.3.登記日志檔案的原則

為保證資料庫是可恢複的,登入日志檔案必須遵循兩條原則

  1. 登記的次序嚴格按并行事務執行的時間次序

    保證了事務對資料庫操的可再現性和正确性

  2. 必須先寫日志檔案,後寫資料庫

    把事務登記到日志檔案和把事務對資料的修改寫到資料庫是兩個不同的過程,必然存在先後順序

11.3.4.檢查點

  1. 檢查點的作用

    在利用日志檔案恢複資料庫資料的過程中,恢複子系統需要搜尋日志,檢查所有日志記錄,把故障發生時沒有送出的事務撤銷,把已經送出的事務重做。檢查點最大限度地減少了資料庫完全恢複時所必須執行的日志部分,改善恢複效率。

  2. 檢查點的引入

    檢查點的引入是在日志檔案中增加一類新的記錄——檢查點記錄,增加一個“重新開始檔案”(用來記錄各個檢查點記錄在日志檔案中的位址),并讓恢複子系統在登入日志檔案期間動态的維護日志。檢查點記錄内容如下︰

    2.1 建立檢查點時刻所有正在執行的事務清單。

    2.2 這些事務最近—個日志記錄的位址。

  3. 動态維護日志檔案的步驟

    動态維護日志檔案的方法是周期性地執行如下操作:建立檢查點、儲存資料庫狀态。具體步驟如下:

    3.1 将目前日志緩沖中的所有日志記錄寫入磁盤的日志檔案上。

    3.2 在日志檔案中寫入—個檢查點記錄。

    3.3 将目前資料緩沖的所有資料記錄寫入磁盤的資料庫中。

    3.4 把檢查點記錄在日志檔案中的位址寫入一個“重新開始檔案”。

恢複子系統可以定期或不定期地檢查點來儲存資料庫的狀态。檢查點可以按照預定的一個時間間隔建立
  1. 基于檢查點的恢複步驟
資料庫三級(11)11.故障處理

11.4.硬體容錯方案

11.4.1.硬體容錯方案概述

  1. 為了保證資料庫系統的連續運作,僅僅依靠資料庫系統軟體不能滿足要求。是以需要從硬體級别從資料庫系統進行保護。
  2. 硬體容錯的方案需要從資料庫系統運作所需要的各種環境出發,分析支撐資料庫系統運作的環節。例如機房的電力、機房空調環境、網絡、存儲、伺服器、綜合考慮,否則某一個環節出現故障都可能導緻資料庫系統不可運作。

11.4.2.RAID系統

  1. 描述:廉價備援磁盤陣列(RAID ),它是由多塊磁盤構成的一個整體,但這并不等于是簡單的磁盤容量疊加,而是相對于其他儲存設備在容量、管理、性能、可靠性和可用性上都有了進一步提高。
  2. 特點:當從這些磁盤中抽出一塊來,利用其他磁盤上的資訊,可以恢複出這塊磁盤的資訊。

    RAID系統可以連接配接在主機系統上,作為存儲資料的媒體,具有裝置虛拟化的能力。RAID子系統圖如下:

    資料庫三級(11)11.故障處理
  3. RAID的兩個備援技術

    3.1 鏡像備援

  1. 鏡像備援就是把所有的資料複制到其他的裝置上或其他地方
  2. 特點:實作起來很簡單,但是額外開銷很大,需要更多的磁盤、控制器和電纜

     3.2 校驗備援

  1. 檢驗備援就是通過對成員磁盤上的資料執行異或(XOR)操作,得到其校驗值,并存放在另外的校驗磁盤上
  2. 特點:實作起來很複雜,但是它占用的磁盤比鏡像備援少
  1. 常見的RAID級别和特點:
    資料庫三級(11)11.故障處理
  2. 軟RAID和硬RAID

    5.1 軟RAID

軟體RAID是由作業系統或作業系統内專用的軟體實作的

     5.2 硬RAID

  1. 硬RAID是由專用的硬體裝置實作的RAID,采用專用的硬體晶片,計算速度快,性能高,維護簡單
  2. 在資料庫系統的伺服器上,一般選擇硬RAID,當磁盤出現故障時可以在不停機的情況下友善更換
  3. 在高端的硬RAID中,帶有專用的緩存晶片,可以将部分作業系統資料緩存在RAID卡的記憶體中,以提高讀寫速度

     5.3 在資料庫系統的資料存儲中,在成本可以承受的情況下,一般建議采用RAID10,同時建議采用帶有緩存的硬RAID

11.4.3.伺服器容錯技術

  1. 引入伺服器容錯原因

    1.1 RAID技術可以防止磁盤損壞導緻資料庫系統異常停止工作。

    1.2 伺服器容錯可以防止伺服器硬體故障或作業系統軟體出現故障造成資料庫系統的異常,導緻資料庫系統不能寸外提供服務。

    1.3 伺服器容錯技術就是為了解決伺服器硬體異常問題出現的解決方案。

  2. 伺服器容錯技術簡介

    伺服器容錯技術一般是采用兩台相同的伺服器,兩台伺服器共享儲存設備,其中一台伺服器運作資料庫系統,資料庫資料存儲在儲存設備中。

    資料庫三級(11)11.故障處理
  3. 其他伺服器容錯技術簡介

    3.1 硬體級别

一些小型機為了提供硬體級别的高穩定性,采用了自行設計制造的專用軟硬體構架

例如:當CPU或記憶體出現硬體故障時,如果作業系統核心并未運作在此CPU或記憶體上,作業系統核心可以将任務直接配置設定到正常的CPU或記憶體上,而後關閉這些CPU或記憶體,保證系統運作穩定

     3.2 軟體級别

一些大型的資料庫軟體提供了專用的伺服器級别容錯技術

例如:Oracle資料庫提供了RAC架構。在OracleRAC架構中,資料庫可以同時運作在多台伺服器上,這些伺服器共享一個存儲

11.4.4.資料庫鏡像與資料庫容災

  1. 引入資料庫鏡像的原因

    随着企業資訊化程度的不斷加深,企業日常工作對服務的依賴性也在不斷增加。是以,企業對資料庫伺服器的可靠性.穩定性提出了更高的要求。為了避免媒體故障對資料庫可用性的影響,許多資料庫管理系統都提供了資料庫鏡像功能。

  2. 資料庫鏡像簡介

    資料庫鏡像是一種用于提高資料庫可用性的解決方案,它根據DBA的要求,自動把整個資料庫或其中的關鍵資料複制到另一個磁盤上。不同的磁盤上有不同的資料庫伺服器,他們通過相應的軟硬體技術手段,實作應用嗷據的互相備份。

    資料庫鏡像的優點:

    資料庫三級(11)11.故障處理
  3. 資料庫分類

    資料庫鏡像的基本架構分為:雙機互備援模式和雙機熱備份模式。

    資料庫三級(11)11.故障處理
    雙機互備援模式和雙機熱備份模式的切換時機一緻,内容如下所示:
    資料庫三級(11)11.故障處理
  4. 資料庫鏡像工作方式
    資料庫三級(11)11.故障處理
    注意:
  1. 重做通過将每個活動事務日志記錄發送到鏡像伺服器來完成,日志記錄按順序應用到鏡像資料庫中。每當資料庫更新時,DBMS将自動保證鏡像資料庫與主資料的一緻性。
  2. 在出現媒體故障時,可由鏡像資料庫繼續提供使用,同時DBMS自動利用鏡像磁盤資料進行主資料庫的恢複,不需要關閉和重裝資料庫副本。
  1. SQLServer資料庫鏡像簡介

    5.1 SQL Server資料庫鏡像是将資料庫事務處理從SQL Server資料庫移動到不同SQL Server環境中的另外一個SQLServer資料庫中。

    5.2 鏡像的複制是一個備用的複制,不能直接通路,隻用來進行錯誤恢複。

    資料庫三級(11)11.故障處理
    資料庫三級(11)11.故障處理
    5.3 有兩種鏡像運作模式:高安全性模式和運作模式。
高安全性模式:
  1. 支援同步操作,也就是“高性能模式”
  2. 當會話開始時,鏡像伺服器将使鏡像資料庫盡快與主體資料庫同步。同步資料庫之後,事

    務将在夥伴雙方處送出,會延長事務滞後時間

     5.4 資料庫鏡像提供了3種實作方式:高可用性、高保護、高性能。

資料庫三級(11)11.故障處理