專利名稱:數據庫備份系統及其備份方法和從數據庫服務器的制作方法
技術領域:
本發明涉及數據庫技術,尤其涉及一種數據庫備份系統及其備份方法和從數據庫服務器。
背景技術:
隨著辦公自動化和電子商務的飛速發展,企業對信息系統的依賴性越來越高,數據庫作為信息系統的核心擔當著重要的角色。尤其在一些對數據可靠性要求很高的行業如銀行、證券、電信等,如果發生意外停機或數據丟失其損失會十分慘重。因此,有必要對數據庫進行備份。這樣,在數據庫出現故障遭到損壞后,可以通過備份的數據庫進行恢復。目前,業界對于大數據量的MySQL數據庫的備份通常采用xtrabackup熱備方式來解決;采用這種方式進行備份的數據庫備份系統架構,如圖I所示,包括主數據庫服務器、 從數據庫服務器、多個存儲服務器。主數據庫服務器也可稱為master數據庫服務器,從數據庫服務器也可稱為slave數據庫服務器。主數據庫服務器用于對數據庫進行維護,比如增加、修改、刪除數據庫中的元素,如數據表、數據表中的數據等。從數據庫服務器用于使用流模式將主數據庫服務器中的數據庫備份到存儲服務器中。通常,主數據庫服務器可以是多個,每個主數據庫服務器中的數據庫也可以是多個,例如,多個主數據庫服務器中的數據庫共有100個,從數據庫服務器需要將這100個數據庫分別備份到10個存儲服務器中;平均每個存儲服務器中存儲10個數據庫備份。具體地,在從數據庫服務器中存儲了備份配置表,備份配置表中對應每個數據庫或數據庫實例記錄了用于存儲該數據庫備份的存儲服務器的地址或標識;從數據庫服務器根據該備份配置表將100個數據庫備份分別存儲到各存儲服務器中。然而,本發明的發明人發現,隨著時間的推移,基于不同業務的數據庫,或者同一業務的不同數據庫的數據量增長并不均勻;有的數據庫數據量增長非常迅猛,有的數據庫的數據量增長緩慢;或者,某個時期段中,某個數據庫的數據量增長很大,其它數據庫的數據量增長很小;在另一個時期段中,數據庫的數據量增長又發生了改變;這樣,導致各存儲服務器中的存儲量與流量不均衡可能會出現有的存儲服務器的存儲量已經超過90%、接近100%,有的存儲服務器的存儲量才達到20% ;為高效利用存儲服務器的存儲空間,維護人員則不得不通過手動調整、配置備份配置表的方式來使得各存儲服務器的存儲量趨于均勻。由此可以看出,由于現有技術的數據庫備份方法中在各存儲服務器中進行分散式存儲備份時,存儲量與流量不均衡,導致數據庫備份過程中存儲空間利用效率低、浪費存儲空間;因此,現有技術存在高效利用備份存儲空間的問題。
發明內容
本發明的實施例提供了一種數據庫備份系統及其備份方法和從數據庫服務器,用以在數據庫備份過程中更為高效地利用存儲空間。根據本發明的一個方面,提供了一種數據庫備份系統,包括主數據庫服務器,用于維護數據庫;從數據庫服務器,用于對所述主數據庫服務器中的數據庫進行備份,得到備份結果后進行發送;·
存儲節點集群,其為基于分布式文件系統HDFS技術的節點集群,包括存儲控制節點和至少一個存儲節點,所述存儲控制節點用于接收所述從數據庫服務器發送的備份結果,并負責管理各存儲節點對所述備份結果的分布式存儲。其中,所述從數據庫服務器具體包括備份模塊,用于對主數據庫服務器中的數據庫進行備份得到備份結果;發送模塊,用于將所述備份模塊得到的備份結果發送到所述存儲節點集群。所述備份模塊具體包括備份文件集單元,用于將所述主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果; 或者,所述備份模塊具體包括流模式備份單元,用于對所述主數據庫服務器中的數據庫進行流模式備份,并將備份的數據進行輸出;壓縮單元,用于將所述流模式備份單元輸出的備份的數據進行壓縮,并將最終得到的壓縮文件作為所述備份結果。根據本發明的另一個方面,還提供了一種數據庫備份方法,包括從數據庫服務器對主數據庫服務器中的數據庫進行備份得到備份結果,將所述備份結果發送到基于分布式文件系統HDFS技術的存儲節點集群;所述存儲節點集群中的存儲控制節點在接收所述從數據庫服務器發送的備份結果后,負責管理所述存儲節點集群中的各存儲節點對所述備份結果的分布式存儲。較佳地,所述從數據庫服務器對主數據庫服務器中的數據庫進行備份得到備份結果具體包括所述從數據庫服務器對主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果;或者,所述從數據庫服務器對主數據庫服務器中的數據庫進行流模式備份后再進行壓縮,將得到的壓縮文件作為所述備份結果。較佳地,所述從數據庫服務器對主數據庫服務器中的數據庫進行備份具體包括所述從數據庫服務器對所述數據庫中的數據,以及所述數據庫的配置文件進行備份。進一步,所述存儲控制節點在接收所述從數據庫服務器發送的備份結果后,還包括所述存儲控制節點將所述備份結果進行復制,得到至少一份所述備份結果的副本;并且還負責管理所述存儲節點集群中的各存儲節點對所述備份結果的副本的分布式存儲。根據本發明的另一個方面,還提供了一種從數據庫服務器,包括備份模塊,用于對主數據庫服務器中的數據庫進行備份得到備份結果;發送模塊,用于將所述備份模塊得到的備份結果發送到基于分布式文件系統HDFS技術的存儲節點集群;所述存儲節點集群中的存儲控制節點在接收所述從數據庫服務器發送的備份結果后,負責管理所述存儲節點集群中的各存儲節點對所述備份結果的分布式存儲。
其中,所述備份模塊具體包括備份文件集單元,用于將所述主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果;或者,所述備份模塊具體包括流模式備份單元,用于對所述主數據庫服務器中的數據庫進行流模式備份,并將備份的數據進行輸出;壓縮單元,用于將所述流模式備份單元輸出的備份的數據進行壓縮,并將最終得到的壓縮文件作為所述備份結果。進一步,所述服務器還包括備份管理模塊,用于接收用戶輸入的設置參數,根據設置參數控制所述備份模塊;備份進度展示模塊,用于從所述備份模塊獲取進度的相關參數,根據所述相關參數顯示出所述備份模塊中的備份進度。本發明實施例的從數據庫服務器由于在對主數據庫服務器中數據庫進行備份后,將備份結果發送到基于HDFS技術的存儲節點集群進行備份文件的存儲,而基于HDFS技術的存儲節點集群中的存儲控制節點可以根據存儲節點集群中的各存儲節點的存儲空間進行存儲的統籌安排和調節,以分布式存儲的方式將備份結果較為均勻地存儲到各存儲節點,從而避免出現有的存儲節點的存儲空間緊張,有的存儲節點的存儲空間得不到利用的現象,避免浪費存儲節點的存儲空間,提高數據庫備份過程中存儲空間的利用率,解決了分散式備份、存儲過程中存儲空間利用效率不高、浪費存儲空間的問題。進一步,由于在數據庫備份過程中,還對數據庫的配置文件也進行了備份,從而在進行數據庫進行恢復還原時,不用重新設置數據庫參數,直接用之前備份的配置文件進行數據庫參數的設置。進一步,由于采用流模式備份、壓縮的方案,得到的備份結果為壓縮文件,大大節約了用于存儲數據庫的備份文件的存儲空間。進一步,存儲節點集群中的存儲控制節點將備份結果進行復制得到的副本也存儲到存儲節點集群,從而提高了備份的可靠性。
圖I為現有技術的數據庫備份系統示意圖;圖2為本發明實施例的數據庫備份系統示意圖;圖3為本發明實施例的數據庫備份方法流程圖4為本發明實施例的從數據庫服務器的內部結構框圖。
具體實施例方式為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉出優選實施例,對本發明進一步詳細說明。然而,需要說明的是,說明書中列出的許多細節僅僅是為了使讀者對本發明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細節也可以實現本發明的這些方面。本申請使用的“模塊”、“系統”等術語旨在包括與計算機相關的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執行中的軟件。例如,模塊可以是,但并不僅限于處理器上運行的進程、處理器、對象、可執行程序、執行的線程、程序和/或計算機。舉例來說,計算設備上運行的應用程序和此計算設備都可以是模塊。一個或多個模塊可以位于執行中的一個進程和/或線程內,一個模塊也可以位于一臺計算機上和/或分布于兩臺或更多臺計算機之間。
下面結合附圖詳細說明本發明實施例的技術方案。本發明實施例提供的數據庫備份系統,如圖2所示,包括主數據庫服務器201、從數據庫服務器202,以及存儲節點集群203。其中,主數據庫服務器201用于維護數據庫;例如,主數據庫服務器201中可以對數據庫進行編輯、修改、增加、刪除數據庫元素,包括修改、增加、刪除數據表,或者數據表中的字段,或者數據表中的數據。主數據庫服務器201中維護的數據庫可以是多個。從數據庫服務器202用于對主數據庫服務器201中的數據庫進行備份,得到備份結果,將備份結果發送到存儲節點集群203進行存儲,實現對主數據庫服務器201中的數據庫的備份。具體地,從數據庫服務器202可以是對主數據庫服務器201中的數據庫進行備份后,得到備份文件集;將備份文件集作為備份結果發送到存儲節點集群203進行存儲;從數據庫服務器202對主數據庫服務器201中的數據庫進行備份后得到的備份文件集中可以包括多個數據庫的文件,比如數據表、索引、視圖、數據庫的配置文件等,而且還可包括這些文件的路徑結構。這樣,備份后得到的備份文件集具體可以文件夾的形式進行保存,在該文件夾中保存了各級子文件夾,以及各級子文件夾中的文件。具體地,從數據庫服務器202可以利用innobackupex腳本對主數據庫服務器201中的數據庫進行流模式備份;由于利用innobackupex腳本進行流模式備份的技術為本領域技術人員所熟知,此處不再詳細介紹。或者,從數據庫服務器202對主數據庫服務器201中的數據庫進行備份、壓縮后,得到壓縮文件,將壓縮文件作為備份結果發送到存儲節點集群203進行備份存儲。具體地,從數據庫服務器202對主數據庫服務器中的數據庫進行流模式備份后再進行壓縮,將得到的壓縮文件作為所述備份結果發送到存儲節點集群203進行備份存儲。存儲節點集群203中包括存儲控制節點211和至少一個存儲節點212 ;存儲節點集群203為基于HDFS (Hadoop Distributed File System,分布式文件系統)的分布式結構。這里簡單介紹一下HDFS :HDFS是一個主從結構的體系,一個HDFS集群是由一個管理文件的命名空間和調節客戶端訪問文件的主服務器和多個數據節點組成,主服務器管理各數據節點的存儲。HDFS的內部機制是主服務器將一個文件分割成一個或多個的塊,這些塊存儲在一組數據節點中,從而可以合理利用、調配各數據節點的存儲空間。HDFS內部的所有通信都基于標準的TCP/IP協議。從數據庫服務器202通過HDFS技術,將備份文件集,或者壓縮文件存儲到存儲節點集群203中實現數據庫的備份。對于從數據庫服務器202而言,存儲節點集群203就像一個傳統的分級文件系統,并不需要了解存儲節點集群203中各存儲節點212的存儲情況。從數據庫服務器202可以通過廣域網或局域網來訪問存儲節點集群203,進行文件的存儲與讀取。在存儲節點集群203中,存儲控制節點211用以負責管理文件系統名稱空間和控制外部客戶機的訪問。存儲控制節點211負責管理各存儲節點212的存儲存儲控制節點211在接收到從數據庫服務器202發送的備份結果后,負責管理各存儲節點對所述備份結果的分布式存儲存儲控制節點211決定將備份結果具體存儲到存儲節點集群203中的哪個存儲節點212或者哪組存儲節點212,以合理利用、調配各存儲節點212的存儲空間。存儲控制節點211通過HDFS技術可以避免出現有的存儲節點212的存儲空間緊 張,有的存儲節點212的存儲空間得不到利用的現象,使得各存儲節點212存儲量與流量較為均勻,在數據庫備份的過程中更為高效地利用存儲空間,從而解決了分散式備份、存儲過程中存儲空間利用效率不高、浪費存儲空間的問題。本發明實施例提供的一種具體的數據庫備份方法流程圖,如圖3所示,包括如下步驟S301 :從數據庫服務器202對主數據庫服務器中的數據庫進行流模式備份。具體地,從數據庫服務器202以流模式的方式從主數據庫服務器獲取數據庫中的數據,進一步還可以獲取數據庫的配置文件;從數據庫服務器202將獲取的數據和配置文件進行流模式的備份。該步驟可以通過執行腳本文件中的相關代碼實現,通過可以通過執行innobackupex腳本中的相關代碼實現。對數據庫的配置文件的備份,有利于進行數據庫的還原。例如,innobackupex腳本中實現流模式備份的代碼如下innobackupex—tmpdir=/tmp—defaults-fiIe=/dataI/mysqI3697/my3697.cnf. bakuse—slave-info —no-timestamp—parallel=l —throttle=800 —socket=/tmp/mysql3697. sock —user=mysqlha—pass=123456—stream=tar. /2>>/datal/mysql3697/bak. logS302 :從數據庫服務器202在流模式備份后進行壓縮操作。從數據庫服務器202以流模式的方式備份主數據庫服務器獲取數據庫中的數據和配置文件后還進行壓縮操作,最終得到壓縮文件作為備份結果。壓縮操作也可通過腳本文件中的代碼實現innobackupex—tmpdir=/tmp—defaults-file=/datal/mysql3697/my3697. cnf.bakuse—slave-info —no-timestamp—paralIel=I —throttle=800 —socket=/tmp/mysql3697. sock —user=mysqlha—pass=123456—stream=tar. /2>>/datal/mysql3697/bak. log|pbzip2_p4|sudo-uhadoop/usr/local/hadoop/bin/hadoop fs -put-hdfs: //marduk21 :9000/dbbackup/mysql3697_' date+% m% d_% H% M% S'. tar. bz2S303 :從數據庫服務器202將備份結果發送到存儲節點集群。存儲節點集群中的存儲控制節點在接收到從數據庫服務器202發送的備份結果后,負責管理各存儲節點對所述備份結果的分布式存儲。進一步,存儲節點集群中的存儲控制節點還可在接收到從數據庫服務器202發送的備份結果后,將所述備份結果進行復制,得到至少一份所述備份結果的副本;并且還負責管理所述存儲節點集群中的各存儲節點對所述備份結果的副本的分布式存儲。具體地,存儲控制節點根據預先設置的備份總數對該備份結果進行復制,得到備份結果的副本。例如,設置的備份總數為3,則存儲控制節點對備份結果進行復制,得到該備份結果的2個副本;存儲控制節點負責管理各存儲節點對所述備份結果及其副本的分布式存儲,即存儲控制節點將備份結果以及副本以分布式方式存儲到各存儲節點。在將備份結果存儲到存儲節點集群后,如果主數據庫服務器出現了故障,導致其中的數據庫無法正常運行,其中的數據無法訪問、獲取,或者丟失,那么,可以通過服務器 或客戶端訪問存儲節點集群的存儲控制節點,從存儲控制節點下載備份結果;而存儲控制節點由于管理各存儲節點,可以將分散存儲于各存儲節點上的備份結果匯總后返回給服務器或客戶端;服務器或客戶端在接收到備份結果后進行解壓,從而實現數據庫的恢復。而上述步驟S301中,由于對數據庫的配置文件也進行了備份,那么,在進行數據庫的恢復過程中,可以根據以前備份的配置文件對新恢復的數據庫進行參數配置,更方便維護人員對數據庫的恢復。本發明實施例提供的一種從數據庫服務器,其內部結構如圖4所示,包括備份模塊401和發送模塊402。其中,備份模塊401用于對主數據庫服務器中的數據庫進行備份得到備份結果;發送模塊402用于將備份模塊401得到的備份結果發送到基于分布式文件系統HDFS技術的存儲節點集群;所述存儲節點集群中的存儲控制節點在接收所述從數據庫服務器發送的備份結果后,負責管理所述存儲節點集群中的各存儲節點對所述備份結果的分布式存儲。其中,備份模塊401具體可以包括備份文件集單元(圖中未標),用于將所述主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果。或者,所述備份模塊具體可以包括流模式備份單元411、壓縮單元412。流模式備份單元411用于對所述主數據庫服務器中的數據庫進行流模式備份,并將備份的數據輸出到壓縮單元412 ;壓縮單元412用于將流模式備份單元411輸出的備份的數據進行壓縮,并輸出最終得到的壓縮文件作為所述備份結果進行輸出。進一步,從數據庫服務器中還可包括備份管理模塊403和備份進度展示模塊404。備份管理模塊403用于接收用戶輸入的設置參數,根據設置參數控制所述備份模塊;例如,輸入的設置參數可以包括備份方式、時間、模式、周期、目標、保留周期,并且是
否支持年/季/月/周備份等參數。備份進度展示模塊404用于從備份模塊403獲取進度的相關參數,根據所述相關參數顯示出所述備份模塊中的備份進度。例如,備份進度展示模塊404從備份模塊403獲取流模式備份過程中,已備份的文件占所有需要備份的文件的百分比;根據該獲取的參數以進度條的方式顯示備份進度。
本發明實施例的從數據庫服務器由于在對主數據庫服務器中數據庫進行備份后,將備份結果發送到基于HDFS技術的存儲節點集群進行備份文件的存儲,而基于HDFS技術的存儲節點集群中的存儲控制節點可以根據存儲節點集群中的各存儲節點的存儲空間進行存儲的統籌安排和調節,以分布式存儲的方式將備份結果較為均勻地存儲到各存儲節點,從而避免出現有的存儲節點的存儲空間緊張,有的存儲節點的存儲空間得不到利用的現象,避免浪費存儲節點的存儲空間,提高數據庫備份過程中存儲空間的利用率,解決了分散式備份、存儲過程中存儲空間利用效率不高、浪費存儲空間的問題。進一步,由于在數據庫備份過程中,還對數據庫的配置文件也進行了備份,從而在進行數據庫進行恢復還原時,不用重新設置數據庫參數,直接用之前備份的配置文件進行數據庫參數的設置。進一步,由于采用流模式備份、壓縮的方案,得到的備份結果為壓縮文件,大大節約了用于存儲數據庫的備份文件的存儲空間。
進一步,存儲節點集群中的存儲控制節點將備份結果進行復制得到的副本也存儲到存儲節點集群,從而提高了備份的可靠性。本領域普通技術人員可以理解實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀取存儲介質中,如R0M/RAM、磁碟、光盤等。以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
權利要求
1.一種數據庫備份系統,包括 主數據庫服務器,用于維護數據庫; 從數據庫服務器,用于對所述主數據庫服務器中的數據庫進行備份,得到備份結果后進行發送; 存儲節點集群,其為基于分布式文件系統HDFS技術的節點集群,包括存儲控制節點和至少一個存儲節點,所述存儲控制節點用于接收所述從數據庫服務器發送的備份結果,并負責管理各存儲節點對所述備份結果的分布式存儲。
2.如權利要求I所述的系統,其特征在于,所述從數據庫服務器具體包括 備份模塊,用于對主數據庫服務器中的數據庫進行備份得到備份結果; 發送模塊,用于將所述備份模塊得到的備份結果發送到所述存儲節點集群。
3.如權利要求2所述的系統,其特征在于,所述備份模塊具體包括 備份文件集單元,用于將所述主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果; 或者,所述備份模塊具體包括 流模式備份單元,用于對所述主數據庫服務器中的數據庫進行流模式備份,并將備份的數據進行輸出; 壓縮單元,用于將所述流模式備份單元輸出的備份的數據進行壓縮,并將最終得到的壓縮文件作為所述備份結果。
4.一種數據庫備份方法,包括 從數據庫服務器對主數據庫服務器中的數據庫進行備份得到備份結果,將所述備份結果發送到基于分布式文件系統HDFS技術的存儲節點集群; 所述存儲節點集群中的存儲控制節點在接收所述從數據庫服務器發送的備份結果后,負責管理所述存儲節點集群中的各存儲節點對所述備份結果的分布式存儲。
5.如權利要求4所述的方法,其特征在于,所述從數據庫服務器對主數據庫服務器中的數據庫進行備份得到備份結果具體包括 所述從數據庫服務器對主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果;或者, 所述從數據庫服務器對主數據庫服務器中的數據庫進行流模式備份后再進行壓縮,將得到的壓縮文件作為所述備份結果。
6.如權利要求5所述的方法,其特征在于,所述從數據庫服務器對主數據庫服務器中的數據庫進行備份具體包括 所述從數據庫服務器對所述數據庫中的數據,以及所述數據庫的配置文件進行備份。
7.如權利要求6所述的方法,其特征在于,所述存儲控制節點在接收所述從數據庫服務器發送的備份結果后,還包括 所述存儲控制節點將所述備份結果進行復制,得到至少一份所述備份結果的副本;并且還負責管理各存儲節點對所述備份結果的副本的分布式存儲。
8.一種從數據庫服務器,包括 備份模塊,用于對主數據庫服務器中的數據庫進行備份得到備份結果; 發送模塊,用于將所述備份模塊得到的備份結果發送到基于分布式文件系統HDFS技術的存儲節點集群;所述存儲節點集群中的存儲控制節點在接收所述從數據庫服務器發送的備份結果后,負責管理所述存儲節點集群中的各存儲節點對所述備份結果的分布式存儲。
9.如權利要求8所述的服務器,其特征在于,所述備份模塊具體包括 備份文件集單元,用于將所述主數據庫服務器中的數據庫進行備份后得到的備份文件集作為所述備份結果; 或者,所述備份模塊具體包括流模式備份單元,用于對所述主數據庫服務器中的數據庫進行流模式備份,并將備份的數據進行輸出; 壓縮單元,用于將所述流模式備份單元輸出的備份的數據進行壓縮,并將最終得到的壓縮文件作為所述備份結果。
10.如權利要求9所述的服務器,其特征在于,還包括 備份管理模塊,用于接收用戶輸入的設置參數,根據設置參數控制所述備份模塊; 備份進度展示模塊,用于從所述備份模塊獲取進度的相關參數,根據所述相關參數顯示出所述備份模塊中的備份進度。
全文摘要
本發明公開了一種數據庫備份系統及其備份方法和從數據庫服務器,所述系統包括主數據庫服務器,用于維護數據庫;從數據庫服務器,用于對所述數據庫進行備份,得到備份結果后進行發送;存儲節點集群,其基于HDFS技術,包括存儲控制節點和至少一個存儲節點,存儲控制節點用于接收從數據庫服務器發送的備份結果,并負責管理各存儲節點對備份結果的分布式存儲。由于將備份結果發送到基于HDFS技術的存儲節點集群進行備份文件的存儲,存儲控制節點可以根據各存儲節點的存儲空間進行存儲的統籌安排和調節,以分布式存儲的方式將備份結果較為均勻地存儲到各存儲節點,從而可以提高數據庫備份過程中存儲空間的利用率。
文檔編號G06F17/30GK102880531SQ201210366439
公開日2013年1月16日 申請日期2012年9月27日 優先權日2012年9月27日
發明者成江東, 童劍, 邱春武, 楊海朝, 陶會祥 申請人:新浪網技術(中國)有限公司