專利名稱:一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是指一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法、裝置和系統(tǒng)。
背景技術(shù):
在通信技術(shù)領(lǐng)域,對(duì)于網(wǎng)絡(luò)的運(yùn)營(yíng)商而言,計(jì)費(fèi)系統(tǒng)是網(wǎng)絡(luò)中重要的組成部分,對(duì)計(jì)費(fèi)系統(tǒng)的實(shí)時(shí)性能要求非常高;計(jì)費(fèi)系統(tǒng)能否正常運(yùn)行,即計(jì)費(fèi)系統(tǒng)的安全性關(guān)系到網(wǎng)路中所有用戶的利益。
因此,為能夠?qū)崿F(xiàn)計(jì)費(fèi)系統(tǒng)的實(shí)時(shí)響應(yīng),開發(fā)出基于內(nèi)存數(shù)據(jù)庫(kù)的計(jì)費(fèi)系統(tǒng)。基于內(nèi)存數(shù)據(jù)庫(kù)的計(jì)費(fèi)系統(tǒng),能夠快速、實(shí)時(shí)響應(yīng)外部的命令,對(duì)內(nèi)存數(shù)據(jù)庫(kù)中數(shù)據(jù)的進(jìn)行各種查詢、刪除、修改等操作。
基于內(nèi)存數(shù)據(jù)庫(kù)的計(jì)費(fèi)系統(tǒng),由于內(nèi)存數(shù)據(jù)庫(kù)的所有數(shù)據(jù)都在內(nèi)存中,只要系統(tǒng)重起或掉電,整個(gè)內(nèi)存中的數(shù)據(jù)都不復(fù)存在。因此,存在安全性的問題。
為此,為解決安全性的問題提出解決方案是將靜態(tài)的數(shù)據(jù)從存儲(chǔ)設(shè)備中復(fù)制出,放入到內(nèi)存中,這部分?jǐn)?shù)據(jù)是不被修改的。這樣能夠提高計(jì)費(fèi)系統(tǒng)的部分?jǐn)?shù)據(jù)庫(kù)的查詢性能,由于在靜態(tài)的數(shù)據(jù)中不能執(zhí)行修改、刪除、插入等操作,而影響數(shù)據(jù)庫(kù)的性能主要是修改、刪除、插入等這些操作,顯然采用靜態(tài)的數(shù)據(jù)實(shí)現(xiàn)內(nèi)存數(shù)據(jù)的備份只保證數(shù)據(jù)的安全性卻導(dǎo)致計(jì)費(fèi)系統(tǒng)性能的下降。
為能夠既保證實(shí)現(xiàn)數(shù)據(jù)安全、又不影響系統(tǒng)性能,目前現(xiàn)有技術(shù)采用主、備機(jī)的方式,主、備機(jī)之間采用熱備份。主機(jī)內(nèi)存數(shù)據(jù)庫(kù)中數(shù)據(jù)產(chǎn)生的變動(dòng)都會(huì)實(shí)時(shí)同步到備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)中。這樣,如果主機(jī)出現(xiàn)故障,故障前的數(shù)據(jù)變動(dòng)存儲(chǔ)在備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)中不會(huì)丟失。由于考慮到主、備機(jī)還可能存在同時(shí)宕機(jī)的問題,主機(jī)必須將命令操作及數(shù)據(jù)變動(dòng)記錄到磁盤,通過零級(jí)備份、臟數(shù)據(jù)刷新(Check Point)、寫邏輯日志等操作來實(shí)現(xiàn)。
其中,零級(jí)備份是內(nèi)存數(shù)據(jù)庫(kù)的一種備份機(jī)制,可以通過外部命令或定時(shí)觸發(fā)方式將內(nèi)存數(shù)據(jù)庫(kù)的全部數(shù)據(jù)備份到磁盤指定的位置,相當(dāng)于在磁盤中保存一份內(nèi)存數(shù)據(jù)庫(kù)全部數(shù)據(jù)的映像文件,可在數(shù)據(jù)恢復(fù)時(shí)候使用。
臟數(shù)據(jù)刷新是內(nèi)存數(shù)據(jù)庫(kù)按照指定的時(shí)間間隔或者指定的數(shù)據(jù)修改操作次數(shù)將內(nèi)存數(shù)據(jù)庫(kù)的臟數(shù)據(jù)刷新到磁盤。由于零級(jí)備份后,內(nèi)存數(shù)據(jù)庫(kù)依然接收來自外部的操作命令,在下次零級(jí)備份之前,內(nèi)存數(shù)據(jù)庫(kù)中可能會(huì)出現(xiàn)臟數(shù)據(jù)。臟數(shù)據(jù)是內(nèi)存數(shù)據(jù)庫(kù)由于接收外部的操作命令,內(nèi)存數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)與磁盤中的備份數(shù)據(jù)不一致或者不存在磁盤的備份數(shù)據(jù)中,這部分?jǐn)?shù)據(jù)稱為臟數(shù)據(jù)。存在臟數(shù)據(jù)的危險(xiǎn)是內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)在零級(jí)備份之前發(fā)生崩潰的時(shí)候,用戶數(shù)據(jù)的缺失。通過臟數(shù)據(jù)刷新的操作能夠在發(fā)生數(shù)據(jù)災(zāi)難時(shí),快速、最大限度的恢復(fù)用戶數(shù)據(jù)。
寫邏輯日志是內(nèi)存數(shù)據(jù)庫(kù)用來記錄對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)產(chǎn)生變化的操作,目的是用來增量恢復(fù)時(shí)候使用。與零級(jí)備份的數(shù)據(jù)區(qū)別在于,零級(jí)備份數(shù)據(jù)是整個(gè)數(shù)據(jù)庫(kù)的一個(gè)映像文件,而邏輯日志只記錄數(shù)據(jù)發(fā)生變動(dòng)時(shí)的數(shù)據(jù)操作。通過實(shí)時(shí)記錄邏輯日志,在主、備機(jī)出現(xiàn)故障后,通過零級(jí)備份、臟數(shù)據(jù)刷新可以恢復(fù)大部分的數(shù)據(jù),未及時(shí)記錄的臟數(shù)據(jù)可通過實(shí)時(shí)記錄的邏輯日志進(jìn)行增量恢復(fù)。
采用主、備機(jī)方式,會(huì)存在只有主機(jī)對(duì)外提供業(yè)務(wù)服務(wù),而備機(jī)只用于與主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)保持同步,主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在做零級(jí)備份、臟數(shù)據(jù)刷新、寫邏輯日志等操作的時(shí)候,必須中止來自外部對(duì)內(nèi)存數(shù)據(jù)庫(kù)中數(shù)據(jù)的所有命令,只有這些操作完成后才能恢復(fù)執(zhí)行來自外部的命令的功能,這期間會(huì)極大的影響計(jì)費(fèi)系統(tǒng)的性能,導(dǎo)致內(nèi)存數(shù)據(jù)庫(kù)間斷性阻塞的問題。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法、裝置和系統(tǒng),以提高主機(jī)、備機(jī)的工作性能和效率。
本發(fā)明的實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法,包括接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;按照所述邏輯日志同步備機(jī)內(nèi)存中的數(shù)據(jù),對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
本發(fā)明的實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的裝置,包括接收單元、內(nèi)存數(shù)據(jù)庫(kù),所述接收單元,用于接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)包括同步單元,用于按照所述接收單元接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
本發(fā)明的實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的系統(tǒng),包括主機(jī)和備機(jī),主機(jī)包括內(nèi)存數(shù)據(jù)庫(kù),用于實(shí)現(xiàn)對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作;發(fā)送單元,用于將內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志發(fā)送至備機(jī);備機(jī)包括接收單元、內(nèi)存數(shù)據(jù)庫(kù),所述接收單元,用于接收所述邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)包括同步單元,用于按照所述接收單元接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
本發(fā)明的實(shí)施例中,所涉及的方法、裝置和系統(tǒng)中,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)主機(jī)所發(fā)送的邏輯日志實(shí)時(shí)備份自身內(nèi)存中的數(shù)據(jù),并執(zhí)行備份操作,使主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)能夠不間斷的向外界提供各種數(shù)據(jù)操作,不受備份操作的影響,使主、備機(jī)工作性能和效率有較大提高。
圖1是本發(fā)明實(shí)施例一實(shí)現(xiàn)數(shù)據(jù)備份的流程圖;圖2是本發(fā)明實(shí)施例二實(shí)現(xiàn)數(shù)據(jù)備份的流程圖;圖3是本發(fā)明實(shí)施例三實(shí)現(xiàn)數(shù)據(jù)備份的流程圖;圖4是本發(fā)明實(shí)施例四實(shí)現(xiàn)數(shù)據(jù)備份的流程圖;
圖5是本發(fā)明實(shí)施例五中裝置的結(jié)構(gòu)圖;圖6是本發(fā)明實(shí)施例六中系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明的各實(shí)施例。以在融合計(jì)費(fèi)系統(tǒng)(CBE,Convergent Billing Engine)中實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份為例。
CBE系統(tǒng)是一個(gè)實(shí)時(shí)、基于內(nèi)存數(shù)據(jù)庫(kù)的計(jì)費(fèi)系統(tǒng)。CBE系統(tǒng)采用內(nèi)存數(shù)據(jù)庫(kù)技術(shù)來提高系統(tǒng)的實(shí)時(shí)響應(yīng)性能,內(nèi)存數(shù)據(jù)庫(kù)通過將系統(tǒng)的常用數(shù)據(jù)庫(kù)表中的數(shù)據(jù)全部映射到主機(jī)的共享內(nèi)存中,并且在數(shù)據(jù)庫(kù)表上的關(guān)鍵字段上建立內(nèi)存索引的方式,來提高系統(tǒng)對(duì)關(guān)鍵數(shù)據(jù)的實(shí)時(shí)訪問性能。
CBE系統(tǒng)是采用主、備機(jī)的方式實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)中數(shù)據(jù)的備份。主、備機(jī)最初在內(nèi)存中存有相同的內(nèi)存數(shù)據(jù)庫(kù)表中常用數(shù)據(jù)。其中,備機(jī)根據(jù)接收來自外部的命令、或預(yù)定的時(shí)間間隔、或預(yù)定的對(duì)內(nèi)存中數(shù)據(jù)的操作次數(shù)來實(shí)現(xiàn)零級(jí)備份操作、臟數(shù)據(jù)刷新操作。參見圖1,結(jié)合圖1來詳細(xì)說明實(shí)施例一中實(shí)現(xiàn)數(shù)據(jù)備份同步的過程。
步驟S101將日志表中的邏輯日志發(fā)送到備機(jī);主、備機(jī)工作后,雙機(jī)實(shí)現(xiàn)通信,主機(jī)不斷接收來自外部的命令,其內(nèi)存數(shù)據(jù)庫(kù)根據(jù)命令對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。主機(jī)不斷掃描日志表,當(dāng)內(nèi)存中數(shù)據(jù)發(fā)生變動(dòng)后,將日志表中的邏輯日志發(fā)送到備機(jī)。
步驟S102備機(jī)將邏輯日志寫入到磁盤;備機(jī)接收緩沖器(Buffer)收到邏輯日志后,將邏輯日志在磁盤中保存。
步驟S103備機(jī)同步內(nèi)存中數(shù)據(jù);備機(jī)中的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收緩沖器中的邏輯日志,實(shí)現(xiàn)寫內(nèi)存數(shù)據(jù)庫(kù)的操作,根據(jù)邏輯日志同步內(nèi)存中的數(shù)據(jù),并在同步后通知主機(jī)刪除已經(jīng)同步過的邏輯日志。
為避免主、備機(jī)同時(shí)出現(xiàn)故障后,在內(nèi)存中的數(shù)據(jù)無法恢復(fù)。因此,由備機(jī)來實(shí)現(xiàn)備份操作,備份操作是指零級(jí)備份、臟數(shù)據(jù)刷新等操作。這樣,可以不影響主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)對(duì)外提供業(yè)務(wù)服務(wù)。在備機(jī)執(zhí)行臟數(shù)據(jù)刷新、零級(jí)備份的時(shí)候,主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)依然會(huì)響應(yīng)外部的命令操作,并產(chǎn)生邏輯日志發(fā)送到備機(jī)的接收緩沖器。此時(shí)由于備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)正在執(zhí)行將內(nèi)存中數(shù)據(jù)寫入到磁盤的過程,影響備機(jī)按照邏輯日志同步內(nèi)存中的數(shù)據(jù)。對(duì)于這種情況,下面通過實(shí)施例二來說明解決方案,參見圖2,步驟S201將日志表中的邏輯日志發(fā)送到備機(jī);主、備機(jī)工作后,主機(jī)不斷接收來自外部的命令,其內(nèi)存數(shù)據(jù)庫(kù)根據(jù)命令對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。主機(jī)不斷掃描日志表,當(dāng)內(nèi)存中數(shù)據(jù)發(fā)生變動(dòng)后,將日志表中的邏輯日志發(fā)送到備機(jī)。
步驟S202備機(jī)將邏輯日志寫入到磁盤;備機(jī)接收Buffer收到邏輯日志后,將邏輯日志在磁盤中保存。
步驟S203備機(jī)執(zhí)行備份操作;備機(jī)在接收到邏輯日志后,執(zhí)行備份操作。當(dāng)然,還可以在執(zhí)行備份操作前增加預(yù)定條件,在滿足預(yù)定條件后,執(zhí)行備份操作。預(yù)定條件可以是接收到外部的執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值等。備份操作是零級(jí)備份操作、臟數(shù)據(jù)刷新等操作。如果是執(zhí)行零級(jí)備份、或是臟數(shù)據(jù)刷新操作,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在操作過程中,將會(huì)被鎖住。
步驟S204備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中的臨時(shí)日志移至備機(jī)的進(jìn)程臨時(shí)Buffer1;其中,接收Buffer用于接收來自主機(jī)的所有數(shù)據(jù),實(shí)現(xiàn)與主機(jī)的信息交互,其空間有限,存放邏輯日志的時(shí)間不可過長(zhǎng)。備機(jī)在執(zhí)行備份操作時(shí),其內(nèi)存數(shù)據(jù)庫(kù)無法根據(jù)主機(jī)發(fā)送來的邏輯日志同步內(nèi)存中的數(shù)據(jù)。因此,備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中收到的來自主機(jī)的邏輯日志移至進(jìn)程臨時(shí)Buffer1中,等到備份操作執(zhí)行完成后再進(jìn)行內(nèi)存數(shù)據(jù)的同步。
步驟S205備機(jī)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志同步內(nèi)存中的數(shù)據(jù);備機(jī)在執(zhí)行完備份操作后,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志,同步內(nèi)存中的數(shù)據(jù),并在同步后通知主機(jī)刪除已經(jīng)同步過的邏輯日志。
當(dāng)備份操作是零級(jí)備份、或臟數(shù)據(jù)刷新時(shí),備機(jī)會(huì)在執(zhí)行成功后,會(huì)將磁盤中的邏輯日志,移至備份目錄,對(duì)于臟數(shù)據(jù)刷新操作結(jié)束后,將內(nèi)存數(shù)據(jù)庫(kù)中所有臟數(shù)據(jù)標(biāo)識(shí)清空。
步驟S206備機(jī)根據(jù)接收Buffer中的邏輯日志同步內(nèi)存數(shù)據(jù);上述的實(shí)現(xiàn)過程中,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志全部同步完內(nèi)存中的數(shù)據(jù)后,恢復(fù)到如實(shí)施例一中所描述的工作狀態(tài),即備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收Buffer中所收到來自主機(jī)的邏輯日志,實(shí)時(shí)同步內(nèi)存中的數(shù)據(jù)。
在實(shí)施例二的實(shí)現(xiàn)過程中,執(zhí)行步驟S204時(shí),如果出現(xiàn)異常情況,即由于備機(jī)長(zhǎng)時(shí)間沒有執(zhí)行完備份操作、或備機(jī)在執(zhí)行備份操作過程中,主機(jī)內(nèi)存數(shù)據(jù)庫(kù)在瞬間產(chǎn)生大量的操作,都會(huì)導(dǎo)致主機(jī)所發(fā)送的邏輯日志較多,邏輯日志所占用的空間超過進(jìn)程臨時(shí)Buffer1的空間,進(jìn)程臨時(shí)Buffer1的空間存滿后,導(dǎo)致邏輯日志無法從接收Buffer中移出,如果邏輯日志無法及時(shí)從接收Buffer中移出,占用太多接收Buffer的空間,會(huì)嚴(yán)重影響主、備機(jī)之間其它信息的交互,出現(xiàn)故障。為避免這種現(xiàn)象的出現(xiàn),可在備機(jī)中添加存儲(chǔ)空間,通過添加進(jìn)程臨時(shí)Buffer2來解決,下面通過實(shí)施例三說明在添加進(jìn)程臨時(shí)Buffer2后備機(jī)的數(shù)據(jù)備份過程,參見圖3,步驟S301將日志表中的邏輯日志發(fā)送到備機(jī);主、備機(jī)工作后,主機(jī)不斷接收來自外部的命令,其內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收到的命令對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。主機(jī)不斷掃描日志表,當(dāng)內(nèi)存中數(shù)據(jù)發(fā)生變動(dòng)后,將日志表中的邏輯日志發(fā)送到備機(jī)。
步驟S302備機(jī)將邏輯日志寫入到磁盤;備機(jī)接收Buffer收到邏輯日志后,將邏輯日志在磁盤中保存。
步驟S303備機(jī)執(zhí)行備份操作;備機(jī)在接收到邏輯日志后,執(zhí)行備份操作。當(dāng)然,還可以在執(zhí)行備份操作前增加預(yù)定條件,在滿足預(yù)定條件后,執(zhí)行備份操作。預(yù)定條件可以是接收到外部的執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值等。備份操作是零級(jí)備份操作、臟數(shù)據(jù)刷新等操作。如果是執(zhí)行零級(jí)備份、或是臟數(shù)據(jù)刷新操作,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在操作過程中,將會(huì)被鎖住。
步驟S304備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中的邏輯日志移至備機(jī)的進(jìn)程臨時(shí)Buffer1;其中,接收Buffer用于接收來自主機(jī)的所有數(shù)據(jù),備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中收到的來自主機(jī)的邏輯日志移至進(jìn)程臨時(shí)Buffer1中。
步驟S305在進(jìn)程臨時(shí)Buffer1存滿后,備機(jī)將接收Buffer中的邏輯日志移至進(jìn)程臨時(shí)Buffer2中;由于備機(jī)長(zhǎng)時(shí)間沒有執(zhí)行完備份操作、或備機(jī)在執(zhí)行備份操作過程中,主機(jī)內(nèi)存數(shù)據(jù)庫(kù)在瞬間產(chǎn)生大量的操作,都會(huì)導(dǎo)致主機(jī)所發(fā)送的邏輯日志較多,邏輯日志所占用的空間超過進(jìn)程臨時(shí)Buffer1的空間,進(jìn)程臨時(shí)Buffer1的空間存滿后,備機(jī)將接收Buffer中的邏輯日志移至進(jìn)程臨時(shí)Buffer2中。
步驟S306備機(jī)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志同步內(nèi)存中的數(shù)據(jù);備機(jī)在執(zhí)行完備份操作后,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志,同步內(nèi)存中的數(shù)據(jù),清空進(jìn)程臨時(shí)Buffer1,并在同步后通知主機(jī)刪除已經(jīng)同步過的邏輯日志。
當(dāng)備份操作是零級(jí)備份、或臟數(shù)據(jù)刷新時(shí),備機(jī)會(huì)在執(zhí)行成功后,會(huì)將磁盤中的邏輯日志,移至備份目錄,對(duì)于臟數(shù)據(jù)刷新操作結(jié)束后,將內(nèi)存數(shù)據(jù)庫(kù)中所有臟數(shù)據(jù)標(biāo)識(shí)清空。
步驟S307備機(jī)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志同步內(nèi)存中的數(shù)據(jù);備機(jī)在執(zhí)行完步驟S306后,內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志同步內(nèi)存中的數(shù)據(jù),在同步內(nèi)存中數(shù)據(jù)的過程中,備機(jī)可能還會(huì)有邏輯日志從接收Buffer中移至進(jìn)程臨時(shí)Buffer2,此時(shí)會(huì)出現(xiàn)將邏輯日志移至進(jìn)程臨時(shí)Buffer2和通過進(jìn)程臨時(shí)Buffer2中邏輯日志同步內(nèi)存數(shù)據(jù)兩個(gè)步驟競(jìng)爭(zhēng)使用進(jìn)程臨時(shí)Buffer2,這時(shí),內(nèi)存數(shù)據(jù)庫(kù)會(huì)通過依靠進(jìn)程的鎖機(jī)制來保證共享資源的互斥操作。
步驟S308備機(jī)根據(jù)接收Buffer中的邏輯日志同步內(nèi)存數(shù)據(jù);備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志全部同步完內(nèi)存中的數(shù)據(jù)后,恢復(fù)到如實(shí)施例一中所描述的工作狀態(tài),即備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收Buffer中所收到來自主機(jī)的邏輯日志,實(shí)時(shí)同步內(nèi)存中的數(shù)據(jù)。在上述實(shí)施例中,采用的是兩個(gè)緩沖器,對(duì)于緩沖器的數(shù)量而言,對(duì)于多個(gè)緩沖器,實(shí)現(xiàn)過程也是相同的。
在所描述的實(shí)施例中,如果出現(xiàn)進(jìn)程臨時(shí)Buffer1、Buffer2的空間全部被存滿,或主、備機(jī)出現(xiàn)異常情況導(dǎo)致雙機(jī)通信阻塞,如果出現(xiàn)這種特殊情況,主機(jī)會(huì)先將邏輯日志保存到磁盤上,以后再將邏輯日志發(fā)送到備機(jī)。下面通過實(shí)施例四說明具體的實(shí)現(xiàn)過程,參見圖4,步驟S401將日志表中的邏輯日志發(fā)送到備機(jī);主、備機(jī)工作后,主機(jī)不斷接收來自外部的命令,其內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收到的命令對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。主機(jī)不斷掃描日志表,當(dāng)內(nèi)存中數(shù)據(jù)發(fā)生變動(dòng)后,將日志表中的邏輯日志發(fā)送到備機(jī)。
步驟S402備機(jī)將邏輯日志寫入到磁盤;備機(jī)接收Buffer收到邏輯日志后,將邏輯日志在磁盤中保存。
步驟S403備機(jī)執(zhí)行備份操作;備機(jī)在接收到邏輯日志后,執(zhí)行備份操作。當(dāng)然,還可以在執(zhí)行備份操作前增加預(yù)定條件,在滿足預(yù)定條件后,執(zhí)行備份操作。預(yù)定條件可以是接收到外部的執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值等。備份操作是零級(jí)備份操作、臟數(shù)據(jù)刷新等操作。如果是執(zhí)行零級(jí)備份、或是臟數(shù)據(jù)刷新操作,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在操作過程中,將會(huì)被鎖住。
步驟S404備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中的邏輯日志移至備機(jī)的進(jìn)程臨時(shí)Buffer1;其中,接收Buffer用于接收來自主機(jī)的所有數(shù)據(jù),備機(jī)在執(zhí)行備份操作時(shí),將接收Buffer中收到的來自主機(jī)的邏輯日志移至進(jìn)程臨時(shí)Buffer1中。
步驟S405在進(jìn)程臨時(shí)Buffer1存滿后,備機(jī)將接收Buffer中的邏輯日志移至進(jìn)程臨時(shí)Buffer2中;由于備機(jī)長(zhǎng)時(shí)間沒有執(zhí)行完備份操作、或備機(jī)在執(zhí)行備份操作過程中,主機(jī)內(nèi)存數(shù)據(jù)庫(kù)在瞬間產(chǎn)生大量的操作,都會(huì)導(dǎo)致主機(jī)所發(fā)送的邏輯日志較多,邏輯日志所占用的空間超過進(jìn)程臨時(shí)Buffer1的空間,進(jìn)程臨時(shí)Buffer1的空間存滿后,備機(jī)將接收Buffer中的邏輯日志移至進(jìn)程臨時(shí)Buffer2中。
步驟S406a主機(jī)將邏輯日志保存到磁盤上;如果出現(xiàn)特殊情況,即進(jìn)程臨時(shí)Buffer2上的空間也全部存滿,此時(shí)備機(jī)會(huì)向主機(jī)發(fā)送空間已滿的通知,表明兩個(gè)緩沖區(qū)已經(jīng)沒有空間,主機(jī)會(huì)停止向備機(jī)發(fā)送邏輯日志,將產(chǎn)生的邏輯日志保存到磁盤上。
步驟S406備機(jī)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志同步內(nèi)存中的數(shù)據(jù);備機(jī)在執(zhí)行完備份操作后,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer1中的邏輯日志,同步內(nèi)存中的數(shù)據(jù)后,清空進(jìn)程臨時(shí)Buffer1,并在同步后通知主機(jī)刪除已經(jīng)同步過的邏輯日志。
步驟S407備機(jī)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志同步內(nèi)存中的數(shù)據(jù);備機(jī)在執(zhí)行完步驟S406后,內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志同步內(nèi)存中的數(shù)據(jù),同步內(nèi)存中的數(shù)據(jù)后,清空進(jìn)程臨時(shí)Buffer2,并在同步后通知主機(jī)刪除已經(jīng)同步過的邏輯日志。
步驟S408備機(jī)根據(jù)接收Buffer中的邏輯日志同步內(nèi)存數(shù)據(jù);備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)進(jìn)程臨時(shí)Buffer2中的邏輯日志全部同步完內(nèi)存中的數(shù)據(jù)后,恢復(fù)到如實(shí)施例一中所描述的工作狀態(tài),即備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收Buffer中所收到來自主機(jī)的邏輯日志,實(shí)時(shí)同步內(nèi)存中的數(shù)據(jù)。
步驟S409主機(jī)從磁盤上將未發(fā)送給備機(jī)的邏輯日志讀入到發(fā)送Buffer;在備機(jī)恢復(fù)后,向主機(jī)發(fā)送同步完成的通知,表明備機(jī)已經(jīng)按照進(jìn)程緩沖Buffer1、進(jìn)程緩沖Buffer2中的邏輯日志同步完內(nèi)存中的數(shù)據(jù)。主機(jī)收到同步完成的通知后,需要先從磁盤上將邏輯日志讀入到發(fā)送Buffer,將保存的邏輯日志發(fā)送到備機(jī)。
步驟S410主機(jī)將發(fā)送Buffer中的邏輯日志發(fā)送到備機(jī)。
備機(jī)的接收Buffer在接收到來自主機(jī)的邏輯日志后,內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收Buffer中的邏輯日志同步內(nèi)存中的數(shù)據(jù)。
在上述各個(gè)實(shí)施例中,主、備機(jī)在工作過程中,主機(jī)和備機(jī)之間的通信可能會(huì)因?yàn)楦鞣N情況出現(xiàn)中斷,這時(shí)主機(jī)會(huì)將邏輯日志保存到磁盤中,等到主、備機(jī)之間的通信恢復(fù)后,執(zhí)行步驟S409、步驟S410,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接收Buffer中的邏輯日志同步內(nèi)存中的數(shù)據(jù)。
在本發(fā)明的各個(gè)實(shí)施例中,備機(jī)的接收Buffer只是用于接收來自主機(jī)的邏輯日志,在備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)執(zhí)行備份操作的過程中,由于接收Buffer的空間有限,還要用于接收主機(jī)的其它消息。因此,備機(jī)會(huì)在內(nèi)存數(shù)據(jù)庫(kù)執(zhí)行備份操作的過程中,接收到來自主機(jī)的邏輯日志后,將接收到的邏輯日志保存在緩沖器中,即保存在進(jìn)程臨時(shí)Buffer1、進(jìn)程臨時(shí)Buffer2中,當(dāng)然,上述實(shí)施例中可采用一個(gè)緩沖器,也可采用多個(gè)緩沖器。當(dāng)采用多個(gè)緩沖器時(shí),能夠減少上述步驟S307中共同競(jìng)爭(zhēng)使用同一緩沖器現(xiàn)象的發(fā)生,以更好地提高備機(jī)的工作效率。
通過上述的實(shí)施例中的備份操作,當(dāng)內(nèi)存數(shù)據(jù)庫(kù)出現(xiàn)故障后,進(jìn)行恢復(fù)時(shí),首先在主機(jī)內(nèi)存數(shù)據(jù)庫(kù)中恢復(fù)最近一次備機(jī)在磁盤上通過零級(jí)備份操作時(shí)生成的映像文件,然后在主機(jī)上恢復(fù)最近一次臟數(shù)據(jù)刷新后的邏輯日志,至此,主機(jī)恢復(fù)成功;主機(jī)恢復(fù)成功后,備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)恢復(fù)最近一次磁盤上通過零級(jí)備份操作時(shí)生成的映像文件,然后恢復(fù)最近一次臟數(shù)據(jù)刷新后的邏輯日志,雙機(jī)全部恢復(fù)成功。
上面的各個(gè)實(shí)施例詳細(xì)地闡述主、備機(jī)之間實(shí)現(xiàn)內(nèi)存中數(shù)據(jù)備份的過程,對(duì)于備機(jī)這種裝置,通過實(shí)施例五詳細(xì)說明其結(jié)構(gòu)組成,參見圖5,該實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的裝置,所述裝置包括接收單元501、內(nèi)存數(shù)據(jù)庫(kù)502,接收單元501,用于接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)502包括同步單元503,用于按照接收單元501接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元504,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
所述裝置還包括第一緩沖器505、第二緩沖器506,所述第一緩沖器505即上述實(shí)施例中的進(jìn)程臨時(shí)Buffer1,所述第二緩沖器即進(jìn)程臨時(shí)Buffer2。
在備份單元504執(zhí)行備份操作時(shí),第一緩沖器505,用于存儲(chǔ)接收單元所收到的邏輯日志;第二緩沖器506,用于在第一緩沖器505存滿后,存儲(chǔ)接收單元501所收到的邏輯日志。
所述裝置還包括控制單元507,用于在備份單元504執(zhí)行完備份操作后,控制同步單元503按照第一緩沖器505、第二緩沖器506中邏輯日志同步內(nèi)存中的數(shù)據(jù)。
所述裝置還包括判斷單元508,用于判斷是否滿足預(yù)定條件,如果滿足,則觸發(fā)所述備份單元504執(zhí)行所述備份操作。預(yù)定條件可以是接收到外部的執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值等。
將實(shí)施例五中的裝置用于內(nèi)存數(shù)據(jù)的備份時(shí),可以和主機(jī)進(jìn)行通信,備份主機(jī)產(chǎn)生的內(nèi)存數(shù)據(jù),下面結(jié)合圖六描述本發(fā)明的實(shí)施例六的系統(tǒng),參見圖六,該實(shí)施例提供一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的系統(tǒng),包括主機(jī)和備機(jī),主機(jī)包括內(nèi)存數(shù)據(jù)庫(kù)609,用于實(shí)現(xiàn)對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作;發(fā)送單元610,用于將內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志發(fā)送至備機(jī);備機(jī)包括接收單元601、內(nèi)存數(shù)據(jù)庫(kù)602,接收單元601,用于接收所述邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)602包括同步單元603,用于按照接收單元601接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元604,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
在該實(shí)施例中,所述系統(tǒng)中備機(jī)還包括第一緩沖器605、第二緩沖器606,在備份單元604執(zhí)行備份操作時(shí),第一緩沖器605,用于存儲(chǔ)接收單元601所收到的邏輯日志;第二緩沖器606,用于在第一緩沖器605存滿后,存儲(chǔ)接收單元601所收到的邏輯日志。
在該實(shí)施例中,所述系統(tǒng)中備機(jī)還包括控制單元607,用于在備份單元604執(zhí)行完備份操作后,控制同步單元603按照第一緩沖器605、第二緩沖器606中邏輯日志同步內(nèi)存中的數(shù)據(jù)。
在該實(shí)施例中,所述系統(tǒng)中備機(jī)還包括通知單元608,用于當(dāng)?shù)谝痪彌_器605、第二緩沖器606全部存滿邏輯日志后,向所述主機(jī)發(fā)送空間已滿通知;當(dāng)所述同步單元603按照第一緩沖器605、第二緩沖器606中的邏輯日志同步完內(nèi)存中的數(shù)據(jù)后,向所述主機(jī)發(fā)送同步完成通知;在該實(shí)施例中,所述系統(tǒng)中主機(jī)還包括接收控制單元611,用于接收到所述空間已滿通知后,觸發(fā)寫入單元612;當(dāng)接收到所述同步完成通知后,觸發(fā)提取單元613;寫入單元612,用于在接收觸發(fā)后,將所述內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志保存到存儲(chǔ)設(shè)備中;提取單元613,用于在接收觸發(fā)后,將存儲(chǔ)設(shè)備中保存的所述內(nèi)存數(shù)據(jù)庫(kù)609對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志傳輸?shù)桨l(fā)送單元610;恢復(fù)單元614,用于當(dāng)主機(jī)、備機(jī)之間的通信中斷后,觸發(fā)寫入單元612;當(dāng)主機(jī)、備機(jī)之間的通信恢復(fù)后,觸發(fā)提取單元613。
在該實(shí)施例中,所述備機(jī)還包括判斷單元615,用于判斷是否滿足預(yù)定條件,如果滿足,則觸發(fā)所述備份單元604執(zhí)行所述備份操作。預(yù)定條件可以是接收到外部的執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值等。
在上述的各個(gè)實(shí)施例中,備機(jī)在執(zhí)行備份操作的過程中,主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)是處于工作狀態(tài),當(dāng)然,主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)也可處于非工作狀態(tài),無論主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)處于何種狀態(tài),都不影響本發(fā)明的實(shí)現(xiàn)。備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)根據(jù)主機(jī)所發(fā)送的邏輯日志實(shí)時(shí)備份自身內(nèi)存中的數(shù)據(jù),并執(zhí)行備份操作,使主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)能夠不間斷的向外界提供各種數(shù)據(jù)操作,不受備份操作的影響而中斷對(duì)外界提供服務(wù),使主機(jī)工作效率有較大的提高;當(dāng)備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在執(zhí)行備份操作時(shí),由于此時(shí)內(nèi)存數(shù)據(jù)庫(kù)處于被鎖的狀態(tài),無法按照接收的邏輯日志同步內(nèi)存中的數(shù)據(jù),通過第一緩沖器、第二緩沖器存儲(chǔ)所接收到的邏輯日志,從而使主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)能夠不間斷對(duì)外提供數(shù)據(jù)操作,并將邏輯日志實(shí)時(shí)發(fā)送至備機(jī),使主、備機(jī)的工作效率有較大提高;當(dāng)備機(jī)的兩個(gè)緩沖器全部存滿,主機(jī)將內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志保存到磁盤上,當(dāng)備機(jī)處理完兩個(gè)緩沖器中的邏輯日志后,將磁盤上保存的邏輯日志發(fā)送給備機(jī),或當(dāng)主、備機(jī)之間通信中斷,主機(jī)將內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志保存到磁盤上,當(dāng)主、備機(jī)之間的通信恢復(fù)后,將磁盤上保存的邏輯日志發(fā)送給備機(jī)。從而保證在出現(xiàn)各種問題后,主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)都能不間斷的向外界提供數(shù)據(jù)操作,并將產(chǎn)生的邏輯日志實(shí)時(shí)發(fā)送至備機(jī),使主、備機(jī)的性能和工作效率有較大提高。
對(duì)于本發(fā)明實(shí)施例中的方法、裝置和系統(tǒng),凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法,其特征在于,包括接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;按照所述邏輯日志同步備機(jī)內(nèi)存中的數(shù)據(jù),對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作的過程中,所述主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)處于工作狀態(tài)或非工作狀態(tài)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,按照所述邏輯日志同步備機(jī)內(nèi)存中的數(shù)據(jù),及對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作由備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)來執(zhí)行;備機(jī)的內(nèi)存數(shù)據(jù)庫(kù)在執(zhí)行所述備份操作的過程中,接收到來自所述主機(jī)的邏輯日志后,該方法進(jìn)一步包括備機(jī)將接收到的邏輯日志保存在緩沖器中。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述緩沖器為一個(gè)或兩個(gè)以上。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,當(dāng)備機(jī)的緩沖器全部存滿邏輯日志后,該方法進(jìn)一步包括所述備機(jī)向所述主機(jī)發(fā)送空間已滿通知,所述主機(jī)收到空間已滿的通知后,將產(chǎn)生的邏輯日志保存到存儲(chǔ)設(shè)備中;所述備機(jī)處理完緩沖器中的邏輯日志后,向所述主機(jī)發(fā)送同步完成通知,所述主機(jī)收到同步完成通知后,將所述存儲(chǔ)設(shè)備中的邏輯日志發(fā)送到所述備機(jī)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,任意時(shí)刻主、備機(jī)之間的通信出現(xiàn)中斷,該方法進(jìn)一步包括主機(jī)將產(chǎn)生的邏輯日志保存到存儲(chǔ)設(shè)備中,當(dāng)主、備機(jī)之間的通信恢復(fù)后,將所述存儲(chǔ)設(shè)備中的邏輯日志發(fā)送到備機(jī)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作之前,該方法進(jìn)一步包括判斷是否滿足預(yù)定條件,如果滿足,則執(zhí)行所述備份操作;所述滿足預(yù)定條件為接收到執(zhí)行命令、或時(shí)間間隔超過預(yù)定閾值、或?qū)?nèi)存中數(shù)據(jù)的操作次數(shù)超過預(yù)定閾值。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行備份操作為執(zhí)行零級(jí)備份操作或臟數(shù)據(jù)刷新操作。
9.一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的裝置,其特征在于,所述裝置包括接收單元、內(nèi)存數(shù)據(jù)庫(kù),所述接收單元,用于接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)包括同步單元,用于按照所述接收單元接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括緩沖器,用于在所述備份單元執(zhí)行備份操作時(shí),存儲(chǔ)所述接收單元所收到的邏輯日志。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述緩沖器為一個(gè)或兩個(gè)以上。
12.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述裝置還包括控制單元,用于在所述備份單元執(zhí)行完備份操作后,控制所述同步單元按照緩沖器中的邏輯日志同步內(nèi)存中的數(shù)據(jù)。
13.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括判斷單元,用于判斷是否滿足預(yù)定條件,如果滿足,則觸發(fā)所述備份單元執(zhí)行所述備份操作。
14.一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的系統(tǒng),其特征在于,包括主機(jī)和備機(jī),主機(jī)包括內(nèi)存數(shù)據(jù)庫(kù),用于實(shí)現(xiàn)對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作;發(fā)送單元,用于將內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志發(fā)送至備機(jī);備機(jī)包括接收單元、內(nèi)存數(shù)據(jù)庫(kù),所述接收單元,用于接收所述邏輯日志;所述內(nèi)存數(shù)據(jù)庫(kù)包括同步單元,用于按照所述接收單元接收到的所述邏輯日志同步內(nèi)存中的數(shù)據(jù);備份單元,用于對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述備機(jī)還包括緩沖器,用于在所述備份單元執(zhí)行備份操作時(shí),存儲(chǔ)所述接收單元所收到的邏輯日志。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述緩沖器為一個(gè)或兩個(gè)以上。
17.根據(jù)權(quán)利要求15或16所述的系統(tǒng),其特征在于,所述備機(jī)還包括控制單元,用于在所述備份單元執(zhí)行完備份操作后,控制所述同步單元按照緩沖器中的邏輯日志同步內(nèi)存中的數(shù)據(jù)。
18.根據(jù)權(quán)利要求15或16所述的系統(tǒng),其特征在于,所述備機(jī)還包括通知單元,用于當(dāng)緩沖器全部存滿邏輯日志后,向所述主機(jī)發(fā)送空間已滿通知;當(dāng)所述同步單元按照緩沖器中的邏輯日志同步完內(nèi)存中的數(shù)據(jù)后,向所述主機(jī)發(fā)送同步完成通知。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其特征在于,所述主機(jī)還包括接收控制單元,用于接收到所述空間已滿通知后,觸發(fā)寫入單元;當(dāng)接收到所述同步完成通知后,觸發(fā)提取單元;所述寫入單元,用于在接收觸發(fā)后,將所述內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志保存到存儲(chǔ)設(shè)備中;所述提取單元,用于在接收觸發(fā)后,將存儲(chǔ)設(shè)備中保存的所述內(nèi)存數(shù)據(jù)庫(kù)對(duì)內(nèi)存中數(shù)據(jù)進(jìn)行操作后產(chǎn)生的邏輯日志傳輸?shù)剿霭l(fā)送單元;恢復(fù)單元,用于當(dāng)主機(jī)、備機(jī)之間的通信中斷后,觸發(fā)所述寫入單元;當(dāng)主機(jī)、備機(jī)之間的通信恢復(fù)后,觸發(fā)所述提取單元。
20.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述備機(jī)還包括判斷單元,用于判斷是否滿足預(yù)定條件,如果滿足,則觸發(fā)所述備份單元執(zhí)行所述備份操作。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的方法、裝置和系統(tǒng)。本發(fā)明的方法包括接收主機(jī)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生的邏輯日志;按照所述邏輯日志同步備機(jī)內(nèi)存中的數(shù)據(jù),對(duì)所述內(nèi)存中的數(shù)據(jù)執(zhí)行備份操作。本發(fā)明還公開了一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的裝置,包括接收單元、內(nèi)存數(shù)據(jù)庫(kù),內(nèi)存數(shù)據(jù)庫(kù)包括同步單元,備份單元。發(fā)明公開了一種實(shí)現(xiàn)內(nèi)存數(shù)據(jù)備份的系統(tǒng)。本發(fā)明的方法、裝置和系統(tǒng)能夠保證主機(jī)的內(nèi)存數(shù)據(jù)庫(kù)實(shí)時(shí)向外界提供數(shù)據(jù)操作,不受備份操作的影響而產(chǎn)生中斷,使主機(jī)的工作性能和效率有較大提高。
文檔編號(hào)G06F17/30GK101034364SQ200710090770
公開日2007年9月12日 申請(qǐng)日期2007年4月2日 優(yōu)先權(quán)日2007年4月2日
發(fā)明者唐碩 申請(qǐng)人:華為技術(shù)有限公司