達夢數據庫備份還原(日志備份及原理)


達夢數據庫備份還原

1.達夢數據庫簡介

達夢數據庫管理系統是達夢公司推出的具有完全自主知識產權的高性能數據庫管理系統,簡稱DM。達夢數據庫管理系統7.0版本,簡稱DM7。

DM7特點: 1.通用性 2.高性能 3.高可用 4.跨平台 5.高可拓展

DM7是目前國產數據庫中安全級別最高的數據庫。用於商業用途需要收費,價格昂貴。 (注:DM7安裝后自帶一套完整的管理工具,不需要單獨安裝其他第三方管理工具)

對比MySQL、Oracle數據庫

MySQL: MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的RDBMS (關系數據庫管理系統) 應用軟件。 特點: 1.體積小 2.速度快 3.擁有成本低

MySQL 軟件采用了雙授權政策,分為社區版(免費)和商業版(收費)。一般中小型網站的開發都選擇 MySQL 作為網站數據庫。

Oracle數據庫: Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。 特點: 1.高性能 2.高可用 3.高可擴展 4.安全性強 5.穩定性強 Oracle數據庫軟件免費。但用於商業用途需要購買軟件授權(收費), Oracle有兩種授權方式,按CPU數和按用戶數,成本較高。

2.備份還原簡介

數據庫備份是 DBA (數據庫管理員Database Administrator)日常最重要的工作內容。備份不是目的,還原與 恢復才是備份的目 的。DBA 不僅要保證備份成功,還要保證一旦數據庫發生故障時備份可還原可恢復。

  • 數據庫備份就是制作數據庫的“副本”,以備需要時以此來進行恢復。

  • 數據庫備份可以分為“物理備份”和“邏輯備份”。

物理備份: 該方法實現數據庫的完整恢復,通過數據庫內部的存儲結構,完整的復制數據頁,它涉及到組成數據庫的文件(如數據文件、控制文件和日志文件等),但不考慮邏輯內容(如表、視圖和存儲過程等數據庫對象)。 (數據庫可以是聯機或脫機狀態,也稱為熱備和冷備)

邏輯備份: 是利用SQL語言從數據庫中抽取數據並存於二進制文件的過程。(要求數據庫是聯機狀態)

3.備份還原基礎知識

概述: DM7 數據庫中的數據存儲在數據庫的物理數據文件中,數據文件按照頁、簇和段的方式 進行管理,數據頁是最小的數據存儲單元。任何一個對 DM7 數據庫的操作,歸根結底都是 對某個數據文件頁的讀寫操作。

備份

DM7 備份的本質就是從數據庫文件中拷貝有效的數據頁保存到備份集中。

還原與恢復(備份的反過程)

還原是將備份集中的有效數據頁重新寫入目標數據文件的過程。 恢復則是指通過重做歸檔日志,將數據庫狀態恢復到備份結束時的狀態;也可以恢復到指定時間點和指定 LSN。

表空間與數據文件:

DM7 數據庫的表空間是一個邏輯概念,其目的主要是為了方便數據庫的管理,數據庫的 所有對象在邏輯上都存放在某個表空間中,而物理上都存儲在所屬表空間的數據文件中。一個表空間由一個或多個數據文件組成。

數據文件是數據庫中最重要的文件類型,是真實數據存儲的地方。

DM7 中數據文件的擴展名為.dbf,分為系統默認生成的數據文件和用戶自己創建的數據文件兩類。

下圖為DM管理工具及對應文件目錄:

重做日志:

DM7 數據庫重做日志,又叫 REDO 日志,忠實記錄了所有物理頁的修改,基本信息包括操作類型、表空間號、文件號、頁號、頁內偏移、實際數據等。數據庫中 INSERT、 DELETE、 UPDATE等 DML 操作以及 CREATE TABLE 等 DDL 操作最終都會轉化為對某些數據文件、某些數據頁的修改。因此,在系統故障重啟時,通過重做 REDO 日志,可以將數據庫恢復到故障時的狀態。 DM7 數據庫默認包含兩個擴展名為 log 的日志文件,用來保存 REDO 日志,稱為聯機重做日志文件。這兩個文件循環使用。任何數據頁從內存緩沖區寫入磁盤之前,必須保證其對應的 REDO 日志已經寫入到聯機日志文件。

下圖為重做日志的具體文件:

歸檔日志:

