亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法、裝置和系統(tǒng)的制作方法

文檔序號:6612086閱讀:282來源:國知局
專利名稱:內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及內(nèi)存數(shù)據(jù)庫技術(shù),特別涉及內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法、裝 置和系統(tǒng)。
背景技術(shù)
數(shù)據(jù)庫容災(zāi)建立在數(shù)據(jù)庫基礎(chǔ)上,通過邏輯的方式建立一個和主數(shù)據(jù)庫 相同的容災(zāi)數(shù)據(jù)庫并實(shí)時更新,用于主數(shù)據(jù)庫發(fā)生災(zāi)難時,及時接管業(yè)務(wù)系 統(tǒng),保證業(yè)務(wù)的持續(xù)性。災(zāi)難的原因是多方面的,可以由數(shù)據(jù)庫所在的計算機(jī)系統(tǒng)的因素導(dǎo)致, 例如存儲介質(zhì)的損壞,或者由非計算機(jī)系統(tǒng)的因素導(dǎo)致,例如自然災(zāi)害。采 用遠(yuǎn)程容災(zāi),將地理位置劃分為本地和異地,在本地建立主數(shù)據(jù)庫,而在異 地建立容災(zāi)數(shù)據(jù)庫,相當(dāng)于在地理上將主數(shù)據(jù)庫和容災(zāi)數(shù)據(jù)庫分離,已經(jīng)成 為保證業(yè)務(wù)持續(xù)性的一種重要手段。目前應(yīng)用廣泛的物理數(shù)據(jù)庫遠(yuǎn)程容災(zāi),主要通過數(shù)據(jù)庫產(chǎn)品自帶的復(fù)制 工具或第三方工具實(shí)現(xiàn),這些工具通過將本地主數(shù)據(jù)庫中記錄業(yè)務(wù)操作的日 志文件傳輸?shù)疆惖厝轂?zāi)數(shù)據(jù)庫,并在異地容災(zāi)數(shù)據(jù)庫中執(zhí)行日志文件,實(shí)時 更新異地容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù),以實(shí)現(xiàn)異地容災(zāi)數(shù)據(jù)庫與本地數(shù)據(jù)庫的數(shù)據(jù) 同步,從而在本地數(shù)據(jù)庫出現(xiàn)災(zāi)難時,異地容災(zāi)數(shù)據(jù)庫能夠及時接管業(yè)務(wù)系 統(tǒng)。隨著運(yùn)營商運(yùn)營水平的不斷提高,對數(shù)據(jù)庫操作的實(shí)時性也提出了更高 的要求,物理數(shù)據(jù)庫的數(shù)據(jù)存儲主體為磁盤,而磁盤中的數(shù)據(jù)存取必須涉及到輸入/輸出(1/0)接口,因此物理數(shù)據(jù)庫在操作執(zhí)行方面存在延遲,成為物理數(shù)據(jù)庫在實(shí)時性方面的性能瓶頸,也同樣影響物理數(shù)據(jù)庫遠(yuǎn)程容災(zāi)時,
主數(shù)據(jù)庫和容災(zāi)數(shù)據(jù)庫的數(shù)據(jù)同步效果。基于上述問題,內(nèi)存數(shù)據(jù)庫應(yīng)運(yùn)而 生,希望業(yè)務(wù)系統(tǒng)對數(shù)據(jù)庫的操作只針對內(nèi)存,由于內(nèi)存的數(shù)據(jù)存取無需涉 及I/0接口,因此在實(shí)時性方面具備很大的優(yōu)勢。現(xiàn)有內(nèi)存數(shù)據(jù)庫的應(yīng)用多 是以內(nèi)存作為快速查詢的緩存,從而在數(shù)據(jù)存取方面滿足實(shí)時性的要求,而 數(shù)據(jù)存儲的主體依然為磁盤,因此目前針對內(nèi)存數(shù)據(jù)庫提出的遠(yuǎn)程容災(zāi)方 案,也是基于物理數(shù)據(jù)庫實(shí)現(xiàn)的。隨著應(yīng)用需求和性能要求的提高,內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)存儲主體將由磁盤 逐漸轉(zhuǎn)換為內(nèi)存本身,但是,由于內(nèi)存的數(shù)據(jù)易失性,如果內(nèi)存數(shù)據(jù)庫所在 的系統(tǒng)出現(xiàn)故障,內(nèi)存中的數(shù)據(jù)將會全部丟失無法恢復(fù),因此以內(nèi)存作為數(shù) 據(jù)存儲主體的內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)能力顯得尤為重要。目前還未出現(xiàn)以內(nèi)存作為數(shù)據(jù)存儲主體的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)方案。發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)方法,該方法能夠以內(nèi)存 作為數(shù)據(jù)存儲主體,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)異地側(cè)裝置,該裝置能夠 以內(nèi)存作為數(shù)據(jù)存儲主體,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)本地側(cè)裝置,該裝置能夠 以內(nèi)存作為數(shù)據(jù)存儲主體,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)系統(tǒng),該系統(tǒng)能夠以內(nèi)存 作為數(shù)據(jù)存儲主體,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)方法,在本地建立主內(nèi)存數(shù)據(jù)庫,在異地建立容災(zāi)內(nèi)存數(shù)據(jù)庫,該方法還包括接收主內(nèi)存數(shù)據(jù)庫執(zhí)行業(yè)務(wù)操作后生成的邏輯日志并備除; 執(zhí)行所述邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)備份;主內(nèi)存數(shù)據(jù)庫故障時,如果容災(zāi)數(shù)據(jù)庫正常,使用容災(zāi)內(nèi)存數(shù)據(jù)庫,如
果容災(zāi)數(shù)據(jù)庫故障,使用備份的數(shù)據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使 用容災(zāi)數(shù)據(jù)庫。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)異地側(cè)裝置,該裝置包括 邏輯日志處理模塊,用于接收來自本地側(cè)裝置的邏輯日志并備份;執(zhí)行接 收的邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù); 容災(zāi)內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù);磁盤鏡像模塊,用于將所述容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)備份;在所述 容災(zāi)內(nèi)存數(shù)據(jù)庫模塊出現(xiàn)故障時,使用所述備份的數(shù)據(jù)和邏輯日志恢復(fù)所述 容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)本地側(cè)裝置,該裝置包括主內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù);邏輯日志生成模塊,用于生成針對所述主內(nèi)存數(shù)據(jù)庫模塊的業(yè)務(wù)操作的邏 輯曰志;邏輯日志處理模塊,用于從所述邏輯日志生成模塊中讀取邏輯日志,將 邏輯日志發(fā)送到異地側(cè)裝置。本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的系統(tǒng),該系統(tǒng)包括本地側(cè) 裝置和異地側(cè)裝置;所述本地側(cè)裝置中包括存儲數(shù)據(jù)的主內(nèi)存數(shù)據(jù)庫,異地側(cè) 裝置中包括存儲數(shù)據(jù)的容災(zāi)內(nèi)存數(shù)據(jù)庫;所述本地側(cè)裝置,用于生成針對所述主內(nèi)存數(shù)據(jù)庫的業(yè)務(wù)操作的邏輯日志, 將所述邏輯日志發(fā)送到異地側(cè)裝置;所述異地側(cè)裝置,用于接收來自所述本地側(cè)裝置的邏輯日志并備份;執(zhí)行 接收的邏輯日志,更新所述容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將所述容災(zāi)內(nèi)存數(shù)據(jù)庫 中的數(shù)據(jù)備份;在所述容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用所述備份的數(shù)據(jù)和邏 輯日志恢復(fù)所述容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。可見,本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法、裝置和系統(tǒng),使用邏 輯日志同步主內(nèi)存數(shù)據(jù)庫和容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),在主內(nèi)存數(shù)據(jù)庫出現(xiàn) 故障時,使用容災(zāi)內(nèi)存數(shù)據(jù)庫及時接管業(yè)務(wù)系統(tǒng);又由于數(shù)據(jù)存儲的主體為
內(nèi)存,具有數(shù)據(jù)易失性的特點(diǎn),將來自主內(nèi)存數(shù)據(jù)庫的邏輯日志和容災(zāi)內(nèi)存 數(shù)據(jù)庫中的數(shù)據(jù)再進(jìn)行備份,在容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用備份的數(shù) 據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使用容突內(nèi)存數(shù)據(jù)庫及時接管業(yè)務(wù)系統(tǒng)。


