進程發(fā)送CMD_CHECK命令;同時調(diào)用backup_wait_and_check(),若返回成功,則繼續(xù)下一個階段命令,否則跳到CMD_C0MPLETE,結(jié)束備份過程;
[0140]5)發(fā)送CMD_INIT,通過管道向子進程發(fā)送CMD_INIT命令;同時調(diào)用backup_wait_and_check(),若返回成功,則繼續(xù)下一個階段命令,否則跳到CMD_C0MPLETE,結(jié)束備份過程;
[0141]6)發(fā)送CMD_DBF,通過管道向子進程發(fā)送CMD_DBF命令;同時調(diào)用backup_wai t_and_check(),若返回成功,則繼續(xù)下一個階段命令,否則跳到CMD_C0MPLETE,結(jié)束備份過程;
[0142]7)發(fā)送CMD_L0G,通關(guān)管道向子進程發(fā)送CMD_L0G命令;同時調(diào)用backup_wait_and_check(),若返回成功,則繼續(xù)下一個階段命令,否則跳到CMD_C0MPLETE,結(jié)束備份過程;
[0143]8)發(fā)送CMD_META,通過管道向子進程發(fā)送CMD_META命令;同時調(diào)用backup_wait_and_check(),若返回成功,則繼續(xù)下一個階段命令,否則跳到CMD_C0MPLETE,結(jié)束備份過程;
[0144]9)發(fā)送CMD_C0MPLETE,通過管道向向子進程發(fā)送CMD_C0MPLETE命令,并等待返回后,繼續(xù)下一個階段;
[0145]10)銷毀子進程,備份操作結(jié)束。
[0146]綜上,本實施例在備份執(zhí)行過程中,用戶輸入中斷備份的命令或者退出用戶會話等用戶干擾,備份過程可停止且已經(jīng)生成的備份文件或中間數(shù)據(jù)等信息能被清除,避免因具體執(zhí)行過程異常,導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
[0147]圖8示出根據(jù)本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)第三個實施例的結(jié)構(gòu)框圖。
[0148]實施例的方法與一種數(shù)據(jù)庫聯(lián)機備份方法第一個實施例和一種數(shù)據(jù)庫聯(lián)機備份方法第二個實施例的不同在于,還包括與發(fā)送命令單元61連接的子進程讀取命令單元64,本實施例中,包括發(fā)送命令單元61、第一判斷單元62、等待單元63以及子進程讀取命令單元64ο
[0149]發(fā)送命令單元61:備份主進程發(fā)送備份階段命令給備份子進程,備份階段命令用于命令備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作。該步驟的執(zhí)行過程與一種數(shù)據(jù)庫聯(lián)機備份方法第二個實施例步驟21相同,在此不再贅述。
[0150]第一判斷單元62:周期性判斷備份主進程是否讀取到用戶干預(yù)和備份子進程返回的執(zhí)行操作完成信息。該單元的執(zhí)行過程與一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)第二個實施例第一判斷單元52相同,在此不再贅述。
[0151]等待單元63:若是,確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。該單元的執(zhí)行過程與一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng)第二個實施例等待單元53相同,在此不再贅述。
[0152]子進程讀取命令單元64,用于確定備份子進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份階段命令,則清空已備份數(shù)據(jù)并銷毀備份子進程。
[0153]其中,子進程讀取命令單元64與發(fā)送命令單元61的輸出端連接,可以通過備份子進程或備份主進程來實現(xiàn),并不做限定。若通過備份子進程來實現(xiàn)則具體通過備份子進程周期性測試讀取備份主進程發(fā)送的備份階段命令,若備份子進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份階段命令,則認(rèn)定此時備份主進程出現(xiàn)故障,清空已備份數(shù)據(jù)并銷毀備份子進程,可以防止主進程卡死使或者真正故障時,執(zhí)行無效的備份。
[0154]綜上所述,本發(fā)明的一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng),將數(shù)據(jù)庫聯(lián)機備份過程中備份階段命令的發(fā)送和對應(yīng)備份階段操作的執(zhí)行分離,將具體執(zhí)行放到獨立的備份子進程中,避免因具體執(zhí)行過程異常,導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。數(shù)據(jù)庫聯(lián)機備份執(zhí)行過程中如遭遇異常(如已經(jīng)生成的備份文件備刪除或備份文件寫磁盤異常等),則數(shù)據(jù)庫聯(lián)機備份過程停止且已經(jīng)生成的其他備份文件或中間數(shù)據(jù)等信息被清除,數(shù)據(jù)庫系統(tǒng)仍能正常運行。
[0155]上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾或改變。因此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【主權(quán)項】
1.一種數(shù)據(jù)庫聯(lián)機備份方法,其特征在于,包括: 備份主進程發(fā)送備份階段命令給備份子進程,所述備份階段命令用于命令所述備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作; 判斷備份主進程是否讀取到備份子進程返回的執(zhí)行操作完成信息; 若是,確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。2.如權(quán)利要求1所述的方法,其特征在于,所述確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi)之后,還包括,確定數(shù)據(jù)庫聯(lián)機備份已完成,則結(jié)束所述備份子進程。3.如權(quán)利要求1所述的方法,其特征在于,所述判斷備份主進程是否讀取備份子進程返回的執(zhí)行操作完成信息,具體為,周期性判斷備份主進程是否讀取用戶干預(yù)和備份子進程返回的執(zhí)行操作完成信息。4.如權(quán)利要求1所述的方法,其特征在于,所述備份主進程發(fā)送備份階段命令給備份子進程之后,還包括,確定備份主進程檢測讀取到備份子進程的錯誤報告,則清除已經(jīng)備份數(shù)據(jù),結(jié)束備份子進程,并返回子進程故障信息。5.如權(quán)利要求3或4所述的方法,其特征在于,所述備份主進程發(fā)送備份階段命令給備份子進程之后,還包括: 解析備份主進程讀取到的用戶干預(yù); 若所述用戶干預(yù)取消或所述用戶干預(yù)會話中斷,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。6.如權(quán)利要求1至3中任意一項所述的方法,其特征在于,備份主進程發(fā)送備份階段命令給備份子進程之前,還包括:確定備份子進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份階段命令,則清空已備份數(shù)據(jù)并銷毀備份子進程。7.一種數(shù)據(jù)庫聯(lián)機備份系統(tǒng),其特征在于,包括: 發(fā)送命令單元,用于備份主進程發(fā)送備份階段命令給備份子進程,所述備份階段命令用于命令所述備份子進程執(zhí)行數(shù)據(jù)庫聯(lián)機備份中匹配的備份階段操作; 第一判斷單元,用于判斷備份主進程是否讀取到備份子進程返回的執(zhí)行操作完成信息; 等待單元,用于確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則所述備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述等待單元,具體用于:若是,確定備份主進程讀取到備份子進程發(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é)束所述備份子進程。9.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一判斷單元,具體用于:周期性判斷備份主進程是否讀取用戶干預(yù)和備份子進程返回的執(zhí)行操作完成信息。10.如權(quán)利要求7所述的系統(tǒng),其特征在于,還包括錯誤報告單元,用于確定備份主進程檢測讀取到備份子進程的錯誤報告,則清除已經(jīng)備份數(shù)據(jù),結(jié)束備份子進程,并返回子進程故障信息。11.如權(quán)利要求9或10所述的系統(tǒng),其特征在于,還包括: 用戶干預(yù)解析單元,用于解析備份主進程讀取到的用戶干預(yù); 用戶干預(yù)執(zhí)行單元,用于若所述用戶干預(yù)取消或所述用戶干預(yù)會話中斷,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進程。12.如權(quán)利要求7至9中任意一項所述的系統(tǒng),其特征在于,還包括子進程讀取命令單元,用于所述確定備份子進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份階段命令,則清空已備份數(shù)據(jù)并銷毀備份子進程。
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)庫聯(lián)機備份方法及系統(tǒng)。一種數(shù)據(jù)庫聯(lián)機備份方法包括:備份主進程發(fā)送備份階段命令給備份子進程;判斷備份主進程是否讀取備份子進程返回的執(zhí)行操作完成信息;若是,確定備份主進程讀取到備份子進程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機備份沒有結(jié)束,則備份主進程順序發(fā)送下一備份階段命令給備份子進程;若否,確定備份主進程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束備份子進程。本發(fā)明將數(shù)據(jù)庫聯(lián)機備份過程中備份階段命令的發(fā)送和對應(yīng)備份階段操作的執(zhí)行分離,將具體執(zhí)行放到獨立的備份子進程中,避免因具體執(zhí)行過程異常導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
【IPC分類】G06F17/30, G06F11/14
【公開號】CN105677515
【申請?zhí)枴緾N201610010364
【發(fā)明人】沈?qū)? 王海龍, 王學(xué)海
【申請人】上海達夢數(shù)據(jù)庫有限公司
【公開日】2016年6月15日
【申請日】2016年1月8日