DM7數據庫可以在歸檔非歸檔兩種模式下運行。DM7 支持多種歸檔方式,本次主要介紹本地歸檔。 當數據庫處於歸檔模式下且配置了本地歸檔時, REDO 日志先寫入聯機日志文件, 然后再異步寫入歸檔日志文件。歸檔日志文件以配置的歸檔名稱和文件創建時間命名,擴展名也是 log。

系統在歸檔模式下運行會更安全,當出現介質故障,如磁盤損壞導致數據文件丟失、異 常時,利用歸檔日志,系統可以恢復至故障發生的前一刻。因此,建議將歸檔目錄與數據文 件配置、保存到不同的物理磁盤上。

達夢數據庫備份開啟歸檔步驟:

開啟歸檔后生成的歸檔日志文件:

檢查點:

DM7 數據庫運行過程中,用戶的所有操作都在內存中進行。每修改一條記錄都必須先把記錄所在的數據頁加載到 BUFFER 緩沖區中,然后進行修改。 事務運行時,會把生成的REDO 日志保留在日志緩沖區 RLOG_BUF 中,每條日志記錄對應一個 LSN,當事務提交日志緩沖區滿執行檢查點時會進行日志刷盤(將緩沖區中數據寫入聯機日志文件)。 檢查點(checkpoint)是一個數據庫事件,它的功能是按照數據頁的修改順序,依次將 BUFFER 緩沖區中的臟頁寫入磁盤,並在這個過程中動態調整 CKPT_LSN 值,釋放日志空間。

  • DM7 的檢查點分為兩種: 完全檢查點: 會將內存緩沖區中的所有臟頁寫入磁盤,並調整 CKPT_LSN,在數據庫正常關閉時會產生一個完全檢查點。 部 分 檢 查 點 : 根 據 dm.ini 配 置 文 件 中 的 參 數 CKPT_FLUSH_RATE 和CKPT_FLUSH_PAGES,確定每次檢查點刷臟頁的數量。執行部分檢查點的過程中, DDL/DML操作都可以正常執行, DM7 系統中絕大多數情況下觸發的都是部分檢查點。

  • DM7 中幾個 LSN 值的意義: LSN:日志序列號( Log Sequence Number),由系統自動維護的 Bigint 類型數值,具有自動遞增、全局唯一特性,每一個 LSN 值代表着 DM 系統內部產生的一個物理事務。 CUR_LSN:系統當前 LSN,代表已經分配的最大 LSN 值。 FILE_LSN:文件 LSN,已經寫入聯機重做日志文件的最大 LSN 值。 FLUSH_LSN:FLUSH_LSN 是已經發起日志刷盤請求,但還沒有真正寫入聯機, Redo 日志文件的最大 LSN 值。 CKPT_LSN:檢查點 LSN。 START_LSN:為了保證備份的完整性和有效性,必須包含的歸檔日志起始 LSN 值。 END_LSN:為了保證備份的完整性和有效性,必須包含歸檔日志結束 LSN 值。

下圖說明了聯機日志文件、日志緩沖區 RLOG_BUF 以及相關各 LSN 之間的關系:

備份集: 備份集用來存放備份過程中產生的備份數據及備份信息。 一個備份集對應了一次完整的備份。 一個備份集就是一個目錄, 備份集包含一個或多個備份片文件,以及一個備份元數據文件

  • 備份片用來存儲備份數據的文件。備份片文件后綴為.bak。

  • 元數據文件用來存放備份信息, 元數據文件的后綴為.meta。

4.備份

備份的目的是當數據庫遇到損壞的情況下,可以執行還原恢復操作,把數據庫復原到損壞前的某個時間點。

邏輯備份和物理備份
  • 邏輯備份:指利用 dexp 導出工具,將指定對象(庫級、模式級、表級)的數據導出到 文件的備份方式。邏輯備份針對的是數據內容,並不關心這些數據物理存儲在什么位置。

    通過DM管理工具進行邏輯備份:

    第一步:打開DM管理工具→連接上對應數據庫→選中需要導出的模式→鼠標右鍵→點擊導出。

    第二步:指定導出目錄→指定導出文件名稱→點擊“確定”按鈕。

    第三步:查看導出后的文件

  • 物理備份:直接掃描數據庫文件,找出那些已經分配、使用的數據頁,拷貝並保存到備份集中。

通過DM管理工具進行物理備份:

第一步:打開DM管理工具→連接上對應數據庫→選中庫備份→鼠標右鍵→點擊”新建備份“。

第二步:指定備份名稱、備份集目錄→點擊“確定”按鈕。

第三步:查看導出后的文件。

