一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,數(shù)據(jù)庫備份是數(shù)據(jù)庫系統(tǒng)容災(zāi)的重要手段。數(shù)據(jù)備份分為聯(lián)機備份和脫機備份。聯(lián)機備份指在數(shù)據(jù)庫正常運行的情況下進行的備份;而脫機備份是指將數(shù)據(jù)庫正常關(guān)閉后進行的備份。由于信息化的發(fā)展,當(dāng)前很多數(shù)據(jù)庫應(yīng)用系統(tǒng)都處于每周7*24小時不間斷運行狀態(tài),對其備份只能采用聯(lián)機備份方式。
[0003]聯(lián)機備份最終都是將備份命令發(fā)送給數(shù)據(jù)庫管理系統(tǒng),由其進行具體的備份工作。數(shù)據(jù)庫管理系統(tǒng)在收到聯(lián)機備份命令后,首先對備份環(huán)境進行檢測,如是否重復(fù)生成備份文件或者增量備份,是否存在完全備份等;然后收集庫中的數(shù)據(jù)和日志;最后,有規(guī)律地將收集的信息進行備份,生成備份文件,用于故障后的恢復(fù)。
[0004]數(shù)據(jù)庫備份操作是一個會占用較多系統(tǒng)資源且較為耗時的操作,一般都推薦在應(yīng)用系統(tǒng)不繁忙的時候進行備份。如果在備份進行過程中,又有突發(fā)情況需要進行大量數(shù)據(jù)庫操作,可能因此希望中止備份。目前對于數(shù)據(jù)庫備份的中止操作都是通過在操作系統(tǒng)層強制kill進行備份操作的進程來實現(xiàn)的。由于執(zhí)行備份的進程常常還會啟動子進程一同完成備份工作,有時kill進程并不能中止所有備份相關(guān)的進程;另外,由于備份進程是被強制退出而非正常結(jié)束,已經(jīng)生成的備份文件無法被清理,甚至某些情況下會造成不可預(yù)計的后果,如數(shù)據(jù)損壞等,另一方面,若在備份過程中遇到不能預(yù)期(數(shù)據(jù)庫管理系統(tǒng)程序不能進行處理)的錯誤,可能導(dǎo)致整個數(shù)據(jù)庫管理系統(tǒng)運行故障,不能繼續(xù)對外提供正常服務(wù)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng),用于解決在備份過程中遭遇未預(yù)期的錯誤使備份過程失敗,從而導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常的問題。
[0006]本發(fā)明實施例采用以下技術(shù)方案:
[0007]本發(fā)明提供了一種數(shù)據(jù)庫聯(lián)機備份方法,該方法包括:
[0008]備份主進程發(fā)送備份階段命令給備份子進程,所述備份階段命令用于命令所述備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作;
[0009]判斷備份主進程是否讀取到備份子進程返回的執(zhí)行操作完成信息;
[0010]若是,確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。
[0011]優(yōu)選的,所述確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi)之后,還包括,確定數(shù)據(jù)庫聯(lián)機備份已完成,則結(jié)束所述備份子進程。
[0012]優(yōu)選的,所述判斷備份主進程是否讀取備份子進程返回的執(zhí)行操作完成信息,具體為,周期性判斷備份主進程是否讀取用戶干預(yù)和備份子進程返回的執(zhí)行操作完成信息。
[0013]優(yōu)選的,所述備份主進程發(fā)送備份階段命令給備份子進程之后,還包括,確定備份主進程檢測讀取到備份子進程的錯誤報告,則清除已經(jīng)備份數(shù)據(jù),結(jié)束備份子進程,并返回子進程故障信息。
[0014]優(yōu)選的,所述備份主進程發(fā)送備份階段命令給備份子進程之后,還包括:
[0015]解析備份主進程讀取到的用戶干預(yù);
[0016]若所述用戶干預(yù)取消或所述用戶干預(yù)會話中斷,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。
[0017]本發(fā)明還提供了一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng),該系統(tǒng)包括:
[0018]發(fā)送命令單元,用于備份主進程發(fā)送備份階段命令給備份子進程,所述備份階段命令用于命令所述備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作;
[0019]第一判斷單元,用于判斷備份主進程是否讀取到備份子進程返回的執(zhí)行操作完成信息;
[0020]等待單元,用于確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。
[0021]優(yōu)選的,所述等待單元,具體用于:若是,確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),若確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程,若確定數(shù)據(jù)庫聯(lián)機備份已完成,則結(jié)束所述備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。
[0022]優(yōu)選的,所述第一判斷單元,具體用于:周期性判斷備份主進程是否讀取用戶干預(yù)和備份子進程返回的執(zhí)行操作完成信息。
[0023]優(yōu)選的,還包括錯誤報告單元,用于確定備份主進程檢測讀取到備份子進程的錯誤報告,則清除已經(jīng)備份數(shù)據(jù),結(jié)束備份子進程,并返回子進程故障信息。
[0024]優(yōu)選的,還包括:
[0025]用戶干預(yù)解析單元,用于解析備份主進程讀取到的用戶干預(yù);
[0026]用戶干預(yù)執(zhí)行單元,用于若所述用戶干預(yù)取消或所述用戶干預(yù)會話中斷,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。
[0027]優(yōu)選的,還包括子進程讀取命令單元,用于所述確定備份子進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份階段命令,則清空已備份數(shù)據(jù)并銷毀備份子進程。
[0028]與現(xiàn)有技術(shù)相比,本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng),具有以下有益效果:
[0029]將整個執(zhí)行數(shù)據(jù)庫聯(lián)機備份過程分成若干備份階段命令,將通過主進程推到子進程進行每步備份,主進程根據(jù)備份邏輯主動向子進程發(fā)送命令,子進程被動接收并執(zhí)行,便于主進程控制備份子進程的執(zhí)行;本發(fā)明將備份過程中階段命令的設(shè)置和具體執(zhí)行分離,將具體執(zhí)行放到獨立的備份子進程中,避免因具體執(zhí)行過程異常,導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。本發(fā)明允許在備份的過程中檢測用戶干預(yù),接收用戶的干預(yù)指令,將完整備份過程分解成多個階段,便于在每個階段間隔進行是否有用戶干預(yù)操作的檢查;備份主進程在向備份子進程發(fā)送執(zhí)行命令后,能夠繼續(xù)周期性監(jiān)測上層用戶的干預(yù)操作,便于隨時執(zhí)行用戶干預(yù)操作;通過備份子進程與備份主進程之間交互的測試監(jiān)督,可以確保即使在備份過程中遭遇未預(yù)期的錯誤,備份的失敗也不會導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
【附圖說明】
[0030]圖1是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法的第一個實施例的方法流程圖。
[0031]圖2是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法的第二個實施例的方法流程圖一。
[0032]圖3是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法的第二個實施例的方法流程圖二。
[0033]圖4是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法的第二個實施例的方法流程圖三。
[0034]圖5是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法的第三個實施例的方法流程圖。
[0035]圖6是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)的第一個實施例的結(jié)構(gòu)框圖。
[0036]圖7是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)的第二個實施例的結(jié)構(gòu)框圖。
[0037]圖8是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)的第三個實施例的結(jié)構(gòu)框圖。
[0038]圖9是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng)實施例中實例方法流程圖
O
[0039]圖10是本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng)實施例中實例方法流程圖
--O
【具體實施方式】
[0040]為使本發(fā)明解決的技術(shù)問題、采用的技術(shù)方案和達到的技術(shù)效果更加清楚,下面將結(jié)合附圖對本發(fā)明實施例的技術(shù)方案作進一步的詳細(xì)描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0041]圖1示出根據(jù)本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份方法第一個實施例的方法流程圖。本實施例的一種數(shù)據(jù)庫聯(lián)機備份方法主要由數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn),該方法包括以下步驟:
[0042]步驟11:備份主進程發(fā)送備份階段命令給備份子進程,備份階段命令用于命令備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作。
[0043]具體的,備份主進程發(fā)送備份階段命令給備份子進程,子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作。其中,將數(shù)據(jù)庫聯(lián)機備份中各備份階段操作都分別對應(yīng)一個備份階段命令??梢詫?shù)據(jù)庫進程作為備份主進程負(fù)責(zé)各階段命令的發(fā)出;備份階段命令用于命令備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作。一個完整的備份過程由一個備份主進程和一個備份子進程協(xié)作完成,備份主進程是發(fā)起備份階段命令的進程,即數(shù)據(jù)庫系統(tǒng)進程;備份子進程是接收備份階段命令并執(zhí)行具體階段任務(wù)的進程。備份開始時,備份主進程創(chuàng)建備份子進程。
[0044]其中,備份主進程和備份子進程之間通過進程通信方式數(shù)據(jù)交互,可以為命名管道(PIPE)等。
[0045]例如,一般情況下,一個完整的數(shù)據(jù)庫備份過程一般包括以下幾個備份階段操作:
[0046]I)備份命令解析,解析備份命令中攜帶的參數(shù)信息,如備份目標(biāo)輸出路徑、備份是否加密壓縮、是否為增量備份等;
[00