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