聯機備份和脫機備份
  • 聯機備份:數據庫處於運行狀態、 並正常提供數據庫服務情況下進行的備份操作,我們稱為聯機備份。(可使用DM管理工具進行聯機備份)

  • 脫機備份:數據庫處於關閉狀態時進行的備份操作,被稱為脫機備份。(可使用DM控制台工具進行脫機備份)

數據備份和歸檔日志備份
  • 數據備份:數據備份主要針對數據文件內容,包括庫備份、 表空間備份和表備份。

  • 歸檔日志備份:是專門針對歸檔日志文件進行操作,不涉及任何數據文件內容。

一致性備份和非一致性備份
  • 一致性備份:一致性備份的備份集包含了完整的數據文件內容和歸檔日志信息; 利用一個單獨的備份集可以將數據庫恢復到備份時狀態。

  • 非一致性備份:非一致性備份的備份集只包含數據文件相關內容,沒有歸檔日志信息,利用非一致性備份還原的數據庫,無法直接啟動,必須借助歸檔日志來恢復。

完全備份和增量備份
  • 完全備份:完全備份生成的備份集包含了指定庫(或者表空間)的全部有效數據頁。

  • 增量備份:增量備份是在某個特定備份集基礎上,收集數據庫新修改的數據頁進行備份,可以有效減少備份集的空間占用、 提高備份速度。

5.還原與恢復

還原與恢復是備份的逆過程, 還原與恢復的主要目的是將目標數據庫恢復到備份結束時刻的狀態。

還原:是將數據頁從備份集中拷貝回數據庫文件相應位置。 恢復:是重做 REDO 日志將數據庫恢復到一致性狀態。

由於聯機備份時, 系統中可能存在一些處於活動狀態的事務正在執行, 並不能保證備份集中的所有數據頁是處於一致性狀態; 而脫機備份時,數據頁不一定是正常關閉的,也不能保證備份集中所有數據頁是處於一致性狀態。 因此, 還原結束后目標庫有可能處於非一致性狀態, 不能馬上提供數據庫服務;必須要進行數據庫恢復操作后,才能正常啟動。

6.補充說明

歸檔切換

由於本地歸檔是異步寫入歸檔日志文件的, REDO 日志在寫入聯機日志文件后, 再由專門的歸檔線程負責將這些 REDO 日志寫入本地歸檔日志文件。

通過歸檔切換功能,可以將這些已經寫入聯機日志文件,但還沒有寫入歸檔日志文件的 REDO 日志,寫入到歸檔日志文件中。(聯機備份時,在備份之前系統會自動執行一次歸檔切換)

歸檔修復

DM7 數據庫服務器正常退出時, 會將所有 REDO 日志寫入本地歸檔日志文件中;但是數據庫服務器異常關閉時, 可能存在部分 REDO 日志未寫入本地歸檔日志文件中。 歸檔修復會掃描聯機日志文件,將那些已經寫入聯機日志文件、但還沒有寫入到歸檔日志文件的 REDO日 志,重新寫入到歸檔日志文件。 注意:一般建議在數據庫故障后, 應立即執行歸檔修復,否則后續還原恢復導致聯機日志中未刷入本地歸檔的 REDO 日志丟失, 屆時再利用本地歸檔恢復將無法恢復到故障前的最新狀態。執行修復時,目標庫一定不能處於運行狀態。

  • 版本說明:

    隨着需求的不斷增加、 技術的不斷成熟, DM7 備份與還原前后發布了兩個版本: V1.0和 V2.0。 因為不同版本策略不同,所以備份文件在各版本間不能混用 版本區別: V1.0 備份還原 V1.0 指 DM7 早期的備份還原,不是基於備份集組織的備份。 V1.0 版本使用dmbackup 工具執行脫機備份,使用 dmrestore 工具執行脫機還原。 V2.0 引入備份片、元數據文件、備份集等概念,提供第三方備份(TAPE 類型) 接口,支持RAC 備份。使用 DMRMAN 工具(DM Recovery Manager,恢復管理器)進行脫機備份還原。

用戶可通過 dm.ini中參數 BAK_POLICY 選擇備份策略。 BAK_POLICY 可取值 0、1 或 2,默認為 0(同時支持)。

7.備份還原工具介紹及使用

DIsql工具(聯機)

使用聯機執行 SQL 語句進行備份還原。 聯機方式支持數據庫、用戶表空間、用戶表和歸檔的備份, 用戶表空間、 用戶表的還原。 在進行聯機庫級備份、 歸檔備份、表空間備份和表空間還原時,必須保證系統處於歸檔模式,否則聯機備份還原不能進行。

  • 啟動

