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