欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)庫聯(lián)機(jī)備份方法及系統(tǒng)的制作方法_2

文檔序號:9910882閱讀:來源:國知局
47]2)備份環(huán)境校驗,當(dāng)前環(huán)境是否滿足備份命令中要求,如備份目標(biāo)輸出是否重復(fù)、增量備份是否存在基備份等;
[0048]3)備份環(huán)境初始化,記錄備份相關(guān)信息,準(zhǔn)備開始備份;
[0049]4)備份數(shù)據(jù)文件,指定目標(biāo)備份的數(shù)據(jù)文件,從目標(biāo)數(shù)據(jù)文件中收集有效數(shù)據(jù),經(jīng)過加密或者壓縮處理后,寫入到目標(biāo)備份文件中;
[0050]5)備份日志文件,從指定的日志文件中收集有效日志數(shù)據(jù),經(jīng)過加密或者壓縮處理后,寫入到目標(biāo)備份文件中;
[0051]6)生成元信息文件,將備份的元數(shù)據(jù)信息,如備份目標(biāo)數(shù)據(jù)文件、是否備份了日志、是否執(zhí)行了加密壓縮等信息寫入到單獨的元信息文件;
[0052]7)備份結(jié)束,將結(jié)果返回給用戶。
[0053]備份主進(jìn)程與備份子進(jìn)程之間采用命名管道(NAMED_PIPE)實現(xiàn),可事先約定一個有意義的命名規(guī)則,設(shè)管道的名字為pipe_name。
[0054]由備份主進(jìn)程確定當(dāng)前所處備份階段,給出對應(yīng)備份階段命令。備份環(huán)境校驗階段,備份階段命令為CMD_CHECK;備份環(huán)境初始化階段,備份階段命令為CMD_INIT;備份數(shù)據(jù)文件階段,備份階段命令為CMD_DBF;備份日志文件階段,備份階段命令為CMD_L0G;生成元信息文件階段,備份階段命令為CMD_META;備份結(jié)束,備份階段命令為CMD_C0MPLETE。
[0055]而備份子進(jìn)程的實現(xiàn)可以采用兩個線程:MAIN主線程和TASK子線程。MAIN主線程是備份子進(jìn)程創(chuàng)建時直接生成的線程;TASK子線程是在MAIN主線程中創(chuàng)建的用于處理具體任務(wù)的子線程。
[0056]可以在備份子進(jìn)程內(nèi)部定義一個任務(wù)系統(tǒng),包含一個空閑任務(wù)鏈表(free_lst)和一個等待處理任務(wù)鏈表(wait_lst)。初始時,free_lst中包含兩個節(jié)點,wait_lst為空鏈表。工作開始后,MAIN主線程從free_lst取出一個空閑任務(wù)節(jié)點(free_node),從PIPE中讀取備份階段命令,轉(zhuǎn)換為相應(yīng)的備份階段命令操作后,填充空閑任務(wù)節(jié)點(free_node),然后將其加入到wait_lst中;TASK子線程從wait_lst中取出待處理任務(wù)節(jié)點,進(jìn)行處理,處理結(jié)束后,將節(jié)點重新加入到free_lst中。
[0057]各備份階段命令與備份階段操作的對應(yīng)如下:CMD_CHECK對應(yīng)TSK_CHECK;CMD_INIT 對應(yīng) TSK_INIT; CMD_DBF 對應(yīng) TSK_DBF ; CMD_L0G 對應(yīng) TSK_L0G ; CMD_META 對應(yīng) TSK_META ;CMD_C0MPLETE對應(yīng)任務(wù)TSK_COMPLETE<XMD_CONTINUE指繼續(xù)執(zhí)行當(dāng)前操作,可當(dāng)作空命令,不做任何處理;CMD_ST0P指中止當(dāng)前操作,用于設(shè)置全局變量global_stop_flag = TRUE,當(dāng)前執(zhí)行操作取到這個標(biāo)識后,中止當(dāng)前操作,也不需要相應(yīng)任務(wù)。
[0058]步驟12:判斷備份主進(jìn)程是否讀取到備份子進(jìn)程返回的執(zhí)行操作完成信息。
[0059]步驟13:若是,確定備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機(jī)備份沒有結(jié)束,則所述備份主進(jìn)程順序發(fā)送下一備份階段命令給備份子進(jìn)程;若否,確定備份主進(jìn)程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進(jìn)程。
[0060]具體的,判斷備份主進(jìn)程是否讀取到備份子進(jìn)程返回的執(zhí)行操作完成信息,若是,確定備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),且確定數(shù)據(jù)庫聯(lián)機(jī)備份沒有結(jié)束,則所述備份主進(jìn)程順序發(fā)送下一備份階段命令給備份子進(jìn)程,其中,備份階段命令是按照數(shù)據(jù)庫聯(lián)機(jī)備份的操作過程預(yù)先設(shè)置好順序的,備份主進(jìn)程每收到執(zhí)行操作完成信息,則順序發(fā)送下一備份階段命令給備份子進(jìn)程,確保備份操作按順序進(jìn)行。若否,確定備份主進(jìn)程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息,則返回子進(jìn)程故障信息給用戶,子進(jìn)程故障信息可以為錯誤報告等;清空備份子進(jìn)程已備份的數(shù)據(jù);銷毀備份子進(jìn)程。通過上述過程以確保備份的失敗也不會導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
[0061]例如,備份主進(jìn)程和子進(jìn)程之間通過管道(PIPE)技術(shù)進(jìn)行通訊。備份主進(jìn)程將命令發(fā)送給備份子進(jìn)程后,測試備份主進(jìn)程是否讀取到備份子進(jìn)程返回的執(zhí)行操作完成信息,即等待備份子進(jìn)程執(zhí)行操作完成信息的反饋;備份子進(jìn)程執(zhí)行一個階段命令后,將執(zhí)行操作完成信息的反饋通過管道(PIPE)返回給備份主進(jìn)程,并等待主進(jìn)程的下一命令,若數(shù)據(jù)庫聯(lián)機(jī)備份沒有結(jié)束,則主進(jìn)程發(fā)送下一備份階段命令給備份子進(jìn)程。若主進(jìn)程在預(yù)設(shè)第一等待時段內(nèi)沒有讀取到備份子進(jìn)程返回的信息,則清空已備份數(shù)據(jù),并銷毀備份子進(jìn)程,以確保備份的失敗也不會導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
[0062]優(yōu)選的,步驟13中還包括,若是,確定備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),且確定數(shù)據(jù)庫聯(lián)機(jī)備份已完成,則結(jié)束所述備份子進(jìn)程。
[0063]具體的,測試備份主進(jìn)程是否讀取到備份子進(jìn)程返回的執(zhí)行操作完成信息,判斷備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信時是否在預(yù)設(shè)第一等待時段內(nèi),若是,且確定數(shù)據(jù)庫聯(lián)機(jī)備份已完成,聯(lián)機(jī)備份結(jié)束后,主進(jìn)程向子進(jìn)程發(fā)送CMD_C0MPLETE命令,子進(jìn)程自行判斷前一個階段任務(wù)是否執(zhí)行失敗,若失敗,則清除已經(jīng)備份數(shù)據(jù),退出備份子進(jìn)程,并返回子進(jìn)程故障信息;否則,僅退出備份子進(jìn)程。通過上述過程以確保備份的失敗也不會導(dǎo)致數(shù)據(jù)庫系統(tǒng)異常。
[0064]圖2至圖4示出根據(jù)本發(fā)明提供的一種數(shù)據(jù)庫聯(lián)機(jī)備份方法第二個實施例的方法流程圖。本實施例的一種數(shù)據(jù)庫聯(lián)機(jī)備份方法主要由數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn),該方法包括以下步驟:
[0065]步驟21:備份主進(jìn)程發(fā)送備份階段命令給備份子進(jìn)程,備份階段命令用于命令備份子進(jìn)程執(zhí)行數(shù)據(jù)庫聯(lián)機(jī)備份中匹配的備份階段操作。該步驟的執(zhí)行過程與一種數(shù)據(jù)庫聯(lián)機(jī)備份方法第一個實施例步驟11相同,在此不再贅述。
[0066]步驟22:周期性判斷備份主進(jìn)程是否讀取到用戶干預(yù)和備份子進(jìn)程返回的執(zhí)行操作完成信息。
[0067]具體的,按預(yù)設(shè)周期T周期性判斷備份主進(jìn)程是否讀取用戶輸入的干預(yù)指令和備份子進(jìn)程返回的執(zhí)行操作完成信息。其中,備份子進(jìn)程執(zhí)行完備份階段命令對應(yīng)的備份階段操作后,則進(jìn)入空閑狀態(tài),因此,備份子進(jìn)程返回的執(zhí)行操作完成信息可能有備份子進(jìn)程空閑信息,而用戶輸入的干預(yù)指令可以為用戶輸入的需要進(jìn)行大量數(shù)據(jù)庫操作的指令,如大批量數(shù)據(jù)寫入數(shù)據(jù)庫的指令,用戶輸入中斷備份的命令或者退出用戶會話等。
[0068]例如,備份主進(jìn)程發(fā)送備份階段命令給備份子進(jìn)程之后,通過間隔等待的方式每隔周期T測試等待備份主進(jìn)程讀取到用戶輸入的預(yù)設(shè)指令和備份子進(jìn)程返回的執(zhí)行操作完成信息,其中,等待檢測實現(xiàn)可以封裝為一個函數(shù)&&010^)_¥&;[1:_&11(1_(311601^(),方便調(diào)用。其中函數(shù)backup_wait_and_check()的實現(xiàn)是,先在預(yù)設(shè)時間內(nèi)讀取備份子進(jìn)程發(fā)送完成信息,若未讀取到,則認(rèn)為子進(jìn)程異常,向用戶返回子進(jìn)程故障信息;若讀取到,不論什么結(jié)果,則先檢查用戶干預(yù),若需要中止,則向子進(jìn)程發(fā)送CMD_STOP命令,并返回干預(yù)信息;若不需要中止,則判斷備份子進(jìn)程返回是否空閑狀態(tài)(前一個階段命令任務(wù)是否已經(jīng)完成),若空閑,則跳出這個函數(shù),由主進(jìn)程順序發(fā)送下一個備份階段命令;若不空閑(前一個階段命令任務(wù)沒有完成),則向備份子進(jìn)程發(fā)送CMD_CONTINUE命令,通知備份子進(jìn)程繼續(xù)執(zhí)行前一個階段命令。
[0069]步驟23:若是,確定備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),確定數(shù)據(jù)庫聯(lián)機(jī)備份沒有結(jié)束,則所述備份主進(jìn)程順序發(fā)送下一備份階段命令給備份子進(jìn)程;若否,確定備份主進(jìn)程在預(yù)設(shè)第一等待時段內(nèi)未讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息,則清空已備份數(shù)據(jù)并結(jié)束所述備份子進(jìn)程。該步驟的執(zhí)行過程與一種數(shù)據(jù)庫聯(lián)機(jī)備份方法第一個實施例步驟13相同,在此不再贅述。
[0070]優(yōu)選的,步驟23中還包括:若是,確定備份主進(jìn)程讀取到備份子進(jìn)程發(fā)送的執(zhí)行操作完成信息時為在預(yù)設(shè)第一等待時段內(nèi),且確定數(shù)據(jù)庫聯(lián)機(jī)備份已完成,則結(jié)束備份子進(jìn)程。
[0071]如附圖2所示,優(yōu)選的,為了更好的監(jiān)測備份子進(jìn)程中是否有哪一備份階段操作出現(xiàn)錯誤,步驟21之后還包括步驟24:確定備份主進(jìn)程檢測讀取到備份子進(jìn)程的錯誤報告,則結(jié)束備份子進(jìn)程,并返回子進(jìn)程故障信息。
[0072]其中,步驟24和步驟22中對備份子進(jìn)程的檢測可以同時進(jìn)行,繼續(xù)命令為備份階段命令CMD_C0NTINUE,用于命令備份子進(jìn)程繼續(xù)當(dāng)前的備份階段操作。若備份主進(jìn)程檢測未讀取到備份子進(jìn)程的錯誤報告,則備份主進(jìn)程發(fā)送繼續(xù)命令給備份子進(jìn)程。
[0073]例如,確定備份主進(jìn)程檢測讀取到備份子進(jìn)程的錯誤報告,則備份主進(jìn)程發(fā)送終止命令CMD_ST0P,清空已備份數(shù)據(jù)并結(jié)束備份子進(jìn)程,并返回子進(jìn)程故障信息,若否,則周期性測試備份主進(jìn)程是否讀取用戶干預(yù)和備份子進(jìn)程返回的執(zhí)行操作完成信息,如果備份子進(jìn)程返回的執(zhí)行操作完成信息沒有超過預(yù)設(shè)的第一時長,且未讀取到用戶干預(yù),則使備份子進(jìn)程繼續(xù)當(dāng)前的操作。
[0074]如附圖3和附圖4所示,為了更好的檢測備份子進(jìn)程中的用戶干預(yù),防止備份過程中用戶干預(yù)而造成備份數(shù)據(jù)異常,步驟22之后,
當(dāng)前第2頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
绿春县| 定陶县| 高阳县| 三亚市| 东乡县| 浦城县| 丹江口市| 凉城县| 航空| 登封市| 莎车县| 昭苏县| 边坝县| 四平市| 博野县| 宁都县| 湘西| 台江县| 滕州市| 宜君县| 博野县| 芒康县| 六盘水市| 界首市| 南昌县| 昌乐县| 四平市| 华蓥市| 宁乡县| 巴彦淖尔市| 舟曲县| 洛川县| 沧源| 巢湖市| 商河县| 郎溪县| 武陟县| 桐乡市| 泗阳县| 库尔勒市| 富顺县|