天天看點

DM8備份恢複實戰

概述:

DM 資料庫中的資料存儲在資料庫的實體資料檔案中,資料檔案按照頁、簇和段的方式進行管理,資料頁是最小的資料存儲單元。任何一個對 DM 資料庫的操作,歸根結底都是對某個資料檔案頁的讀寫操作。是以,DM 備份的本質就是從資料庫檔案中拷貝有效的資料頁儲存到備份集中,這裡的有效資料頁包括資料檔案的描述頁和被配置設定使用的資料頁。而在備份的過程中,如果資料庫系統還在繼續運作,這期間的資料庫操作并不是都會立即展現到資料檔案中,而是首先以日志的形式寫到歸檔日志中,是以,為了保證使用者可以通過備份集将資料恢複到備份結束時間點的狀态,就需要将備份過程中産生的歸檔日志也儲存到備份集中。還原與恢複是備份的逆過程。還原是将備份集中的有效資料頁重新寫入目标資料檔案的過程。恢複則是指通過重做歸檔日志,将資料庫狀态恢複到備份結束時的狀态;也可以恢複到指定時間點和指定 LSN。恢複結束以後,資料庫中可能存在處于未送出狀态的活動事務,這些活動事務在恢複結束後的第一次資料庫系統啟動時,會由 DM 資料庫自動進行滾。

基本概念

DM 資料庫的表空間是一個邏輯概念,其目的主要是為了友善資料庫的管理,資料庫的所有對象在邏輯上都存放在某個表空間中,而實體上都存儲在所屬表空間的資料檔案中。一個表空間由一個或多個資料檔案組成。資料檔案是資料庫中最重要的檔案類型,是真實資料存儲的地方。DM 中資料檔案的擴充名為.dbf,分為系統預設生成的資料檔案和使用者自己建立的資料檔案兩類。在建立 DM 資料庫時,系統會自動建立 5 個表空間:SYSTEM 表空間、ROLL 表空間、MAIN 表空間、TEMP 表空間和 HMAIN 表空間。DM 自動為這幾個自動建立的表空間分别生成預設的資料檔案:SYSTEM.DBF、ROLL.DBF、MAIN.DBF 和 TEMP.DBF,HMAIN 表空間沒有預設的資料檔案。使用者也可以建立自己的表空間,由使用者建立的表空間統稱為使用者自定義表空間,在建立自定義表空間時需要為表空間指定資料檔案。使用者可通過為已存在的表空間增加資料檔案或建立一個新的表空間來建立資料檔案。是以,DM 中的表空間有以下幾類:SYSTEM 表空間存放了 DM 資料庫全局字典資訊和全局系統資料,是 DM 資料庫能夠正常運作的必要前提,預設對應資料檔案 SYSTEM.DBF。CREATE TABLE 等 DDL 操作會修改 SYSTEM 表空間資料。ROLL 表空間存放 DM 資料庫運作過程中産生的所有復原記錄。DM 中幾乎所有的資料庫修改操作都會生成復原記錄,并儲存在 ROLL 表空間的資料檔案中。ROLL 表空間是資料庫全局對象,不論修改哪一個表空間,生成的復原記錄都是寫入 ROLL 表空間,該表空間由系統自動維護,預設資料檔案為 ROLL.DBF。TEMP 表空間存放臨時表資料以及資料庫運作過程中産生的臨時資料。在資料庫運作過程中,SORT、HASH JOIN 等操作都可能會生成臨時結果集,它們作為臨時資料存放在 TEMP 表空間中。TEMP 表空間是資料庫全局對象,由系統自動維護。若資料庫重新開機,儲存在 TEMP 表空間中的所有資料都會丢失。TEMP 表空間的預設資料檔案為 TEMP.DBF。MAIN 表空間在建立使用者時,如果沒有指定預設表空間,系統自動指定 MAIN 表空間為使用者預設的表空間。HMAIN 表空間 DM 的 HUGE 表空間,用來存放 HUGE 表資料檔案。HMAIN 表空間和 HUGE 表相關知識可參考《DM8 系統管理者手冊》使用者自定義表空間:即使用者通過建立表空間相關操作生成的表空間。

