一種實時數據庫備份恢復方法
【技術領域】
[0001]本發(fā)明屬于實時數據庫在信息化系統(tǒng)應用領域,特別是涉及一種信息系統(tǒng)實時數據庫在數據備份以及數據恢復的方法。
【背景技術】
[0002]隨著生產系統(tǒng)信息化、自動化水平的不斷提高,數據庫技術的不斷發(fā)展和廣泛應用,為保證綜合業(yè)務信息實時處理系統(tǒng)(簡稱綜合業(yè)務系統(tǒng))7 X 24小時不間斷地安全生產運行,通常在系統(tǒng)應用層面和數據庫層面通過軟硬件容錯技術來提高綜合業(yè)務系統(tǒng)的安全穩(wěn)定性。
[0003]系統(tǒng)應用層面常見的有磁盤陣列機、雙機熱備、流帶備份等容錯技術,主要從系統(tǒng)應用層面通過雙機冗余等方式同時維護多套運行系統(tǒng),保證系統(tǒng)穩(wěn)定。
[0004]數據庫層面則主要通過數據庫備份恢復技術來確保在系統(tǒng)運行發(fā)生故障的情況下不丟失數據。常見的數據庫備份恢復方案主要有物理備份和邏輯備份兩種。物理備份拷貝數據庫的物理文件(包括控制文件、數據文件、日志文件等)入磁帶或其他存儲介質,根據數據庫運行狀態(tài)又分為脫機備份(冷備)和聯機備份(熱備)兩種。脫機備份是指在關閉數據庫的情況下,將數據庫的物理文件拷貝到存儲介質,一般利用操作系統(tǒng)自帶的命令和工具來完成,操作簡單,缺點在于這種方法往往需要將數據庫關閉,對于系統(tǒng)應用的連續(xù)性有一定影響。聯機備份是指在數據庫開啟并提供用戶訪問的情況下,對物理文件做操作系統(tǒng)級別的備份,缺點是操作比較復雜,需要對操作系統(tǒng)有較深的認識。邏輯備份是針對用戶、表空間、表、分區(qū)等數據庫邏輯組件進行備份,一般將數據庫邏輯組件信息導出轉存為二進制文件,恢復操作中,將導出的二進制文件重新裝載到目標數據庫中。特點在于操作靈活,可實現不同數據庫之間的數據迀移,可以對單個數據庫對象進行備份。許多商業(yè)數據庫廠商采用不同的實現方式提供了很多功能強大的邏輯磁帶讀寫工具,如Oracle公司的export/import、數據泵技術等。然而現有的邏輯備份方法大多是針對關系型數據庫,對于大規(guī)模歸檔流數據的備份恢復在效率上很難滿足,而針對以處理大規(guī)模歸檔流數據見長的實時數據庫,其備份恢復方法目前則比較缺乏,主要研宄成果集中在檢查點技術、日志記錄、協(xié)議、重裝算法等,但大多適用于內存數據庫方面。
【發(fā)明內容】
[0005]本發(fā)明提供一種實時數據庫備份恢復方法,目的是為了解決單個實時數據庫在本地磁盤的備份和恢復問題,該實時數據庫的數據存儲結構需滿足以下幾個條件:1、物理文件包括控制文件、緩存文件、索引文件、數據文件、日志文件;2、索引文件、數據文件無時間標識,無法以時間段進行離線分離,即不能通過單獨拷貝某時間段的索引、數據文件進行備份;3、數據文件中的數據結構包含文件頭和若干均勻大小的文件塊,每個文件塊中包含若干數據節(jié)點(數據節(jié)點是一個數據集合)。
[0006]本發(fā)明采用的技術方案主要包含三個部分:一、離線(數據庫停止運行)全量備份及其恢復,主要解決實時數據庫停止運行情況下的全量備份和全量恢復;二、在線(數據庫正常運行)全量備份及其恢復,主要解決實時數據庫開啟并提供用戶查詢訪問的情況下的全量備份和全量恢復;三、增量備份及其恢復,主要解決實時數據庫開啟并提供正常服務的情況下,對新增加或新更新的物理文件進行備份及其恢復。
[0007]本發(fā)明的方法具有如下特點:
[0008](a)適用于實時數據庫在信息化系統(tǒng)應用領域,特別是涉及信息系統(tǒng)實時數據庫在數據備份以及數據恢復方面。
[0009](b)數據庫的數據結構特定并且索引文件和數據文件分別耦合在一起,無時間標識,無法以時間段進行離線分離,不能通過單獨拷貝某時間段的索引、數據文件進行備份。
[0010](C)提供數據庫離線和在線兩種備份方式。
[0011](d)提供數據庫物理文件全量和增量兩種備份恢復方式。
[0012](e)增量備份通過備份數據文件新增的文件塊、控制文件、緩存文件和日志文件相結合的方式實現。
[0013](f)適用于索引、數據文件號按序增長的數據庫系統(tǒng)。
[0014]本發(fā)明中的離線全量備份恢復方案包括如下步驟:
[0015]步驟A:停止正在運行的實時數據庫,依次拷貝物理文件至備份目錄;
[0016]步驟B:打開控制文件,讀取索引文件和數據文件列表,更新文件所在目錄為備份目錄;
[0017]步驟C:創(chuàng)建全量備份信息記錄文件,保存在全量備份目錄中。打開文件編號最大的數據文件,讀取出文件頭信息,根據該信息獲取數據庫最后一次分配文件塊的時間,將該時間與該文件的文件名、文件號、已寫數據的偏移位置寫入全量備份信息記錄文件中供增量備份使用;
[0018]步驟D:更新備份歷史記錄文件,記錄備份時間、備份類型及備份目錄等信息,備份結束。
[0019]步驟E:離線全量恢復時,由于離線全量備份出的物理文件本身就是完整的一套數據庫文件,因此可直接使用全量備份目錄中的物理文件啟動數據庫。
[0020]本發(fā)明中的在線全量備份恢復方案包括如下步驟:
[0021]步驟A:對實時數據庫加寫鎖,確保備份過程中無新數據處理,數據庫對外依然提供查詢業(yè)務;
[0022]步驟B:執(zhí)行離線全量備份恢復方案步驟B、C、D ;
[0023]步驟C:對實時數據庫解寫鎖,恢復實時數據庫提交處理業(yè)務;
[0024]步驟D:同離線全量恢復一樣,在線全量恢復時,由于全量備份出的物理文件本身就是完整的一套數據庫文件,因此可直接使用全量備份目錄中的物理文件啟動數據庫。
[0025]本發(fā)明中的增量備份方案包括如下步驟:
[0026]步驟A:獲取增量備份方式及開始、結束時間。提供三種增量備份方式:①參數為結束時間endTime,即備份從上次備份時間點到endTime之間新近分配的所有文件塊。②參數為天數N,即備份從上次備份時間點以后N天分配的所有文件塊。③無參數,即備份從上次備份時間點到系統(tǒng)當前時間之間分配的所有文件塊;
[0027]步驟B:備份控制文件。創(chuàng)建增量備份目錄,以時間命名。將數據庫控制文件拷貝至增量備份目錄下;
[0028]步驟C:備份緩存文件。調用數據庫接口將緩存數據取出,寫入自定義格式的緩存文件中;
[0029]步驟D:備份日志文件。將數據庫日志文件拷貝至增量備份目錄下;
[0030]步驟E:備份增量數據文件。讀取備份信息記錄文件,獲取上次備份時記錄的最大文件號及偏移,從該位置開始順序讀取文件塊至備份結束時間,將讀取的文件塊寫入自定義格式數據文件中;
[0031]步驟F:創(chuàng)建增量備份信息記錄文件,保存在本次增量備份目錄中。打開文件編號最大的數據文件,讀取出文件頭信息,根據該信息獲取數據庫最后一次分配文件塊的時間,將該時間與該文件的文件名、文件號、已寫數據的偏移位置寫入增量備份信息記錄文件中供下次增量備份使用;
[0032]步驟G:更新備份歷史記錄文件,記錄備份時間、備份類型及備份目錄等信息,備份結束。
[0033]本發(fā)明中的增量數據恢復方案包括如下步驟:
[0034]步驟A:通過輸入參數獲取恢復時間點,順序查找增量備份目錄,選擇小于等于恢復時間點的所有增量備份目錄以及全量備份目錄作為恢復使用目錄;
[0035]步驟B:以增量備份目錄η (I SnS N,N為步驟A獲取的增量備份目錄個數)下的控制文件Fl為基礎,通過比較全備目錄下的控制文件F2進行調整,如果Fl中的測點在F2中存在,則調整該測點是根節(jié)點為F2中對應的根節(jié)點指針,便于連接全量備份數據。如果Fl中的測點在F2中不存在,則說明該測點為新增測點,將其根節(jié)點指針置為0,便于后續(xù)數據添加。如果F2中的測點在Fl中不存在,則說明該測點被刪除,刪除該測點數據。使最終生成的控制文件F3為恢復時間點A時刻的控制文件;
[0036]步驟C:以步驟B生成的控制文件和全備目錄中的數據、索引文件為基準,臨時啟動數據庫DB_T ;
[0037]步驟D:讀取增量備份目錄n(l<n<N,N為步驟A獲取的增量備份目錄個數)下的自定義格式緩存文件,按序回寫至DB_T ;
[0038]步驟E:讀取增量備份目錄n(l<n<N,N為步驟A獲取的增量備份目錄個數)下的自定義格式數據文件,按序回寫至DB_T ;
[0039]步驟F:讀取增量備份目錄n(l<n<N,N為步驟A獲取的增量備份目錄個數)的日志文件,獲取其中的刪除數據信息,刪除DB_T中的數據;
[0040]步驟G:遞歸至步驟B,實現全部增量目錄的文件恢復,關閉數據庫DB_T。
[0041]本發(fā)明的有益效果如下:
[0042]首先,對實時數據庫數據備份以及數據恢復方面提供了一套完整可行的解決方案;其次,本方案增量數據備份和恢復的實現方式,解決了長期以來使用全量備份導致的磁盤空間急劇增長的缺陷,節(jié)約維護成本;再次,由于增量備份數據量遠小于全量備份,因此時間開銷比全量備份要小得多,節(jié)約了備份數據的維護時間及成本;最后,方案中的增量備份支持數據庫系統(tǒng)在線運行,不影響已經投運的業(yè)務系統(tǒng),有效的保證了業(yè)務系統(tǒng)穩(wěn)定性和有效性。
【附圖說明】
[0043]圖1是本發(fā)明實時數據庫備份恢復方法的總體實現流程圖;
[0044]圖2是本發(fā)明中的離線全量備份過程的實現流程圖;
[0045]圖3是本發(fā)明中的在線全量備份過程的實現流程圖;
[0046]圖4是本發(fā)明中的增量備份過程的實現流程圖;
[0047]圖5是本發(fā)明中的增量恢復過程的實現流程圖。
【具體實施方式】
[0048]下面結合附圖對本發(fā)明作進一步詳細說明。
[0049]本發(fā)明實時數據庫備份恢復方法的總體實現流程圖如圖1所示。圖中左邊的模塊表示原實時數據庫,右邊虛框內的模塊表示針對原實時數據庫備份出來的文件結構,向右的箭頭表示備份過程,其中右邊虛框內最上方的模塊為h時刻對原實時數據庫做的全量備份,全量備份下方的若干個模塊表示k2lvkjt刻對原實時數據庫做的增量備份。數據恢復則由全量備份模塊和若干個增量模塊共同實現,例如,需要恢復k3時刻的數據庫文件,則需要全量備份模塊、增量備份一模塊和增量備份二模塊共同完成數據恢復。以附圖1所示的備份示意圖為例,假設原實時數據庫的工作目錄為D:\HS-1,要完成原實時數據庫在匕時刻的全量備份和k2k3…匕時刻的增量備份(均備份在本地文件系統(tǒng)),并依據備份文件進行數據恢復至k4時刻的數據庫文件,具體的實施方式如下:
[0050]步驟I A1時刻對原實時數據庫進行在線全量備份,生成全量備份,全量備份目錄設為D: \HS-l-fbak,備份的文件包括控制文件CTLl、緩存文件CAHl、索引文件INXl、數據文件D