圖1為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的異地側(cè)裝置結(jié)構(gòu)示意圖; 圖2為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的本地側(cè)裝置結(jié)構(gòu)示意圖; 圖3為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法流程圖; 圖4為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的日志同步流程圖; 圖5為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的日志接收流程圖; 圖6為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的磁盤鏡像流程圖; 圖7為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的恢復(fù)流程圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的和優(yōu)點(diǎn)更清楚,下面結(jié)合附圖對本發(fā)明實(shí)施例 作進(jìn)一步的詳細(xì)說明。首先,介紹本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的裝置,包括本地側(cè)裝置 和異地側(cè)裝置。圖1為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的異地側(cè)裝置結(jié)構(gòu)示意圖,該 異地側(cè)裝置包括邏輯日志處理模塊,用于接收來自本地側(cè)裝置的邏輯日志并備份;執(zhí)行接 收的邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)。 容災(zāi)內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù)。磁盤鏡像模塊,用于將所述容突內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)備份;在所述 容災(zāi)內(nèi)存數(shù)據(jù)塊出現(xiàn)故障時,使用所述備份的數(shù)據(jù)和邏輯日志恢復(fù)所述容災(zāi) 內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)。
本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的異地側(cè)裝置,接收本地側(cè)裝 置發(fā)送的邏輯日志,將邏輯日志備份并執(zhí)行邏輯日志,從而更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù);又由于數(shù)據(jù)存儲的主體為內(nèi)存,將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)也進(jìn)行備份,在主內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用容災(zāi)內(nèi)存數(shù)據(jù)庫及時接管業(yè) 務(wù)系統(tǒng),處理業(yè)務(wù)請求,在容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用備份的數(shù)據(jù)和 邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使用容災(zāi)內(nèi)存數(shù)據(jù)庫及時接管業(yè)務(wù)系統(tǒng), 處理業(yè)務(wù)請求,從而保證了以內(nèi)存數(shù)據(jù)庫為數(shù)據(jù)主體的遠(yuǎn)程容突能力。上述本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的異地側(cè)裝置,在裝置內(nèi) 部可以包括鏡像^磁盤,或者該裝置可以直連有位于裝置外部的鏡像磁盤,鏡 像磁盤的作用為存儲所述備份的邏輯日志和容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),圖1 示出的是異地側(cè)裝置直連有鏡像磁盤的情況?;谶@種情況,該異地側(cè)裝置 中還可以進(jìn)一步包括心跳消息處理模塊,用于接收來自本地側(cè)裝置的心跳消 息,向本地側(cè)裝置返回心跳響應(yīng)消息。裝置中的磁盤鏡像模塊還可以包括執(zhí)行模塊和標(biāo)志位設(shè)置模塊。其中, 執(zhí)行模塊用于將容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)存儲到鏡像磁盤;使用鏡像磁 盤中的數(shù)據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)。標(biāo)志位設(shè)置模 塊,用于根據(jù)執(zhí)行模塊當(dāng)前是否將容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)存儲到鏡像 磁盤,設(shè)置標(biāo)識執(zhí)行模塊操作的標(biāo)志位。裝置中的邏輯日志處理模塊還可以包括收發(fā)模塊、緩存模塊、判定模 塊和數(shù)據(jù)同步模塊。收發(fā)模塊,用于接收來自本地側(cè)裝置的邏輯日志,根據(jù)判定模塊的判定結(jié) 果輸出到所述鏡#^茲盤,并輸出到所述緩存模塊;向本地側(cè)裝置返回邏輯日志 正確接收的確認(rèn)消息。緩存模塊,用于緩存來自本地的邏輯日志。數(shù)據(jù)同步模塊,用于從所述緩存模塊中讀出邏輯日志并執(zhí)行,根據(jù)執(zhí)行 結(jié)果更新所述容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中存儲的數(shù)據(jù)。判定模塊,用于根據(jù)磁盤鏡像模塊中的標(biāo)志位,得出當(dāng)前是否正在進(jìn)行
將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像磁盤的判定結(jié)果。圖2為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的本地側(cè)裝置的結(jié)構(gòu)示意圖,該裝置中包括主內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù)。邏輯日志生成模塊,用于生成針對所述主內(nèi)存數(shù)據(jù)庫模塊的業(yè)務(wù)操作的邏 輯曰志。邏輯日志處理模塊,用于從所述邏輯日志生成模塊中讀取邏輯日志,將 邏輯日志發(fā)送到異地側(cè)裝置。本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的本地側(cè)裝置,將對應(yīng)主內(nèi)存 數(shù)據(jù)庫業(yè)務(wù)操作的邏輯日志發(fā)送到異地側(cè)裝置,使異地側(cè)裝置能夠根據(jù)該邏 輯日志將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)與本地側(cè)主內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)同步,實(shí) 現(xiàn)遠(yuǎn)程容災(zāi)。上述本地側(cè)裝置還可以包括邏輯日志緩存磁盤,或該本地側(cè)裝置可以直 連一個邏輯日志緩存^f茲盤,用于接收所述邏輯日志讀取模塊備份的邏輯日志存儲,圖2示出的是本地側(cè)裝置直連邏輯日志緩存磁盤的情況?;谶@種情 況,本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的本地側(cè)裝置中可以進(jìn)一步包 括心跳消息處理模塊,裝置中的邏輯日志處理模塊可以包括邏輯日志讀取 模塊、緩存模塊、收發(fā)模塊和邏輯日志刪除模塊。邏輯日志讀取模塊,用于從所述邏輯日志生成模塊中讀取邏輯日志,根據(jù) 所述心跳消息處理模塊接收的心跳響應(yīng)消息,在和異地側(cè)裝置間通信正常時, 傳輸給緩存模塊,在和異地側(cè)裝置間通信不正常時備份。緩存模塊,用于緩存所述邏輯日志讀取模塊讀取的邏輯曰志。收發(fā)模塊,用于將緩存模塊中或者備份存儲的邏輯日志向異地側(cè)裝置發(fā)送, 接收異地側(cè)裝置返回的邏輯日志正確接收的確認(rèn)消息,所述確認(rèn)消息中包括正 確接收的邏輯日志對應(yīng)的標(biāo)識。邏輯日志刪除模塊,用于將所述收發(fā)模塊接收的確認(rèn)消息中包括的標(biāo) 識,在所述緩存模塊或邏輯日志緩存磁盤中對應(yīng)的邏輯日志刪除。
心跳消息處理模塊,用于向異地側(cè)裝置發(fā)送心跳消息,接收異地側(cè)裝置 返回的心跳響應(yīng)消息。上述本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容突的異地側(cè)裝置和本地側(cè)裝置,可 以組成本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容突的系統(tǒng)。其次,詳細(xì)介紹本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法,圖3示出了該方法的流程。在圖3所示流程開始之前,首先在本地建立主內(nèi)存數(shù)據(jù)庫,在異地建立容災(zāi)內(nèi)存數(shù)據(jù)庫。上述主內(nèi)存數(shù)據(jù)庫對應(yīng)已介紹的本地側(cè)裝置中 的主內(nèi)存數(shù)據(jù)庫模塊,而容災(zāi)內(nèi)存數(shù)據(jù)庫對應(yīng)異地側(cè)裝置中的容災(zāi)內(nèi)存數(shù)據(jù) 庫模塊。圖3所示流程包括步驟301:接收主內(nèi)存數(shù)據(jù)庫執(zhí)行業(yè)務(wù)操作后生成的邏輯日志并備份。本步驟中,本地側(cè)裝置中的邏輯日志生成模塊,在主內(nèi)存數(shù)據(jù)庫執(zhí)行業(yè) 務(wù)操作后,生成記錄已執(zhí)行的業(yè)務(wù)操作的邏輯日志,異地側(cè)裝置中的邏輯曰 志處理模塊首先接收上述邏輯日志,再對接收到的邏輯日志進(jìn)行備份。步驟302:執(zhí)行接收的邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將容 災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)備份。本步驟中,異地側(cè)裝置中的邏輯日志處理模塊執(zhí)行接收到的邏輯日志, 即可根據(jù)執(zhí)行結(jié)果獲知主內(nèi)存數(shù)據(jù)庫進(jìn)行的業(yè)務(wù)操作,對容災(zāi)內(nèi)存數(shù)據(jù)庫中 的數(shù)據(jù)進(jìn)行更新,以實(shí)現(xiàn)容災(zāi)內(nèi)存數(shù)據(jù)庫和主內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)同步,在 主內(nèi)存數(shù)據(jù)庫故障時能夠及時接管業(yè)務(wù)系統(tǒng)。將更新后的數(shù)據(jù)備份的操作, 由異地側(cè)裝置中的磁盤鏡像模塊完成,可以與上述更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的 數(shù)據(jù)異步操作,即不必每次數(shù)據(jù)更新后都立即備份,例如可以設(shè)置鏡像磁盤 間隔,定期將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)備份。步驟303:主內(nèi)存數(shù)據(jù)庫故障時,如果容災(zāi)數(shù)據(jù)庫正常,使用容災(zāi)內(nèi)存數(shù)據(jù) 庫,如果容災(zāi)數(shù)據(jù)庫故障,使用備份的數(shù)據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫, 再使用容災(zāi)數(shù)據(jù)庫。本步驟中,當(dāng)容災(zāi)內(nèi)存數(shù)據(jù)庫也出現(xiàn)故障時,異地側(cè)裝置中的磁盤鏡像模
塊可以使用備份的數(shù)據(jù)來恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,但如步驟302所述,由于將容 災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)備份與容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)更新可以為異步操作,因此 備^f分的數(shù)據(jù)可能與容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時數(shù)據(jù)的狀態(tài)并不一致,這時就需 要使用備份的邏輯日志,對備份的數(shù)據(jù)進(jìn)行更新,使這些數(shù)據(jù)與容災(zāi)內(nèi)存數(shù)據(jù) 庫出現(xiàn)故障時的狀態(tài)同步,從而實(shí)現(xiàn)將容災(zāi)內(nèi)存數(shù)據(jù)庫恢復(fù)到故障出現(xiàn)前的狀 態(tài)。本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法,使用邏輯日志同步主內(nèi)存數(shù) 據(jù)庫和容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),在主內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用容災(zāi)內(nèi) 存數(shù)據(jù)庫及時接管業(yè)務(wù)系統(tǒng),處理業(yè)務(wù)請求;又由于數(shù)據(jù)存儲的主體為內(nèi)存, 具有數(shù)據(jù)易失性的特點(diǎn),將來自主內(nèi)存數(shù)據(jù)庫的邏輯日志和容災(zāi)內(nèi)存數(shù)據(jù)庫 中的數(shù)據(jù)再進(jìn)行備份,在容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用備份的數(shù)據(jù)和邏 輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使用容災(zāi)內(nèi)存數(shù)據(jù)庫及時接管業(yè)務(wù)系統(tǒng),從 而保證了以內(nèi)存數(shù)據(jù)庫為數(shù)據(jù)主體的遠(yuǎn)程容災(zāi)能力。本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中,在異地可以進(jìn)一步 設(shè)置一個鏡像磁盤,對應(yīng)于已介紹過的異地側(cè)裝置中的鏡像磁盤,或者直連 于異地側(cè)裝置的鏡像磁盤,步驟301備份的邏輯日志和步驟302中備份的容 災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)可以為異地側(cè)裝置中的邏輯日志處理模塊將邏輯曰 志輸出到鏡像磁盤存儲,以及異地側(cè)裝置中的磁盤鏡像模塊將容災(zāi)內(nèi)存數(shù)據(jù) 庫中的數(shù)據(jù)輸出到鏡像磁盤中存儲。本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法,可以具體劃分為幾個 實(shí)施流程,包括日志同步流程、日志接收流程、磁盤鏡像流程和容災(zāi)內(nèi)存 數(shù)據(jù)庫恢復(fù)流程。在介紹上述各個具體流程之前,先介紹本發(fā)明實(shí)施例中邏輯日志存儲的 較佳實(shí)施方式。邏輯日志可以存放在共享內(nèi)存的系統(tǒng)日志表中,通過增加記錄形成緩沖 (Buffer)組,每個邏輯日志是系統(tǒng)日志表中的一條記錄,該記錄的結(jié)構(gòu)如 表一所示。Buffer頭邏輯日志邏輯曰志邏輯曰志邏輯日志表一表一 中所示的Buffer頭的結(jié)構(gòu)如表二所示,logidflagbufsize表二表二中所示的logid代表進(jìn)行業(yè)務(wù)數(shù)據(jù)操作時,申請的對應(yīng)該業(yè)務(wù)操作的邏輯日志的唯一值,當(dāng)logid大于Oxffffffff時從1開始重新分配。表二中 所示的flag表示本條記錄剩余的空間,當(dāng)剩余的空間不足以存儲邏輯日志 時,可以將flag的值設(shè)為full 。表二中所示的bufsize代表本條記錄的大小。圖4為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的日志同步流程圖, 該流程主要描述在本地如何讀取生成的邏輯日志,并發(fā)送到異地實(shí)現(xiàn)日志同 步。在本地設(shè)置緩存區(qū)和邏輯日志緩存磁盤,其中緩存區(qū)可以是上述介紹過 的共享內(nèi)存中的系統(tǒng)日志表,存儲結(jié)構(gòu)也可以如表一和表二所示,緩存區(qū)和 邏輯日志緩存磁盤,對應(yīng)已介紹過的本地側(cè)裝置中的緩存模塊和邏輯日志緩 存磁盤。圖4所示流程包括步驟401:從緩存區(qū)中讀取邏輯日志。本步驟中,緩存區(qū)中的存儲結(jié)構(gòu)可以如表一和表二所示,本地側(cè)裝置中 的邏輯日志讀取模塊,讀取執(zhí)行業(yè)務(wù)操作后由邏輯日志生成模塊生成的邏輯 曰志,存儲到緩存區(qū)中。上述讀取邏輯日志的方法可以為從flag標(biāo)識為full 的buffer中讀取邏輯日志。步驟402:監(jiān)測當(dāng)前本地和異地間的通信是否正常,在不正常時執(zhí)行步 驟403,在正常時執(zhí)行步驟405。本步驟中,監(jiān)測的方法可以具體為由本地側(cè)裝置中的心跳消息處理模 塊,定期向異地側(cè)裝置發(fā)送心跳消息,如果能夠接收到異地側(cè)裝置返回的心 跳響應(yīng),認(rèn)為本地和異地間的通信正常,否則認(rèn)為不正常。步驟403:將讀取的邏輯日志寫入邏輯日志緩存磁盤,并繼續(xù)監(jiān)測本地 和異地間的通信。本步驟中,已在步驟402中判斷本地和異地間的通信不正常,則無法將 從緩存中讀取的邏輯日志直接發(fā)送到異地側(cè),這時本地側(cè)裝置中的邏輯曰志 讀取模塊可以將讀取的邏輯日志,發(fā)送到邏輯日志緩存磁盤存儲,邏輯曰志 在邏輯日志緩存磁盤中的存儲結(jié)構(gòu)可以與在援存區(qū)中的存儲結(jié)構(gòu)相同。可以 由本地側(cè)裝置中的心跳消息處理模塊繼續(xù)檢測本地和異地間的通信是否正 常。步驟404:本地和異地間的通信恢復(fù)正常時,發(fā)送邏輯日志緩存磁盤中 的邏輯日志。本步驟中,在本地和異地間的通信恢復(fù)正常后,本地側(cè)裝置中的收發(fā)模 塊首先把通信不正常時,寫入邏輯日志緩存磁盤的邏輯日志發(fā)送到異地側(cè), 在此發(fā)送的過程中,本地側(cè)裝置中的邏輯日志讀取模塊將新讀取的邏輯日志 繼續(xù)寫入邏輯日志緩存磁盤,直到將邏輯日志緩存磁盤上的最后一個邏輯日 志發(fā)送到異地側(cè),新讀取的邏輯日志就不在寫入,而是直接發(fā)送到異地側(cè)。 除了上述發(fā)送邏輯日志的方式之外,本地側(cè)裝置中的收發(fā)模塊對緩存區(qū)和邏 輯日志緩存磁盤上的邏輯日志,也可以按照任意順序發(fā)送,異地側(cè)裝置根據(jù) 邏輯日志標(biāo)識,自主將接收到的邏輯日志進(jìn)行排序。步驟405:發(fā)送讀取的邏輯日志。本步驟中,已在步驟402中判斷本地和異地間的通信正常,則可以直接 由本地側(cè)裝置中的收發(fā)模塊從緩存區(qū)中讀取邏輯日志,發(fā)送到異地側(cè)裝置。為了防止邏輯日志占用的存儲空間過大,當(dāng)接收到異地側(cè)裝置返回的確 認(rèn)消息時,上述圖4所示流程還可以包括步驟406:接收返回的確認(rèn)消息,刪除已正確發(fā)送的邏輯日志。本步驟中,由本地側(cè)裝置中的收發(fā)模塊接收異地側(cè)裝置返回的確認(rèn)消 息,該確認(rèn)消息中可以包括已正確接收的邏輯日志的標(biāo)識,例如已經(jīng)介紹過 的邏輯日志的logid,本地側(cè)裝置中的邏輯日志刪除模塊,根據(jù)所述標(biāo)識,
將緩存區(qū)或邏輯日志緩存磁盤中對應(yīng)的邏輯日志刪除。如果發(fā)送到異地側(cè)裝 置的邏輯日志僅包括從緩存區(qū)發(fā)送的,則只需刪除緩存區(qū)中的邏輯日志,如 果發(fā)送到異地側(cè)裝置的邏輯日志還包括從邏輯日志緩存磁盤發(fā)送的,還需刪除邏輯日志緩存磁盤中的邏輯日志。刪除的方法具體可以為異地側(cè)裝置返 回的確認(rèn)消息中包括代表邏輯日志的logid,遍歷系統(tǒng)日志表,將buffer的 頭部中的flag為full,并且其中保存的最大logid小于確認(rèn)消息中攜帶的logid 的記錄刪除。以上步驟401-步驟406描述了在本地,邏輯日志的發(fā)送流程,如果從 系統(tǒng)程序?qū)用鎭砜矗梢詣?chuàng)建一個容突通信進(jìn)程,由該容災(zāi)通信進(jìn)程完成步 驟401 ~步驟406。圖5為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的日志接收流程圖, 該流程主要描述在異地,如何接收并存儲接收到的邏輯日志。圖5所示流程 包括步驟501:接收邏輯日志。本步驟中,異地側(cè)裝置中的收發(fā)模塊接收來自本地側(cè)裝置的邏輯日志。步驟502:判斷當(dāng)前是否正在進(jìn)行將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡 像磁盤,如果不是,則執(zhí)行步驟503,否則執(zhí)行步驟504。本步驟中,異地側(cè)裝置中的磁盤鏡像模塊內(nèi)部,標(biāo)志位設(shè)置模塊,根據(jù) 執(zhí)行模塊當(dāng)前是否將容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)存儲到鏡像磁盤,設(shè)置標(biāo) 識執(zhí)行模塊操作的標(biāo)志位。本步驟中的判斷由異地側(cè)裝置中的判定模塊,根 據(jù)上述磁盤鏡像模塊中的標(biāo)志位,得出當(dāng)前是否正在進(jìn)行將容災(zāi)內(nèi)存數(shù)據(jù)庫 中的數(shù)據(jù)存儲到鏡像磁盤的判定結(jié)果。步驟503:將邏輯日志寫入鏡像磁盤中當(dāng)前正常通信時的邏輯日志文件 中,然后執(zhí)行步驟505。本步驟中,異地側(cè)裝置中的收發(fā)模塊將邏輯日志寫入鏡像磁盤中,當(dāng)前 正常通信時的邏輯日志文件中,并將邏輯日志寫入緩存模塊中。步驟504:將邏輯日志寫入鏡像磁盤中當(dāng)前磁盤鏡像進(jìn)行中的邏輯日志
文件中。本步驟中,由異地側(cè)裝置中的收發(fā)模塊將邏輯日志寫入鏡像磁盤中當(dāng)前 鏡像進(jìn)行中的邏輯日志文件中,并將邏輯日志再寫入緩存模塊中。上述步驟503和步驟504中,當(dāng)前正常通信時的邏輯日志文件和當(dāng)前磁 盤鏡像進(jìn)行中的邏輯日志文件,為鏡像磁盤中的兩個文件,建立的目的是為 了區(qū)分磁盤鏡像進(jìn)行之前和進(jìn)行中,邏輯日志在鏡像磁盤中的不同存儲位置。步驟505:發(fā)送邏輯日志正確接收的確認(rèn)消息,該消息中可以攜帶已正 確接收的邏輯日志的標(biāo)識,例如logid。本地側(cè)裝置接收到該確認(rèn)消息后, 可以將異地側(cè)裝置已正確接收的邏輯日志刪除,以節(jié)省存儲空間。本步驟中,異地側(cè)裝置中的收發(fā)模塊,向本地側(cè)裝置返回邏輯日志正確 接收的確認(rèn)消息。步驟506:執(zhí)行邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。本步驟中,異地側(cè)裝置中的數(shù)據(jù)同步模塊,從緩存模塊中讀取邏輯日志 并執(zhí)行,用執(zhí)行的結(jié)果更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。上述步驟501 ~步驟506描述了異地的邏輯日志接收流程,如果從系統(tǒng) 程序?qū)用?,可以?chuàng)建容災(zāi)通信進(jìn)程、數(shù)據(jù)同步進(jìn)程和磁盤鏡像進(jìn)程。其中步 驟501、步驟503、步驟504和步驟505由容災(zāi)通信進(jìn)程完成;步驟506由 數(shù)據(jù)同步進(jìn)程完成;而將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像磁盤,可以由磁盤 鏡像完成,因此步驟502中的判斷步驟可以由容災(zāi)通信進(jìn)程和磁盤鏡像進(jìn)程 共同完成,例如磁盤鏡像進(jìn)程設(shè)置一個握手標(biāo)志位,由容災(zāi)通信進(jìn)程與磁盤 鏡像進(jìn)程握手,根據(jù)標(biāo)志位來判斷當(dāng)前是否正在進(jìn)行將容災(zāi)內(nèi)存數(shù)據(jù)庫中的 數(shù)據(jù)存儲到鏡像磁盤。圖6為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的磁盤鏡像流程圖, 該流程主要描述在異地,如何將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像磁盤 中。步驟601:將容突內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)形成鏡像文件。(ID)作為文件名,形成多個鏡像文件,上述形成鏡像文件,可以是預(yù)設(shè)鏡 像時間間隔,按照該鏡像時間間隔定期將容突內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)形成鏡像 文件,由異地側(cè)裝置中的磁盤鏡像模塊完成。步驟602:將鏡像文件寫入鏡像磁盤中。本步驟中,還可以按照步驟601中設(shè)置的鏡像時間間隔,在鏡像文件形 成后,由異地側(cè)裝置中的磁盤鏡像模塊將鏡像文件寫入鏡像磁盤中。在將鏡 像文件寫入鏡像磁盤的過程中,將當(dāng)前正常通信時的邏輯日志文件改名到舊 目錄下,上述舊目錄是為了標(biāo)識磁盤鏡像的時間點(diǎn)而設(shè)置,即開始磁盤鏡像 時,就將當(dāng)前正常通信時的邏輯日志文件改名到舊目錄下,在后續(xù)步驟中, 如果磁盤鏡像成功,則將舊目錄下的當(dāng)前正常通信時的邏輯日志文件刪除, 如果-茲盤鏡像失敗,可以將舊目錄下當(dāng)前正常通信時的邏輯日志文件恢復(fù)。步驟603:鏡像成功時,將鏡像前的邏輯日志文件和鏡像文件從鏡像磁 盤中刪除,鏡像失敗時,將上一次鏡像成功的鏡像文件作為當(dāng)前鏡像文件。本步驟中,邏輯日志在鏡像磁盤中的存儲位置,根據(jù)鏡像正在進(jìn)行與否 會有所不同,這里的鏡像前的邏輯日志文件,指的就是當(dāng)前正常通信時的邏 輯日志文件,而刪除指的是將當(dāng)前正常通信時的邏輯日志文件和已存儲的鏡 像文件從鏡像磁盤中刪除,也可以將此從鏡像磁盤中刪除的文件另外備份到 單獨(dú)的磁盤中,而釋放鏡像磁盤的存儲空間。當(dāng)前鏡像磁盤進(jìn)行中的邏輯曰 志文件,在下一次寫入邏輯日志時,將作為正常通信時的邏輯日志文件存儲 新寫入的邏輯日志文件,當(dāng)新的石茲盤鏡像過程又開始時,可以重新建立一個 文件作為磁盤鏡像進(jìn)行中的邏輯日志文件,存儲磁盤鏡像過程中新寫入的邏 輯曰志。上述步驟601 ~步驟603描述了異地的,茲盤鏡像流程。從系統(tǒng)程序?qū)用?來看,步驟601 ~步驟603由創(chuàng)建的磁盤鏡像進(jìn)程完成,該磁盤鏡像進(jìn)程與 圖5所示流程中設(shè)置的磁盤鏡像進(jìn)程相同。圖7為本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法中的容災(zāi)內(nèi)存數(shù)據(jù)庫
恢復(fù)流程圖,主要描述了在異地,當(dāng)容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,如何使用 鏡像磁盤中存儲的數(shù)據(jù)和邏輯日志恢復(fù)容突內(nèi)存數(shù)據(jù)庫,使之能夠及時恢復(fù) 并接管業(yè)務(wù)系統(tǒng),處理業(yè)務(wù)請求。圖7所示流程均由異地側(cè)裝置中的磁盤鏡像模塊完成,該流程包括步驟701:將鏡像磁盤中存儲的容災(zāi)內(nèi)存數(shù)據(jù)庫數(shù)據(jù)直接恢復(fù)到容災(zāi)內(nèi) 存數(shù)據(jù)庫中。步驟702:根據(jù)恢復(fù)到容突內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)重建索引。 步驟703:根據(jù)鏡像磁盤中存儲的邏輯日志,更新恢復(fù)后的容災(zāi)內(nèi)存數(shù) 據(jù)庫中的數(shù)據(jù)。本步驟中,當(dāng)容災(zāi)內(nèi)存數(shù)據(jù)庫也出現(xiàn)故障時,可以使用鏡像石茲盤中存儲 的數(shù)據(jù)來恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,但由于將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像磁 盤與容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)更新往往為異步操作,因此鏡像磁盤中存儲的 數(shù)據(jù)可能與容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時數(shù)據(jù)的狀態(tài)并不一致,這時就需要結(jié) 合鏡像磁盤中存儲的邏輯日志,對由鏡像磁盤恢復(fù)的數(shù)據(jù)進(jìn)行更新,使這些 數(shù)據(jù)與容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時的狀態(tài)同步,從而實(shí)現(xiàn)將容災(zāi)內(nèi)存數(shù)據(jù)庫 恢復(fù)到故障出現(xiàn)前的狀態(tài)。步驟701 ~步驟703描述了容突內(nèi)存數(shù)據(jù)庫恢復(fù)流程,如果在系統(tǒng)程序 層面來看,步驟701 步驟703仍由磁盤鏡像進(jìn)程完成,該磁盤鏡像進(jìn)程與 圖5和圖6所示流程中的^f茲盤鏡像進(jìn)程相同。綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)方法,其特征在于,在本地建立主內(nèi)存數(shù)據(jù)庫,在異地建立容災(zāi)內(nèi)存數(shù)據(jù)庫,該方法還包括接收主內(nèi)存數(shù)據(jù)庫執(zhí)行業(yè)務(wù)操作后生成的邏輯日志并備份;執(zhí)行所述邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)備份;主內(nèi)存數(shù)據(jù)庫故障時,如果容災(zāi)數(shù)據(jù)庫正常,使用容災(zāi)內(nèi)存數(shù)據(jù)庫,如果容災(zāi)數(shù)據(jù)庫故障,使用備份的數(shù)據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使用容災(zāi)數(shù)據(jù)庫。
2、 如權(quán)利要求l所述的方法,其特征在于,在異地設(shè)置鏡^^茲盤;所述將 邏輯日志備份為將所述邏輯日志存儲到所述鏡像磁盤;所述將容災(zāi)內(nèi)存數(shù)據(jù) 庫中的數(shù)據(jù)備份為將容突內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)存儲到所述鏡^^茲盤。
3、 如權(quán)利要求1或2所述的方法,其特征在于,在本地建立緩存區(qū)和邏輯 曰志緩存磁盤;所述接收主內(nèi)存數(shù)據(jù)庫邏輯日志為在本地和異地間的通信正常時,接收來自所述本地緩存區(qū)的邏輯日志;在 通信故障時,等待通信恢復(fù)后,接收來自所述本地邏輯日志緩存^茲盤和緩存區(qū) 的邏輯日志,所述邏輯日志緩存-茲盤中的邏輯日志包括,本地和異地通信不正 常時存儲的邏輯日志,以及本地和異地通信恢復(fù)但邏輯日志緩存磁盤中的邏輯 曰志沒有全部被接收之前,新存儲的邏輯日志。
4、 如權(quán)利要求2所述的方法,其特征在于,所述將邏輯日志存儲到鏡^^茲 盤之后、執(zhí)行邏輯日志之前進(jìn)一步包括向本地返回邏輯日志正確接收的確認(rèn)消息,所述確認(rèn)消息中包括已經(jīng)正確 接收的邏輯日志的標(biāo)識,供本地刪除所述標(biāo)識對應(yīng)的邏輯日志。
5、 如權(quán)利要求2所述的方法,其特征在于,所述將邏輯日志存儲到鏡像磁 盤之前進(jìn)一步包括判斷當(dāng)前是否正在進(jìn)行將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像 磁盤;所述將邏輯日志存儲到鏡像^茲盤為 如果當(dāng)前正在進(jìn)行將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像^磁盤,將邏輯日志存 儲到鏡像磁盤中當(dāng)前磁盤鏡像進(jìn)行中的邏輯日志文件,否則,將邏輯日志存儲 到鎮(zhèn)/f^磁盤中當(dāng)前正常通信時的邏輯日志文件。
6、 如權(quán)利要求5所述的方法,其特征在于,所述將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù) 據(jù)存儲到鏡^^茲盤為將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)定期備份為鏡像文件,并將 鏡像文件寫入鏡像磁盤。
7、 如權(quán)利要求6所述的方法,其特征在于,所述將鏡像文件寫入鏡像^茲盤 之后進(jìn)一步包括如果寫入成功,將鏡傳J茲盤中當(dāng)前正常通信時的邏輯日志文件,以及鏡像 磁盤中已存儲的鏡像文件刪除,將所述當(dāng)前磁盤鏡像進(jìn)行中的邏輯日志文件更 改為下一次寫入邏輯日志時的正常通信時的邏輯日志文件,并新建下一次寫入 邏輯日志時的磁盤鏡像進(jìn)行中的邏輯日志文件;如果寫入失敗,將已存儲的鏡 像文件作為當(dāng)前鏡像文件。
8、 如權(quán)利要求l所述的方法,其特征在于,在異地建立緩存區(qū),所述接收 邏輯日志并備份之后,執(zhí)行邏輯日志之前進(jìn)一步包括將邏輯日志存儲到所述 緩存區(qū)。
9、 如權(quán)利要求2所述的方法,其特征在于,所述使用備份的數(shù)據(jù)和邏輯曰 志恢復(fù)容災(zāi)內(nèi)存凄t據(jù)庫為將鏡像》茲盤中的數(shù)據(jù)恢復(fù)到容災(zāi)內(nèi)存數(shù)據(jù)庫中; 使用所述恢復(fù)的數(shù)據(jù)重建索引;使用鏡^^茲盤中的邏輯日志更新恢復(fù)后的容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。
10、 一種內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)異地側(cè)裝置,其特征在于,該裝置包括 邏輯日志處理模塊,用于接收來自本地側(cè)裝置的邏輯日志并備份;執(zhí)行接收的邏輯日志,更新容突內(nèi)存數(shù)椐庫模塊中的數(shù)據(jù); 容災(zāi)內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù);磁盤鏡像模塊,用于將所述容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)備份;在所述容 災(zāi)內(nèi)存數(shù)據(jù)庫模塊出現(xiàn)故障時,使用所述備份的數(shù)據(jù)和邏輯日志恢復(fù)所述容災(zāi) 內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù)。
11、 如權(quán)利要求IO所述的裝置,其特征在于,該裝置中還包括鏡像;茲盤, 用于接收所述邏輯日志處理模塊輸出的邏輯日志存儲,接收所述^ 茲盤鏡像模塊 輸出的容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)存儲。
12、 如權(quán)利要求11所述的裝置,其特征在于,所述^f茲盤鏡像模塊包括執(zhí) 行模塊和標(biāo)志位設(shè)置模塊;所述執(zhí)行模塊,用于將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到所述鏡像^茲盤;在所述 容災(zāi)數(shù)據(jù)庫模塊出現(xiàn)故障時,使用所述鏡^^茲盤中的邏輯日志和數(shù)據(jù),恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫模塊中的數(shù)據(jù);所述標(biāo)志位設(shè)置模塊,用于根據(jù)執(zhí)行模塊當(dāng)前是否將容災(zāi)內(nèi)存數(shù)據(jù)庫模塊 中的數(shù)據(jù)存儲到鏡像石茲盤,設(shè)置標(biāo)識執(zhí)行模塊操作的標(biāo)志位。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述邏輯日志處理模塊包括 收發(fā)模塊、緩存模塊、判定模塊和數(shù)據(jù)同步模塊;所述收發(fā)模塊,用于接收來自本地側(cè)裝置的邏輯日志,根據(jù)判定模塊的判 定結(jié)果輸出到所述鏡^^f茲盤,并輸出到所述H存模塊;向本地側(cè)裝置返回邏輯 日志正確接收的確認(rèn)消息;所述緩存模塊,用于緩存來自本地側(cè)裝置的邏輯日志;所述判定模塊,用于根據(jù)磁盤鏡像模塊中的標(biāo)志位,得出當(dāng)前是否正在進(jìn) 行將容災(zāi)數(shù)據(jù)庫中的數(shù)據(jù)存儲到鏡像磁盤的判定結(jié)果;所述數(shù)據(jù)同步模塊,用于從所述緩存模塊中讀出邏輯日志并執(zhí)行,根據(jù)執(zhí) 行結(jié)果更新所述容災(zāi)內(nèi)存數(shù)據(jù)庫^t塊中存儲的數(shù)據(jù)。
14、 如權(quán)利要求IO所述的裝置,其特征在于,該裝置中進(jìn)一步包括心跳消 息處理模塊,用于接收來自本地側(cè)裝置的心跳消息,向本地側(cè)裝置返回心跳響 應(yīng)消息。
15、 一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)本地側(cè)裝置,其特征在于,該裝置包括 主內(nèi)存數(shù)據(jù)庫模塊,用于存儲數(shù)據(jù);邏輯日志生成模塊,用于生成針對所述主內(nèi)存數(shù)據(jù)庫模塊的業(yè)務(wù)操作的邏輯曰志;邏輯日志處理模塊,用于從所述邏輯日志生成模塊中讀取邏輯日志,將邏 輯日志發(fā)送到異地側(cè)裝置。
16、 如權(quán)利要求15所述的裝置,其特征在于,該裝置中進(jìn)一步包括心跳消息處理才莫塊,用于向異地側(cè)裝置發(fā)送心跳消息,接收異地側(cè)裝置返回的心跳響 應(yīng)消息。
17、 如權(quán)利要求16所述的裝置,其特征在于,所述邏輯日志處理才莫塊包括 邏輯日志讀取模塊、緩存模塊、收發(fā)模塊和邏輯日志刪除模塊;所述邏輯日志讀取模塊,用于從所述邏輯日志生成模塊中讀取邏輯日志, 根據(jù)所述心跳消息處理模塊接收的心跳響應(yīng)消息,在和異地側(cè)裝置間通信正常 時,傳輸給緩存模塊,在和異地側(cè)裝置間通信不正常時備份;所述緩存模塊,用于緩存所述邏輯日志讀取模塊讀取的邏輯日志;所述收發(fā)模塊,用于將緩存模塊中或者備份的邏輯日志向異地側(cè)裝置發(fā)送, 接收異地側(cè)裝置返回的邏輯日志正確接收的確認(rèn)消息,所述確認(rèn)消息中包括正 確接收的邏輯日志對應(yīng)的標(biāo)識;所述邏輯日志刪除模塊,用于將所述收發(fā)模塊接收的確認(rèn)消息中包括的標(biāo) 識,將所述緩存模塊中或備份的邏輯日志中對應(yīng)的邏輯日志刪除。
18、 如權(quán)利要求17所述的裝置,其特征在于,該裝置內(nèi)部進(jìn)一步包括邏輯 日志緩存磁盤,用于接收所述邏輯日志讀取模塊備份的邏輯日志存儲。
19、 一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的系統(tǒng),其特征在于,該系統(tǒng)包括本地側(cè) 裝置和異地側(cè)裝置;所述本地側(cè)裝置中包括存儲數(shù)據(jù)的主內(nèi)存數(shù)據(jù)庫,異地側(cè) 裝置中包括存儲數(shù)據(jù)的容災(zāi)內(nèi)存數(shù)據(jù)庫;所述本地側(cè)裝置,用于生成針對所述主內(nèi)存數(shù)據(jù)庫的業(yè)務(wù)操作的邏輯日志, 將所述邏輯日志發(fā)送到異地側(cè)裝置;所述異地側(cè)裝置,用于接收來自所述本地側(cè)裝置的邏輯日志并備份;執(zhí)行 接收的邏輯日志,更新所述容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將所述容災(zāi)內(nèi)存數(shù)據(jù)庫 中的數(shù)據(jù)備份;在所述容災(zāi)內(nèi)存數(shù)據(jù)庫出現(xiàn)故障時,使用所述備份的數(shù)據(jù)和邏輯日志恢復(fù)所述容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的方法,該方法包括接收主內(nèi)存數(shù)據(jù)庫執(zhí)行業(yè)務(wù)操作后生成的邏輯日志并備份;執(zhí)行所述邏輯日志,更新容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),將容災(zāi)內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)備份;主內(nèi)存數(shù)據(jù)庫故障時,如果容災(zāi)數(shù)據(jù)庫正常,使用容災(zāi)內(nèi)存數(shù)據(jù)庫,如果容災(zāi)數(shù)據(jù)庫故障,使用備份的數(shù)據(jù)和邏輯日志恢復(fù)容災(zāi)內(nèi)存數(shù)據(jù)庫,再使用容災(zāi)數(shù)據(jù)庫。本發(fā)明還公開了一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的異地側(cè)裝置、一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的本地側(cè)裝置和一種內(nèi)存數(shù)據(jù)庫遠(yuǎn)程容災(zāi)的系統(tǒng)。應(yīng)用本發(fā)明,能夠以內(nèi)存作為數(shù)據(jù)存儲主體,實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫的遠(yuǎn)程容災(zāi)。
文檔編號G06F17/30GK101118509SQ20071014958
公開日2008年2月6日 申請日期2007年9月12日 優(yōu)先權(quán)日2007年9月12日
發(fā)明者周丹弟 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1