DM冷備 備份工具DMRAN

備份前準備:確定資料庫是關閉狀态,確定DMap服務時開啟狀态

DM8備份恢複實戰
使用達夢冷備工具DMRMAN進行全庫備份
DM8備份恢複實戰

備份成功backup successfully!,會在指定目錄生成指定名字的備份集

.bak為備份集名稱,.meta為備份中繼資料資訊

DM8備份恢複實戰

假設資料庫出現故障,故障的可能原因很多例如軟硬體故障,意外斷電導緻的磁盤損壞或壞塊等等最終的結果就是資料庫無法使用,需要利用備份做恢複。

下面介紹通過DMRAN進行恢複

DM8備份恢複實戰

restore database '/dm/data/DCA/dm.ini' from backupset '/dm/bak/20200709' 成功完成還原操作提示 restore successfully.這時嘗試啟動資料庫

無法啟動資料庫,提示需要recover恢複和更新魔數

這裡簡單說一下幾點:

1,DM8中資料庫恢複需要還原restore 還原,recover 恢複,update db_magic更新魔數 三部分。

2,DM7中隻有還原resore,recover恢複兩部分。

DM8備份恢複實戰

以上我們隻完成了還原操作,接下來進行恢複和更新資料庫魔數。

至此資料庫恢複全部完成請注意上面提到恢複的完整步驟及不同版本恢複時的差別。

recover database '/dm/data/DCA/dm.ini' update db_magic;

DM8備份恢複實戰
資料庫可以正常打開
DM8備份恢複實戰

總結:達夢冷備工具DMRMAN是達夢自帶的工具無需安裝,備份前需要,關閉資料庫和確定Dmap服務啟動,恢複需要注意不同版本的差別。

上面簡單的介紹了達夢冷備和恢複的方式,前提需要關閉資料庫,這樣的要求在關鍵核心業務中是不可想象的,是以生産環境的備份熱備方式比較常見,熱備也叫聯機線上備份,冷備也成脫機備份。

熱備份基本要求:

1,資料庫是打開的

cd /dm8/bin/

DM8備份恢複實戰
2,Dmap服務是啟動的
DM8備份恢複實戰

3,配置歸檔

a) 資料庫啟動到配置模式

open狀态

alter database mount;

DM8備份恢複實戰
b)配置歸檔檔案
DM8備份恢複實戰
c) 開啟歸檔
DM8備份恢複實戰
d) 打開資料庫
DM8備份恢複實戰
也可以用DM 管理工具去配置 打開歸檔 此方法暫不介紹
DM8備份恢複實戰

下面開始DM熱備示範,本例隻示範全庫熱備份表空間熱備份以及表空間的還原操作其他對象的備份和恢複操作請參考DM8備份與還原手冊裡面有非常詳細的介紹。

DM 共支援 9 個級别(1~9 級)的壓縮處理,級别越高壓縮比越高,但相應的壓縮速度越慢、CPU 開銷越大。支援并行備份,加密備份等。

備份資料庫同時可以通過增加備份集描述資訊來友善的區分備份集的類型

DM8備份恢複實戰
DM8備份恢複實戰

備份dmhr表空間

DM8備份恢複實戰

為了確定備份集的可恢複性需要對備份集做校驗,達夢提SF_BAKSET_CHECK 函數對備份集進行校驗。

定義:

INT SF_BAKSET_CHECK(

device_type varchar,

bakset_pathvarchar(256)

)

參數說明:

device_type:裝置類型,disk 或 tape。

bakset_path:待校驗的備份集目錄。

傳回值:

1:備份集目錄存在且合法;否則報錯。

DM8備份恢複實戰

檢視備份集資訊為了友善管理和使用備份:

注意如果備份路徑指定的不是備份的預設路徑,需要通過函數手動添加指定的備份目錄,否則會出現無法搜尋到備份集的問題。

DM8備份恢複實戰

使用聯機備份恢複表空間:

模拟DMHR表空間損壞,這裡手工删除它的資料檔案即可。

檢視DMHR表空間的資料檔案位置,

DM8備份恢複實戰

删除DMHR表空間的資料檔案

DM8備份恢複實戰

繼續閱讀