1.Windows系統中啟動 DIsql(兩種啟動方式)

①程序菜單啟動,輸入LOGIN或CONN進行登錄,依次輸入服務名、用戶名、密碼登錄。

②自帶DIsql工具啟動

DIsql 工具位於 DM 數據庫安裝目錄的 bin 子目錄下,如:D:\dmdbms\bin\DIsql.exe

2.命令行啟動 Disql:適用於任何操作系統平台。

在命令行工具中找到 DIsql 所在安裝目錄 C:\dmdbms\bin ,輸入 disql回車, 然后輸入用戶名和密碼登錄。

  • 通過輸入SQL命令進行備份:

    #默認全量備份
    SQL>BACKUP DATABASE BACKUPSET;
    #指定文件名稱備份到默認bak目錄
    SQL>BACKUP DATABASE BACKUPSET   'db_bak_01'  ;
    #指定備份集路徑備份
    SQL>BACKUP DATABASE BACKUPSET 'C:\dm_back\back\db_bak_02';
    #指定備份集,自定義備份名稱
    SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ' C:\dm_back\back\db_bak_03';
    #指定備份集,自定義備份名稱,添加描述信息
    SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ' C:\dm_back\back\ db_bak_04' BACKUPINFO '完全備份';
    #增量備份
    SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR ' C:\dm_back\back\ dm_ba' BACKUPSET
    ' C:\dm_back\back\ db_increment_bak_01';

    注意:語句結束必須輸入分號“;”表示結束。

  • 退出

    通過輸入LOGOUT命令 從登錄主庫注銷會話。斷開連接而不退出 DIsql。

DMRMAN工具(脫機)

DMRMAN( DM RECOVERY MANEGER)是 DM7 的脫機備份還原管理工具,由它來統一負責庫級脫機備份、脫機還原、數據庫恢復等相關操作,該工具支持命令行指定參數方式和 控制台交互方式執行,降低了用戶的操作難度。

  • 啟動DMRMAN :

在命令行工具中找到 DMRMAN所在目錄 C:\dmdbms\bin ,輸入DMRMAN回車。(Linux下輸入./ DMRMAN)

  • 使用

    DMRMAN 工具支持控制台輸入命令、命令行設置參數兩種操作方式。下面對控制台輸入命令的 操作方式進行介紹。 DMRMAN 控制台輸入命令 輸入執行命令進行數據庫備份 RMAN>BACKUP DATABASE ' C:\dmdbms\data\DAMENG\dm.ini ';

    DMRMAN 控制台還可以執行腳本。 ①如創建一個名為 cmd_file.txt 的文件 ②文件中包含“ BACKUP DATABASE ‘ C:\dmdbms\data\DAMENG\dm.ini ’ ” 命 令 , ③保 存 到C:\dm_cmd 目錄下。 執行方式如下: RMAN>`C:\dm_cmd\cmd_file.txt

    注意:DMRMAN 是按行解析命令,如果輸入一行不完整的命令執行會報錯。命令的結尾可以加分號結束,也可以不使用分號。

  • 退出DMRMAN環境

    啟動后控制台中輸入 exit 命令即可退出 DMRMAN 環境。

MANAGER工具(聯機)

MANAGER管理工具的聯機備份還原缺省使用 V2.0 備份還原策略。 用戶可通過查看安裝工具tool目錄下manager.ini 文件進行確認,相關配置參數如下: -Duse_bak2=true #true 表示使用 V2.0 策略,false 表示使用 V1.0 策略。

  • 使用MANAGER管理工具進行聯機備份數據庫:

     

  • MANAGER管理工具:創建數據庫自動備份作業:

     

  • 使用MANAGER管理工具進行數據還原:

CONSOLE工具(脫機)

CONSOLE管理工具的脫機備份還原缺省使用 V2.0 備份還原策略。 用戶可通過查看安裝工具tool目錄下console.ini 文件進行確認,相關配置參數如下: -Duse_bak2=true #true 表示使用 V2.0 策略,false 表示使用 V1.0 策略。

  • 使用CONSOLE管理工具進行脫機備份:

 

 

  • 使用CONSOLE管理工具進行脫機還原:

DM服務查看器

可通過DM服務查看器啟動和停止達夢數據庫服務。

 

工具使用總結

總結:備份還原時需要根據實際應用場景選擇合適的備份還原工具進行備份還原。

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM