本申請涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種數(shù)據(jù)庫容災(zāi)方法和裝置。
背景技術(shù):
:隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來越多的數(shù)據(jù)存儲在數(shù)據(jù)庫中。為確保數(shù)據(jù)不丟失,數(shù)據(jù)擁有方通常會部署多個數(shù)據(jù)中心,以實現(xiàn)數(shù)據(jù)的備災(zāi)?!皟傻厝行摹笔悄壳拜^為典型的容災(zāi)組網(wǎng)架構(gòu),可在主城市部署兩個數(shù)據(jù)中心,在備災(zāi)城市部署一個數(shù)據(jù)中心。其中,主城市的兩個數(shù)據(jù)中心中有一個數(shù)據(jù)中心可作為“主庫”運轉(zhuǎn),另一個數(shù)據(jù)中心作為“同城備災(zāi)庫”,而備災(zāi)城市的數(shù)據(jù)中心為“異地備災(zāi)庫”。然而,當“主庫”故障時,無論是“同城備災(zāi)庫”還是“異地備災(zāi)庫”,均和“主庫”之間有一定的數(shù)據(jù)延遲,進而導(dǎo)致數(shù)據(jù)丟失。技術(shù)實現(xiàn)要素:有鑒于此,本申請?zhí)峁┮环N數(shù)據(jù)庫容災(zāi)方法和裝置。具體地,本申請是通過如下技術(shù)方案實現(xiàn)的:一種數(shù)據(jù)庫容災(zāi)方法,所述方法應(yīng)用在容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例上,所述容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間基于分布式選舉協(xié)議進行數(shù)據(jù)同步,所述方法包括有:接收到來自客戶端的數(shù)據(jù)庫事務(wù);對所述數(shù)據(jù)庫事務(wù)進行處理,并根據(jù)數(shù)據(jù)庫實例列表通知容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例對所述數(shù)據(jù)庫事務(wù)進行處理;當確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。一種數(shù)據(jù)庫容災(zāi)裝置,所述裝置應(yīng)用在容災(zāi)組網(wǎng)中運行數(shù)據(jù)庫實例邏輯的服務(wù)器上,所述容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間基于分布式選舉協(xié)議進行數(shù)據(jù)同步,所述裝置包括有:接收單元,接收到來自客戶端的數(shù)據(jù)庫事務(wù);處理單元,對所述數(shù)據(jù)庫事務(wù)進行處理,并根據(jù)數(shù)據(jù)庫實例列表通知容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例對所述數(shù)據(jù)庫事務(wù)進行處理;返回單元,當確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。由以上描述可以看出,本申請容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間可基于分布式選舉協(xié)議進行數(shù)據(jù)同步,任一數(shù)據(jù)庫實例在接收到來自客戶端的數(shù)據(jù)庫事務(wù)后,如果確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,就可向客戶端返回處理完畢的消息,無需等待全部數(shù)據(jù)庫實例均執(zhí)行完畢,響應(yīng)速率快,同時,基于分布式選舉協(xié)議可以確保各個數(shù)據(jù)庫實例之間的數(shù)據(jù)一致,不丟失。附圖說明圖1是本申請一示例性實施例示出的一種數(shù)據(jù)庫容災(zāi)方法的流程示意圖。圖2是本申請一示例性實施例示出的一種容災(zāi)組網(wǎng)架構(gòu)圖。圖3是本申請一示例性實施例示出的另一種數(shù)據(jù)庫容災(zāi)方法的流程示意圖。圖4是本申請一示例性實施例示出的一種用于數(shù)據(jù)庫容災(zāi)裝置的一結(jié)構(gòu)示意圖。圖5是本申請一示例性實施例示出的一種數(shù)據(jù)庫容災(zāi)裝置的框圖。具體實施方式這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。應(yīng)當理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應(yīng)于確定”。相關(guān)技術(shù)中,可以采用以下幾種模式進行主備數(shù)據(jù)庫之間的數(shù)據(jù)同步。一、最大保護模式(maximumprotection)。數(shù)據(jù)庫事務(wù)一定在強同步至所有備庫時,才會向客戶端返回應(yīng)答消息。然而,采用這樣的模式,響應(yīng)速率低下,用戶體驗較差。同時,當任一數(shù)據(jù)庫故障時,均會對服務(wù)造成影響,無法保證高可用性。二、最大性能模式(maximumperformance)。主庫處理完畢數(shù)據(jù)庫事務(wù)后即可向客戶端返回應(yīng)答消息,后續(xù)可異步將數(shù)據(jù)庫事務(wù)復(fù)制到備庫中。然而,采用這樣的模式,無法確保不丟失數(shù)據(jù),比如:主庫故障時,可能存在未復(fù)制到備庫中的數(shù)據(jù)庫事務(wù)。三、最大可用模式(maximumavailability)。將數(shù)據(jù)庫事務(wù)盡量同步到備庫中。當主備數(shù)據(jù)庫均正常運轉(zhuǎn)時,可采用最大保護模式,否則切換為最大性能模式。然而,采用這樣的模式,也無法確保不丟失數(shù)據(jù)。針對上述問題,本申請?zhí)峁┮环N數(shù)據(jù)庫容災(zāi)方案,可基于分布式選舉協(xié)議(paxos協(xié)議)進行數(shù)據(jù)同步,確保數(shù)據(jù)的一致性,并可提高響應(yīng)速率。圖1是本申請一示例性實施例示出的一種數(shù)據(jù)庫容災(zāi)方法的流程示意圖。在本實施例中,所述數(shù)據(jù)庫容災(zāi)方法可以應(yīng)用在容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例上。其中,所述容災(zāi)組網(wǎng)中通常部署有多個數(shù)據(jù)中心,每個數(shù)據(jù)中心部署有一個或多個數(shù)據(jù)庫實例,以實現(xiàn)數(shù)據(jù)災(zāi)備。其中,所述數(shù)據(jù)庫實例是一個邏輯意義上的概念,可用于存儲數(shù)據(jù)、提供數(shù)據(jù)庫事務(wù)服務(wù)等,硬件架構(gòu)上通常包括有用于存儲數(shù)據(jù)的物理介質(zhì)、用于執(zhí)行數(shù)據(jù)庫事務(wù)服務(wù)邏輯的處理器等。請參考圖1,所述數(shù)據(jù)庫容災(zāi)方法可以包括以下步驟:步驟101,接收到來自客戶端的數(shù)據(jù)庫事務(wù)。在本實施例中,容災(zāi)組網(wǎng)中的各個數(shù)據(jù)庫實例均可為客戶端提供數(shù)據(jù)庫事務(wù)服務(wù),各數(shù)據(jù)庫實例之間不存在主備的概念。在一個例子中,來自客戶端的數(shù)據(jù)庫事務(wù)可以基于負載均衡策略被分配至各個數(shù)據(jù)庫實例中。在另一個例子中,來自客戶端的數(shù)據(jù)庫事務(wù)也可以被分配至距離其較近的數(shù)據(jù)庫實例中,本申請對此不作特殊限制。步驟102,對所述數(shù)據(jù)庫事務(wù)進行處理,并根據(jù)數(shù)據(jù)庫實例列表通知容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例對所述數(shù)據(jù)庫事務(wù)進行處理。在本實施例中,每個數(shù)據(jù)庫實例中均可以維護一個數(shù)據(jù)庫實例列表,該數(shù)據(jù)庫實例列表包括容災(zāi)組網(wǎng)中各個數(shù)據(jù)庫實例的信息,比如:數(shù)據(jù)庫實例的通信地址、數(shù)據(jù)庫實例id等。基于前述步驟101,數(shù)據(jù)庫實例在接收到來自客戶端的數(shù)據(jù)庫事務(wù)后,可以對所述數(shù)據(jù)庫事務(wù)進行處理,比如:可以采用分布式的方式實現(xiàn)對所述數(shù)據(jù)庫事務(wù)的處理。另一方面,數(shù)據(jù)庫實例還可以根據(jù)所述數(shù)據(jù)庫實例列表通知容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例對所述數(shù)據(jù)庫事務(wù)進行處理,并可以在處理完畢后返回處理完畢的消息。比如:可以將所述數(shù)據(jù)庫事務(wù)以sql語句的形式發(fā)送給容災(zāi)組網(wǎng)中的其他數(shù)據(jù)庫實例,其他數(shù)據(jù)庫在接收到所述數(shù)據(jù)庫事務(wù)后,可以對所述數(shù)據(jù)庫事務(wù)進行處理。又比如:還可以在完成對所述數(shù)據(jù)庫事務(wù)的處理后,將本次處理的相關(guān)數(shù)據(jù)以數(shù)據(jù)庫重做日志(redolog)的形式發(fā)送給容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例,其他數(shù)據(jù)庫實例在接收到該重做日志后,可以根據(jù)所述重做日志同步本次數(shù)據(jù)庫事務(wù)處理涉及到的相關(guān)數(shù)據(jù),以實現(xiàn)對所述數(shù)據(jù)庫事務(wù)的處理。在一個例子中,所述數(shù)據(jù)庫實例列表中包括有容災(zāi)組網(wǎng)中所有的數(shù)據(jù)庫實例,以及各數(shù)據(jù)庫實例當前的狀態(tài),比如:正常狀態(tài)或者故障狀態(tài)。在這種情況下,可以將接收到的來自客戶端的數(shù)據(jù)庫事務(wù)發(fā)送給數(shù)據(jù)庫實例列表中狀態(tài)為正常的數(shù)據(jù)庫實例。在另一個例子中,所述數(shù)據(jù)庫實例列表中也可以僅存儲有容災(zāi)組網(wǎng)中正常狀態(tài)的數(shù)據(jù)庫實例。在這種情況下,可以將接收到的來自客戶端的數(shù)據(jù)庫事務(wù)發(fā)送給數(shù)據(jù)庫實例列表中所有的數(shù)據(jù)庫實例。步驟103,當確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。在本實施例中,容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間可基于分布式選舉協(xié)議實現(xiàn)數(shù)據(jù)同步?;诜植际竭x舉協(xié)議,容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例可分為三種角色,分別為:acceptor、proposer以及l(fā)earner。分布式選舉協(xié)議主要分為兩個階段,第一個階段是prepare階段,第二個階段是accept階段。具體地,在prepare階段,proposer角色的數(shù)據(jù)庫實例(后續(xù)簡稱為proposer)可向所有acceptor角色的數(shù)據(jù)庫實例(后續(xù)簡稱為acceptor)發(fā)送prepare申請訪問權(quán),并攜帶一個提案號(epoch),acceptor賦予訪問權(quán)或拒絕,并且返回該acceptor已經(jīng)接受的值和對應(yīng)的提案號。如果proposer獲得超過半數(shù)acceptor的訪問權(quán),那么會進入accept階段。在accept階段,如果所有的acceptor返回值都為空,proposer可向獲取到訪問權(quán)的acceptor發(fā)送攜帶自己數(shù)據(jù)和自己epoch號的請求。如果proposer在第一階段獲得某些acceptor的返回值不為空,則可將epoch號最大的提案號對應(yīng)的數(shù)據(jù)作為自己的預(yù)設(shè)數(shù)據(jù),并連同自己的提案號一起攜帶在請求中發(fā)送給acceptor。對于acceptor而言,當它接收到proposer的請求時,可通過一系列規(guī)則來決定是否接受proposer的數(shù)據(jù)。在分布式選舉協(xié)議中,learner角色的數(shù)據(jù)庫實例可學(xué)習已學(xué)習過的數(shù)據(jù)和epoch號。在本實施例中,當容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例已完成對所述數(shù)據(jù)庫事務(wù)的處理時,基于所述分布式選舉協(xié)議,可以確保容災(zāi)組網(wǎng)中各數(shù)據(jù)庫實例的數(shù)據(jù)一致性,因此,接收到客戶端數(shù)據(jù)庫事務(wù)的數(shù)據(jù)庫實例可以在容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例已完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。由以上描述可以看出,本申請容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間可基于分布式選舉協(xié)議進行數(shù)據(jù)同步,任一數(shù)據(jù)庫實例在接收到來自客戶端的數(shù)據(jù)庫事務(wù)后,如果確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理,就可向客戶端返回處理完畢的消息,無需等待全部數(shù)據(jù)庫實例均執(zhí)行完畢,響應(yīng)速率快,同時,基于分布式選舉協(xié)議可以確保各個數(shù)據(jù)庫實例之間的數(shù)據(jù)一致,不丟失。下面結(jié)合具體的應(yīng)用場景來描述本申請的實現(xiàn)過程。圖2是本申請一示例性實施例示出的一種容災(zāi)組網(wǎng)架構(gòu)圖。請參考圖2,示出了一種“兩地三中心”的容災(zāi)組網(wǎng)架構(gòu)。在該架構(gòu)中,上海為主城市,部署有數(shù)據(jù)中心1和數(shù)據(jù)中心2,數(shù)據(jù)中心1和數(shù)據(jù)中心2中均部署有兩個數(shù)據(jù)庫實例。深圳是備災(zāi)城市,部署有數(shù)據(jù)中心3,數(shù)據(jù)中心3中部署有數(shù)據(jù)庫實例5。在該架構(gòu)中,一共部署有5個數(shù)據(jù)庫實例,這5個數(shù)據(jù)庫實例之間基于分布式選舉協(xié)議進行數(shù)據(jù)同步。數(shù)據(jù)庫實例id數(shù)據(jù)庫實例ip地址數(shù)據(jù)庫實例狀態(tài)1ip1正常2ip2正常3ip3正常4ip4正常5ip5正常表1在本實施例中,每個數(shù)據(jù)庫實例中均維護有一張該容災(zāi)組網(wǎng)的數(shù)據(jù)庫實例列表,請參考圖1的實例,所述數(shù)據(jù)庫實例列表中通常包括有數(shù)據(jù)庫實例id、數(shù)據(jù)庫實例地址、數(shù)據(jù)庫實例狀態(tài)等信息。值得注意的是,表1僅為示例性的數(shù)據(jù)庫實例列表,在實際實現(xiàn)中,也可以不組織這樣的表格,本申請對此不作特殊限制。請參考圖3,以數(shù)據(jù)庫實例1為例,數(shù)據(jù)庫實例1實現(xiàn)數(shù)據(jù)庫容災(zāi)方法可以包括以下步驟:步驟301,數(shù)據(jù)庫實例1接收到來自客戶端的數(shù)據(jù)庫事務(wù)。步驟302,數(shù)據(jù)庫實例1對所述數(shù)據(jù)庫事務(wù)進行處理,并通知容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例2至數(shù)據(jù)庫實例5對所述數(shù)據(jù)庫事務(wù)進行處理。在本實施例中,基于表1所示的數(shù)據(jù)庫實例列表,當前容災(zāi)組網(wǎng)中所有的數(shù)據(jù)庫實例均正常運轉(zhuǎn),數(shù)據(jù)庫實例1可以將所述數(shù)據(jù)庫事務(wù)發(fā)送給數(shù)據(jù)庫實例2至數(shù)據(jù)庫實例5。步驟303,數(shù)據(jù)庫實例1在接收到任一數(shù)據(jù)庫實例返回的數(shù)據(jù)庫事務(wù)處理完畢的消息時,確定該數(shù)據(jù)庫實例已完成對所述數(shù)據(jù)庫事務(wù)的處理。步驟304,數(shù)據(jù)庫實例1在確定容災(zāi)組網(wǎng)中3個數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。在本實施例中,請繼續(xù)參考圖2,由于數(shù)據(jù)庫實例2與數(shù)據(jù)庫實例1同屬于數(shù)據(jù)中心1,一般而言,數(shù)據(jù)庫實例2的響應(yīng)速度最快。數(shù)據(jù)庫實例3和數(shù)據(jù)庫實例4所屬的數(shù)據(jù)中心2與數(shù)據(jù)中心1是同城數(shù)據(jù)中心,響應(yīng)時間通常在1到2毫秒,響應(yīng)速度次快。而數(shù)據(jù)庫實例5位于深圳,由于距離上海較遠,響應(yīng)時間通常在40至60毫秒,響應(yīng)速度最慢。在本實施例中,假設(shè),數(shù)據(jù)庫實例1最先接收到數(shù)據(jù)庫實例2的處理完畢消息,然后接收到數(shù)據(jù)庫實例3的處理完畢消息,如果數(shù)據(jù)庫實例1也已處理完畢所述數(shù)據(jù)庫事務(wù),數(shù)據(jù)庫實例1就可以向客戶端返回處理完畢的消息,無需等待數(shù)據(jù)庫實例4和數(shù)據(jù)庫實例5的響應(yīng),大大提高的響應(yīng)速率,同時又可確保數(shù)據(jù)一致性??蛇x的,在另一個例子中,當容災(zāi)組網(wǎng)中任一數(shù)據(jù)庫實例故障時,其他數(shù)據(jù)庫實例在經(jīng)多數(shù)派投票同意后,可以將數(shù)據(jù)庫實例列表中故障數(shù)據(jù)庫實例的狀態(tài)更新為故障。假設(shè),數(shù)據(jù)中心2發(fā)生火災(zāi),導(dǎo)致數(shù)據(jù)庫實例3和數(shù)據(jù)庫實例4故障,該容災(zāi)組網(wǎng)中的其他數(shù)據(jù)庫實例可以通過數(shù)據(jù)庫實例之間的?;顖笪拇_定得知故障,在得知該故障事件后,可以基于分布式選舉協(xié)議對所述故障事件進行投票,投票結(jié)果包括:同意或不同意。依據(jù)當前的數(shù)據(jù)庫實例列表,容災(zāi)組網(wǎng)中5個數(shù)據(jù)庫實例均為正常狀態(tài),則在容災(zāi)組網(wǎng)中的5個數(shù)據(jù)庫實例中,如果3個數(shù)據(jù)庫實例同意所述故障事件,比如:數(shù)據(jù)庫實例1、數(shù)據(jù)庫實例2以及數(shù)據(jù)庫實例5均同意所述故障事件,則可以將數(shù)據(jù)庫實例列表中數(shù)據(jù)庫實例3和數(shù)據(jù)庫實例4的狀態(tài)由正常更新為故障,形成表2所示的數(shù)據(jù)庫實例列表。值得注意的是,如果容災(zāi)組網(wǎng)中只有兩個數(shù)據(jù)庫實例同意所述故障事件,則不能對所述數(shù)據(jù)庫實例列表進行更新。數(shù)據(jù)庫實例id數(shù)據(jù)庫實例ip地址數(shù)據(jù)庫實例狀態(tài)1ip1正常2ip2正常3ip3故障4ip4故障5ip5正常表2基于圖2所示的數(shù)據(jù)庫實例列表,當數(shù)據(jù)庫實例1接收到客戶端的數(shù)據(jù)庫事務(wù)時,可以將該數(shù)據(jù)庫事務(wù)發(fā)送給數(shù)據(jù)庫實例2以及數(shù)據(jù)庫實例5。當前容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的數(shù)據(jù)庫實例一共有3個,當數(shù)據(jù)庫實例1執(zhí)行完畢所述數(shù)據(jù)庫事務(wù)并確定數(shù)據(jù)庫實例2也執(zhí)行完畢所述數(shù)據(jù)庫事務(wù)時,即3個數(shù)據(jù)庫實例中2個數(shù)據(jù)庫實例已執(zhí)行完畢所述數(shù)據(jù)庫事務(wù),數(shù)據(jù)庫實例1就可以向客戶端返回執(zhí)行完畢的消息,以實現(xiàn)數(shù)據(jù)中心級(機房級)的無損容災(zāi)能力。而在相關(guān)技術(shù)中,要想實現(xiàn)數(shù)據(jù)中心級的無損容災(zāi),通常需要在主城市部署三個或三個以上數(shù)據(jù)中心或者忍受跨城市同步的時延,采用本申請的上述方案,在主城市的數(shù)據(jù)中心部署兩個數(shù)據(jù)中心即可,大大降低了數(shù)據(jù)中心的建設(shè)成本。此外,采用本申請的上述方案,整個響應(yīng)過程無需等待位于深圳的數(shù)據(jù)庫實例5完成對所述數(shù)據(jù)庫事務(wù)的處理,避免了跨城市同步的時延,提高了數(shù)據(jù)庫實例故障時的響應(yīng)速率。另一方面,基于分布式選舉協(xié)議,可以確保數(shù)據(jù)庫實例1、數(shù)據(jù)庫實例2以及數(shù)據(jù)庫實例5之間的數(shù)據(jù)一致性。需要說明的是,在另一個例子中,數(shù)據(jù)庫實例維護的數(shù)據(jù)庫實例列表中可以僅存儲正常狀態(tài)的數(shù)據(jù)庫實例,在這樣的情況下,當確定任一數(shù)據(jù)庫實例故障時,經(jīng)多數(shù)派投票同意后也可將該故障數(shù)據(jù)庫實例從數(shù)據(jù)庫實例列表中刪除。當確定故障數(shù)據(jù)庫實例恢復(fù)正常時,同樣也需要經(jīng)多數(shù)派投票同意后,才可在數(shù)據(jù)庫實例列表中添加恢復(fù)正常的故障數(shù)據(jù)庫實例。可選的,在另一個例子中,請繼續(xù)參考圖2,為避免跨地域的網(wǎng)絡(luò)時延,上海的每個數(shù)據(jù)中心都部署有兩個數(shù)據(jù)庫實例,而這兩個數(shù)據(jù)庫實例中有一個數(shù)據(jù)庫實例的作用就是數(shù)據(jù)災(zāi)備。為降低成本,針對主城市的數(shù)據(jù)中心,可以配置一個數(shù)據(jù)庫實例用于提供數(shù)據(jù)庫事務(wù)服務(wù),另一個數(shù)據(jù)庫實例用于存儲數(shù)據(jù)庫日志,基于數(shù)據(jù)庫日志,可以恢復(fù)出數(shù)據(jù)庫數(shù)據(jù)。比如:可將數(shù)據(jù)庫實例2和數(shù)據(jù)庫實例4設(shè)置為用于存儲數(shù)據(jù)庫日志的數(shù)據(jù)庫實例。由于數(shù)據(jù)庫日志文件可以循環(huán)存儲,不占用額外的存儲空間,通過合理的部署無需增加額外的服務(wù)器,可以節(jié)省部署成本。當然,在實際應(yīng)用中,也可以在主城市的數(shù)據(jù)中心部署三個或三個以上的數(shù)據(jù)庫實例,在這樣的情況下,仍可以配置一個數(shù)據(jù)庫實例用于提供數(shù)據(jù)庫事務(wù)服務(wù),其他數(shù)據(jù)庫實例用于存儲數(shù)據(jù)庫日志。與前述數(shù)據(jù)庫容災(zāi)方法的實施例相對應(yīng),本申請還提供了數(shù)據(jù)庫容災(zāi)裝置的實施例。本申請數(shù)據(jù)庫容災(zāi)裝置的實施例可以應(yīng)用在容災(zāi)組網(wǎng)中運行數(shù)據(jù)庫實例邏輯的服務(wù)器上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在服務(wù)器的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖4所示,為本申請數(shù)據(jù)庫容災(zāi)裝置所在服務(wù)器的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之外,實施例中裝置所在的服務(wù)器通常根據(jù)該服務(wù)器的實際功能,還可以包括其他硬件,對此不再贅述。圖5是本申請一示例性實施例示出的一種數(shù)據(jù)庫容災(zāi)裝置的框圖。請參考圖5,該容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例之間基于分布式選舉協(xié)議進行數(shù)據(jù)同步,所述數(shù)據(jù)庫容災(zāi)裝置400可以應(yīng)用在圖4所示的服務(wù)器中,包括有:接收單元401、處理單元402、返回單元403以及維護單元404。其中,接收單元401,接收到來自客戶端的數(shù)據(jù)庫事務(wù);處理單元402,對所述數(shù)據(jù)庫事務(wù)進行處理,并根據(jù)數(shù)據(jù)庫實例列表通知容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例對所述數(shù)據(jù)庫事務(wù)進行處理;返回單元403,當確定容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例完成對所述數(shù)據(jù)庫事務(wù)的處理時,向所述客戶端返回處理完畢的消息。維護單元404,當確定容災(zāi)組網(wǎng)中任一數(shù)據(jù)庫實例故障時,基于所述分布式選舉協(xié)議對故障事件進行投票,當容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例同意所述故障事件時,將所述數(shù)據(jù)庫實例列表中故障數(shù)據(jù)庫實例的狀態(tài)由正常更新為故障,或在所述數(shù)據(jù)庫實例列表中刪除故障數(shù)據(jù)庫實例;當確定容災(zāi)組網(wǎng)中所述故障數(shù)據(jù)庫實例恢復(fù)正常時,基于所述分布式選舉協(xié)議對恢復(fù)事件進行投票,當容災(zāi)組網(wǎng)中半數(shù)或半數(shù)以上正常運轉(zhuǎn)的數(shù)據(jù)庫實例同意所述恢復(fù)事件時,將所述數(shù)據(jù)庫實例列表中所述故障數(shù)據(jù)庫實例的狀態(tài)由故障更新為正常,或在所述數(shù)據(jù)庫實例列表中添加已恢復(fù)正常的所述故障數(shù)據(jù)庫實例??蛇x的,所述返回單元403,當接收到任一數(shù)據(jù)庫實例返回的數(shù)據(jù)庫事務(wù)處理完畢的消息時,確定該數(shù)據(jù)庫實例已完成對所述數(shù)據(jù)庫事務(wù)的處理??蛇x的,所述處理單元402,具體根據(jù)數(shù)據(jù)庫實例列表將所述數(shù)據(jù)庫事務(wù)發(fā)送給容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例;或者在完成對所述數(shù)據(jù)庫事務(wù)的處理后,根據(jù)數(shù)據(jù)庫實例列表將本次處理的相關(guān)數(shù)據(jù)以數(shù)據(jù)庫重做日志的形式發(fā)送給容災(zāi)組網(wǎng)中正常運轉(zhuǎn)的其他數(shù)據(jù)庫實例。可選的,所述容災(zāi)組網(wǎng)中的數(shù)據(jù)庫實例位于主城市以及備災(zāi)城市;其中,所述主城市包括多個數(shù)據(jù)中心,所述主城市的每個數(shù)據(jù)中心均包括多個數(shù)據(jù)庫實例,所述備災(zāi)城市包括一個數(shù)據(jù)中心,所述備災(zāi)城市的數(shù)據(jù)中心包括有一個或多個數(shù)據(jù)庫實例。可選的,在所述主城市的每個數(shù)據(jù)中心的多個數(shù)據(jù)庫實例中,均包括一個用于提供數(shù)據(jù)庫事務(wù)服務(wù)的數(shù)據(jù)庫實例以及一個或多個用于存儲數(shù)據(jù)庫日志的數(shù)據(jù)庫實例。上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件收發(fā)設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任意幾種設(shè)備的組合。以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。當前第1頁12