基于集群架構(gòu)的高可靠性數(shù)據(jù)備份與恢復方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,主要涉及一種基于集群架構(gòu)的高可靠性數(shù)據(jù)備份與恢復方法。
【背景技術(shù)】
[0002]在信息化的今天,隨著數(shù)據(jù)量的幾何級增長,使得傳統(tǒng)單一的數(shù)據(jù)庫服務(wù)難以滿足企業(yè)級的應用需求,在此背景下,數(shù)據(jù)庫集群技術(shù)逐漸成為解決海量數(shù)據(jù)高效并發(fā)問題的有效途徑。簡單來說,數(shù)據(jù)庫集群是利用多臺數(shù)據(jù)庫服務(wù)器構(gòu)成的一個虛擬單一的數(shù)據(jù)庫邏輯映像,并向客戶端提供透明的數(shù)據(jù)服務(wù),每臺數(shù)據(jù)庫服務(wù)器即為一個集群節(jié)點。除了需要提供正常的服務(wù)功能外,集群還必須具有恢復系統(tǒng)遭遇故障的能力,以防止數(shù)據(jù)的災難性丟失或損壞,因此,高可靠性的數(shù)據(jù)備份與恢復成為衡量集群服務(wù)的重要指標。
[0003]集群是由多個數(shù)據(jù)庫服務(wù)器節(jié)點組成,因此每個獨立節(jié)點的高可用性、高可靠性數(shù)據(jù)的備份與恢復成為影響整個集群服務(wù)的關(guān)鍵。一般可以將單個節(jié)點的故障分為事務(wù)故障、系統(tǒng)故障和介質(zhì)故障三種。事務(wù)故障是由內(nèi)部邏輯錯誤、系統(tǒng)錯誤(如死鎖)等不可預知原因而導致的事務(wù)夭折或中止,當出現(xiàn)故障時,事務(wù)對數(shù)據(jù)庫的修改將被取消,即要求數(shù)據(jù)庫系統(tǒng)實現(xiàn)事務(wù)回滾。系統(tǒng)故障是由掉電、操作系統(tǒng)出錯等原因引起的,一般會導致系統(tǒng)崩潰、內(nèi)存內(nèi)容丟失,但磁盤內(nèi)容不受影響,當數(shù)據(jù)庫系統(tǒng)崩潰重啟后可進行系統(tǒng)自動恢復。介質(zhì)故障主要是由磁頭損壞或數(shù)據(jù)傳輸操作失敗等原因引起的,可導致部分或全部磁盤數(shù)據(jù)丟失或損壞。不難看出,介質(zhì)故障是三種故障中最為嚴重的,該故障甚至會導致數(shù)據(jù)災難性的毀滅,因此,如何實現(xiàn)介質(zhì)故障情況下高可靠性數(shù)據(jù)的備份與恢復顯得尤為重要。
[0004]目前,各大主流數(shù)據(jù)庫集群產(chǎn)品一般采用雙機熱備方案進行高可靠性數(shù)據(jù)的備份。這種方案的主要思路是實現(xiàn)集群中各個節(jié)點間的兩兩互備,當一個節(jié)點發(fā)生介質(zhì)故障時,可實現(xiàn)備用節(jié)點的自動平滑過渡對外提供相同的服務(wù),這在一定程度上解決了在不增加硬件設(shè)備前提下的單節(jié)點故障,保證了數(shù)據(jù)和業(yè)務(wù)的高可靠性。但是,當一個節(jié)點發(fā)生介質(zhì)故障時,該節(jié)點的數(shù)據(jù)將丟失或損壞且無法恢復,一旦該節(jié)點的備用節(jié)點也發(fā)生介質(zhì)故障時,會造成該節(jié)點所有數(shù)據(jù)的丟失,給整個應用系統(tǒng)帶來難以挽回的損失。
[0005]綜上所述,在節(jié)點發(fā)生介質(zhì)故障時,雙機熱備方案并不能利用其備份節(jié)點實現(xiàn)該節(jié)點數(shù)據(jù)的恢復,且不能解決備份節(jié)點同時發(fā)生介質(zhì)故障所帶來的數(shù)據(jù)丟失問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于集群架構(gòu)的高可靠性數(shù)據(jù)備份與恢復方法,解決雙機熱備方案不能利用其備份節(jié)點實現(xiàn)該節(jié)點數(shù)據(jù)的恢復且不能解決備份節(jié)點同時發(fā)生介質(zhì)故障所帶來的數(shù)據(jù)丟失問題。
[0007]本發(fā)明解決現(xiàn)有的技術(shù)問題是采取以下技術(shù)方案實現(xiàn)的:
[0008]—種基于集群架構(gòu)的高可靠性數(shù)據(jù)備份與恢復方法,包括在線數(shù)據(jù)備份與恢復方法和歷史數(shù)據(jù)備份與恢復方法,其中:
[0009]所述在線數(shù)據(jù)備份與恢復方法包括以下步驟:
[0010]步驟1:創(chuàng)建表空間并按時間劃分范圍分區(qū)表;
[0011]步驟2:在向數(shù)據(jù)庫導入數(shù)據(jù)的過程中實現(xiàn)一個備份功能;
[0012]步驟3:將備份信息寫入系統(tǒng)表;
[0013]步驟4:當天數(shù)據(jù)變成歷史數(shù)據(jù)時將其按歷史數(shù)據(jù)備份方式完成備份,刪除當天數(shù)據(jù)的備份文件,同時清空系統(tǒng)表中當天信息的相關(guān)記錄;
[0014]步驟5:當發(fā)生磁盤故障時,根據(jù)備份系統(tǒng)表里的相關(guān)信息,重新裝載數(shù)據(jù),實現(xiàn)在線數(shù)據(jù)的恢復;
[0015]所述歷史數(shù)據(jù)備份與恢復方法包括以下步驟:
[0016]步驟1:在某一時間點,添加當天數(shù)據(jù)子分區(qū)表,用以接收當天數(shù)據(jù);
[0017]步驟2:執(zhí)行鎖定操作,鎖定在線數(shù)據(jù)子分區(qū)表,將其變成歷史數(shù)據(jù);
[0018]步驟3:在鎖定在線數(shù)據(jù)子分區(qū)表的同時,通過操作系統(tǒng)拷貝命令,對當前節(jié)點的所有數(shù)據(jù)文件進行磁盤間互相復制備份;
[0019]步驟4:在鎖定操作完成后,將當前節(jié)點的所有歷史數(shù)據(jù)文件的備份,通過操作系統(tǒng)拷貝命令,復制到集群系統(tǒng)其它節(jié)點;
[0020]步驟5:當磁盤發(fā)生故障時,通過更換磁盤并復制已備份的歷史子分區(qū)表數(shù)據(jù)文件,實現(xiàn)歷史數(shù)據(jù)的恢復。
[0021]所述在線數(shù)據(jù)備份與恢復方法中的步驟1包括以下處理過程:在集群環(huán)境下創(chuàng)建包含若干數(shù)據(jù)文件的表空間,該表空間下的數(shù)據(jù)文件個數(shù)和每個節(jié)點的磁盤數(shù)相同且每個數(shù)據(jù)文件放在一個單獨的磁盤上,然后在該表空間下創(chuàng)建一個按天劃分的范圍分區(qū)表。
[0022]所述在線數(shù)據(jù)備份與恢復方法中的步驟2包括以下處理過程:(1)設(shè)置在線數(shù)據(jù)備份參數(shù);(2)設(shè)置在線數(shù)據(jù)備份路徑,不同的路徑對應不同的磁盤目錄;(3)設(shè)置備份所用內(nèi)存緩沖區(qū)大小;(4)建立連接并訪問數(shù)據(jù)庫集群;(5)創(chuàng)建表空間及數(shù)據(jù)文件,不同的數(shù)據(jù)文件對應不同的磁盤目錄;(6)添加在線子分區(qū)表;(7)利用數(shù)據(jù)庫導入工具向在線子分區(qū)表導入數(shù)據(jù);(8)采用循環(huán)方式將導入數(shù)據(jù)寫入指定的數(shù)據(jù)備份路徑。
[0023]所述在線數(shù)據(jù)備份與恢復方法中的步驟3的備份信息包括:表名、備份結(jié)束時間、備份路徑和導入語句信息。
[0024]所述在線數(shù)據(jù)備份與恢復方法中的步驟5包括以下處理過程:當發(fā)生磁盤故障時,修復磁盤,重新啟動數(shù)據(jù)庫并創(chuàng)建當天數(shù)據(jù)子分區(qū)表,利用數(shù)據(jù)庫導入工具,根據(jù)步驟3中的系統(tǒng)表信息,將對應的備份文件重新導入該分區(qū)表,從而實現(xiàn)在線數(shù)據(jù)的恢復。
[0025]所述歷史數(shù)據(jù)備份與恢復方法中的步驟1包括以下處理過程:創(chuàng)建包含若干數(shù)據(jù)文件的表空間,該表空間下的數(shù)據(jù)文件個數(shù)和每個節(jié)點的磁盤數(shù)相同且每個數(shù)據(jù)文件放在一個單獨的磁盤上,然后在該表空間下添加新的一天數(shù)據(jù)子分區(qū)表。
[0026]所述歷史數(shù)據(jù)備份與恢復方法中的步驟2包括以下處理過程:每天在特定的時間點將當天數(shù)據(jù)劃分為歷史數(shù)據(jù),通過鎖定操作將該部分在線數(shù)據(jù)子分區(qū)表進行鎖定,禁止其他事務(wù)對其進行操作。
[0027]所述歷史數(shù)據(jù)備份與恢復方法中的步驟3包括以下處理過程:創(chuàng)建備份腳本,在鎖定在線數(shù)據(jù)子分區(qū)表的同時,通過備份腳本將所有數(shù)據(jù)文件通過循環(huán)復制方式進行磁盤間互相備份。
[0028]所述歷史數(shù)據(jù)備份與恢復方法中的步驟4包括以下處理過程:創(chuàng)建備份腳本,在鎖定操作完成后,將當前節(jié)點的所有歷史數(shù)據(jù)文件的備份,通過備份腳本復制到集群系統(tǒng)其它節(jié)點。
[0029]所述歷史數(shù)據(jù)備份與恢復方法中的步驟5包括以下處理過程:當磁盤發(fā)生故障時更換磁盤,創(chuàng)建恢復腳本,通過恢復腳本復制已備份的歷史子分區(qū)表數(shù)據(jù)文件至當前節(jié)點,重新啟動數(shù)據(jù)庫即可實現(xiàn)歷史數(shù)據(jù)的恢復。
[0030]本發(fā)明的優(yōu)點和積極效果是:
[0031]1、本發(fā)明為基于集群架構(gòu)的單節(jié)點高可靠性數(shù)據(jù)備份與恢復方法,能夠在數(shù)據(jù)庫服務(wù)器運行狀態(tài)下對數(shù)據(jù)庫進行備份,實現(xiàn)了聯(lián)機備份,在備份時,能夠向用戶提供正常的服務(wù),實現(xiàn)了系統(tǒng)事務(wù)和備份的并行處理,有效地提高了系統(tǒng)可用性。當一個服務(wù)器節(jié)點發(fā)生介質(zhì)故障時,通過修復并啟動該節(jié)點,并利用已備份數(shù)據(jù)對該節(jié)點進行介質(zhì)恢復,從而增強整個集群數(shù)據(jù)庫系統(tǒng)的高可用性、高可靠性。
[0032]2、本發(fā)明結(jié)合了數(shù)據(jù)的時間特征,將數(shù)據(jù)劃分為在線數(shù)據(jù)和歷史數(shù)據(jù),根據(jù)數(shù)據(jù)的不同特征采用了不同的備份恢復方法,在線數(shù)據(jù)通過在數(shù)據(jù)庫導入數(shù)據(jù)過程中實現(xiàn)備份操作,而歷史數(shù)據(jù)由于數(shù)據(jù)不再進行變化,只通過操作系統(tǒng)拷貝命令的方式進行備份數(shù)據(jù)文件,有效地提高了數(shù)據(jù)備份的效率。
[0033]3、本發(fā)明在集群架構(gòu)下,不僅當前節(jié)點上通過磁盤間互相備份的方式實現(xiàn)數(shù)據(jù)冗余,而且還將當前節(jié)點的備份拷貝到集群其它節(jié)點上,避免了當前節(jié)點發(fā)生多個磁盤故障時備份文件丟失的問題,提高了單數(shù)據(jù)庫節(jié)點的高可用性、高可靠性。并有效地解決了一般集群雙機熱備方案中無法有效恢復節(jié)點數(shù)據(jù)、互備節(jié)點同時發(fā)生介質(zhì)故障時的數(shù)據(jù)丟失等問題。
【附圖說明】
[0034]圖1是本發(fā)明的系統(tǒng)架構(gòu)示意圖;
[0035]圖2是本發(fā)明的處理流程示意圖;
[0036]圖3是在線數(shù)據(jù)備份處理流程示意圖;
[0037]圖4是歷史數(shù)據(jù)備份處理流程示意圖。
【具體實施方式】
[0038]以下結(jié)合附圖對本發(fā)明實施例做進一步詳述:
[0039]—種基于集群架構(gòu)的高可靠性數(shù)據(jù)備份與恢復方法,是在如圖1所示的系統(tǒng)框架上實現(xiàn)的。該系統(tǒng)框架將數(shù)據(jù)劃分為在線數(shù)據(jù)和歷史數(shù)據(jù),針對兩種類型數(shù)據(jù)分別進行備份和恢復,如圖2所示,在線數(shù)據(jù)及歷史數(shù)據(jù)備份和恢復的處理思路如下:
[0040]在線數(shù)據(jù)的備份與恢復的處理思路是:由于在線數(shù)據(jù)一直處在一種不斷加載和更新的動態(tài)變化過程中,所以對在線數(shù)據(jù)文件進行復制是起不到備份效果的,針對在線數(shù)據(jù),可在導入數(shù)據(jù)過程中實現(xiàn)一個備份處理過程,該過程實現(xiàn)在數(shù)據(jù)導入在線子分區(qū)表的同時,將數(shù)據(jù)以循環(huán)方式備份到所有的磁盤上,每次備份一條數(shù)據(jù)到多個磁盤目錄,這樣每次備份數(shù)據(jù)都在多個磁盤上存在冗余,同時將這些備份信息記錄到系統(tǒng)表中;當在線數(shù)據(jù)所在磁盤發(fā)生介質(zhì)故障時,更換磁盤后重建在線數(shù)據(jù)子分區(qū)表,根據(jù)在線數(shù)據(jù)備份系統(tǒng)表中的記錄信息重新導入該子分區(qū)表數(shù)據(jù),即可實現(xiàn)在線數(shù)據(jù)的恢復。
[0041]歷史數(shù)據(jù)的備份與恢復的處理思路是:由于歷史數(shù)據(jù)具有不再更改的特點,所以可以通過操作系統(tǒng)拷貝命令對每個數(shù)據(jù)文件采用循環(huán)復制的方式進行備份;當發(fā)生磁盤故障時,通過更換磁盤并從備份的磁盤中復制歷史數(shù)據(jù)文件,重新啟動數(shù)據(jù)庫即可實現(xiàn)歷史數(shù)據(jù)的恢復。在節(jié)點發(fā)生介質(zhì)故障時,本發(fā)明能夠利用歷史數(shù)據(jù)和在線數(shù)據(jù)在其他磁盤上的備份,及時、可靠的對發(fā)生故障的節(jié)點進行數(shù)據(jù)恢復,從而保證集群中每個數(shù)據(jù)庫服務(wù)器節(jié)點的正常啟動與運行,避免了數(shù)據(jù)的丟失與損壞。
[0042]本發(fā)明有效地解決了一般集群雙機熱備方案中無法有效恢復節(jié)點數(shù)據(jù)、互備節(jié)點同時發(fā)生介質(zhì)故障時的數(shù)據(jù)丟失等問題,提高了單數(shù)據(jù)庫節(jié)點的高可用性、高可靠性,進而提高了整個集群系統(tǒng)的服務(wù)能力。
[0043]如圖3所示,本發(fā)明的在線數(shù)據(jù)備份與恢復方法包括以下步驟:
[0044]步驟1:創(chuàng)建表空間并按時間劃分范圍分區(qū)表。
[0045]本步驟包括以下處理過程:在集群環(huán)境下創(chuàng)建包含若干數(shù)據(jù)文件的表空間,該表空間下的數(shù)據(jù)文件個數(shù)和每個節(jié)點的磁盤數(shù)相同,且每個數(shù)據(jù)文件放在一個單獨的磁盤上,然后在該表空間下創(chuàng)建一個按天劃分的范圍分區(qū)表。