亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法

文檔序號(hào):6402634閱讀:254來(lái)源:國(guó)知局
專利名稱:一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法
技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其是一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法。
背景技術(shù)
基于分布式數(shù)據(jù)庫(kù)系統(tǒng)的大型企業(yè)應(yīng)用越來(lái)越廣泛。為了提高系統(tǒng)可靠性,系統(tǒng)中的關(guān)鍵數(shù)據(jù)會(huì)在異地或本地保存多個(gè)副本,多個(gè)副本數(shù)據(jù)必須要保持一致性。一致性包括強(qiáng)一致性和弱一致性兩種,其中強(qiáng)一致性是要求數(shù)據(jù)任何時(shí)刻都是一致的,也就是數(shù)據(jù)的實(shí)時(shí)一致性;而弱一致性,不要求數(shù)據(jù)的實(shí)時(shí)一致,而是在達(dá)到一定條件下保證數(shù)據(jù)一致,也就是所謂的最終一致性。維護(hù)強(qiáng)一致性的代價(jià)相對(duì)較高,因此,一般都用在數(shù)據(jù)量較小的關(guān)鍵數(shù)據(jù),而對(duì)于海量數(shù)據(jù),為了系統(tǒng)可用性目的,一般都只要求數(shù)據(jù)的最終一致性。目前,幾乎所有的無(wú)共享集群都要求數(shù)據(jù)節(jié)點(diǎn)的完全同構(gòu),但是,在實(shí)際應(yīng)用中,企業(yè)往往會(huì)將關(guān)鍵的配置數(shù)據(jù)放在安全性和可靠性更高的高端商業(yè)數(shù)據(jù)庫(kù)中,而把海量的業(yè)務(wù)數(shù)據(jù)放在普通的中低端甚至開源數(shù)據(jù)庫(kù)中以節(jié)省成本,這就需要企業(yè)級(jí)集群解決方案支持異構(gòu)數(shù)據(jù)庫(kù)節(jié)點(diǎn)。而對(duì)于副本一致性維護(hù),目前通用的方式主要有如下兩種方式:第一種方式是基于觸發(fā)器和語(yǔ)句分發(fā)的中間件方式,這是一種典型的利用中間件的方式,通過(guò)中間件把主數(shù)據(jù)節(jié)點(diǎn)上的操作同步或異步地發(fā)送給副本數(shù)據(jù)節(jié)點(diǎn)同樣的執(zhí)行一遍。該方式在同構(gòu)集群里可以一定程度上實(shí)現(xiàn)多副本維護(hù)功能,但是有明顯的缺陷:由于采用分布式的架構(gòu),導(dǎo)致在集群層下發(fā)的語(yǔ)句順序和在數(shù)據(jù)節(jié)點(diǎn)上的實(shí)際執(zhí)行順序是不能保證一致的,因此這種方式必須在集群中間件層面進(jìn)行DML語(yǔ)句的串行化,否則,將很可能會(huì)引發(fā)數(shù)據(jù)不一致,甚至整個(gè)集群僵死等嚴(yán)重問(wèn)題。而這種在集群中間件層面進(jìn)行的DML串行化,嚴(yán)格按照一條語(yǔ)句完成之后才能下發(fā)另一條語(yǔ)句的規(guī)則,導(dǎo)致整個(gè)集群退化為單用戶操作模式,并發(fā)性能無(wú)法容忍,同時(shí)又會(huì)導(dǎo)致副本一致性維護(hù)的代價(jià)呈線性倍數(shù)的提高,實(shí)用性不高。第二種方式是基于日志傳輸?shù)臄?shù)據(jù)庫(kù)復(fù)制方式。這是一種完全依靠節(jié)點(diǎn)數(shù)據(jù)庫(kù)自身進(jìn)行一致性維護(hù)的方式,目前主流數(shù)據(jù)庫(kù)更多采用的是這種方式。這種方式通過(guò)主數(shù)據(jù)節(jié)點(diǎn)向副本數(shù)據(jù)節(jié)點(diǎn)傳輸binlog (二進(jìn)制日志),而副本數(shù)據(jù)節(jié)點(diǎn)分析日志并進(jìn)行日志重做的方式實(shí)現(xiàn)。顯然這種方式僅適用于同構(gòu)數(shù)據(jù)庫(kù)集群的情況,因?yàn)楫悩?gòu)數(shù)據(jù)庫(kù)的日志格式勢(shì)必不同,無(wú)法通過(guò)日志重做進(jìn)行多副本維護(hù)。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種設(shè)計(jì)合理、性能穩(wěn)定且效率高的基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法。本發(fā)明解決其技術(shù)問(wèn)題是采取以下技術(shù)方案實(shí)現(xiàn)的:一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,包括以下階段:查詢執(zhí)行階段,該階段包括以下步驟:
步驟1:集群主數(shù)據(jù)節(jié)點(diǎn)事務(wù)管理模塊跟蹤活動(dòng)事務(wù)表,錄制事務(wù)操作;步驟2:集群為主數(shù)據(jù)節(jié)點(diǎn)生成事務(wù)重做日志;步驟3:集群每隔一段時(shí)間將主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件發(fā)送給所有副本數(shù)據(jù)節(jié)點(diǎn),并管理節(jié)點(diǎn)狀態(tài);副本維護(hù)階段,該階段包括以下步驟:副本數(shù)據(jù)節(jié)點(diǎn)不斷地接收來(lái)自于主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件,并在收到之后給予確認(rèn)收到的回復(fù),接收到事務(wù)重做日志之后,副本數(shù)據(jù)節(jié)點(diǎn)按照日志中記錄的SQL語(yǔ)句的順序,嚴(yán)格串行化的執(zhí)行每條DML語(yǔ)句;故障恢復(fù)階段,該階段包括以下步驟:步驟1:數(shù)據(jù)庫(kù)管理員將主數(shù)據(jù)節(jié)點(diǎn)更改為只讀狀態(tài);步驟2:從集群記錄的故障信息中查找出所有故障節(jié)點(diǎn)對(duì)應(yīng)的存檔日志,依照存檔文件的順序逐個(gè)在故障節(jié)點(diǎn)上重做日志,直到所有副本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)恢復(fù)到同主數(shù)據(jù)節(jié)點(diǎn)一致的狀態(tài);步驟3:標(biāo)志副本數(shù)據(jù)節(jié)點(diǎn)為可用狀態(tài),并恢復(fù)主數(shù)據(jù)節(jié)點(diǎn)為讀寫狀態(tài);而且,所述查詢執(zhí)行階段的步驟I的處理過(guò)程為:在存放主數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)庫(kù)事務(wù)管理模塊增加記錄事務(wù)涉及的語(yǔ)句的邏輯,生成活動(dòng)事務(wù)表。而且,所述的活動(dòng)事務(wù)由活動(dòng)事務(wù)以及該活動(dòng)事務(wù)所執(zhí)行的語(yǔ)句構(gòu)成,每個(gè)事務(wù)內(nèi)部的語(yǔ)句是按照從一定的順序依次記錄在該活動(dòng)事務(wù)表中。而且,所述的活動(dòng)事務(wù)表為Hash表,hash鍵是事務(wù)id,hash值是一個(gè)鏈表并按照語(yǔ)句順序記錄該事務(wù)的所有查詢語(yǔ)句。而且,所述查詢執(zhí)行階段的步驟2的處理過(guò)程為:當(dāng)有事務(wù)提交時(shí),從活動(dòng)事務(wù)表中把該事務(wù)的所有DML語(yǔ)句鏈表取出,按順序記錄在事務(wù)重做日志中,并從活動(dòng)事務(wù)表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句;當(dāng)事務(wù)被回滾時(shí),從活動(dòng)事務(wù)表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句。而且,所述查詢執(zhí)行階段的步驟3管理節(jié)點(diǎn)狀態(tài)的方法為:集群向所有副本數(shù)據(jù)節(jié)點(diǎn)發(fā)送事務(wù)重做日志后,等待所有副本數(shù)據(jù)節(jié)點(diǎn)的回復(fù)以確認(rèn)所有副本都已收到,如果所有副本數(shù)據(jù)節(jié)點(diǎn)都及時(shí)給出了響應(yīng),集群刪除已發(fā)送的日志;如果發(fā)現(xiàn)有的副本數(shù)據(jù)節(jié)點(diǎn)沒(méi)有及時(shí)給予響應(yīng),集群將該日志存檔,并記錄未回復(fù)的副本數(shù)據(jù)節(jié)點(diǎn),同時(shí)將這些節(jié)點(diǎn)標(biāo)志為不可用狀態(tài),被標(biāo)志為不可用狀態(tài)的節(jié)點(diǎn)將進(jìn)入故障恢復(fù)階段。本發(fā)明的優(yōu)點(diǎn)和積極效果是:本發(fā)明利用基于語(yǔ)句分發(fā)中間件方式的語(yǔ)句重做技術(shù)和基于二進(jìn)制日志傳輸?shù)娜罩局刈黾夹g(shù)兩種方式的優(yōu)勢(shì),解決了基于語(yǔ)句分發(fā)中間件方式必須在集群層面進(jìn)行DML串行化導(dǎo)致的代價(jià)高、性能差的問(wèn)題,同時(shí)又彌補(bǔ)了二進(jìn)制日志傳輸方式無(wú)法支持異構(gòu)數(shù)據(jù)庫(kù)的不足,在目前大數(shù)據(jù)領(lǐng)域普遍使用的無(wú)共享集群中實(shí)現(xiàn)多副本之間的快速一致性維護(hù),保證無(wú)共享集群的高可用性,同時(shí)能夠支持集群數(shù)據(jù)庫(kù)節(jié)點(diǎn)的異構(gòu)化。


圖1是本發(fā)明的活動(dòng)事務(wù)表結(jié)構(gòu)示意圖;圖2是活動(dòng)事務(wù)處理流程圖;圖3是本發(fā)明的事務(wù)重做日志結(jié)構(gòu)示意圖4是重做后的活動(dòng)事務(wù)表結(jié)構(gòu)示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳述。一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法是利用并發(fā)事務(wù)實(shí)際執(zhí)行順序是事務(wù)的提交順序這一原理,通過(guò)對(duì)主數(shù)據(jù)節(jié)點(diǎn)進(jìn)行活動(dòng)事務(wù)跟蹤,按照事務(wù)提交順序進(jìn)行查詢錄制,將主數(shù)據(jù)節(jié)點(diǎn)錄制的按照事務(wù)提交順序組織的語(yǔ)句序列傳播到副本數(shù)據(jù)節(jié)點(diǎn)進(jìn)行事務(wù)重做的方式。此方式可以保證副本數(shù)據(jù)和主數(shù)據(jù)在事務(wù)層面進(jìn)行的邏輯操作完全一致,從而保證副本數(shù)據(jù)和主數(shù)據(jù)之間的最終一致性。由于錄制是發(fā)生在主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)管理層,因此不會(huì)造成集群中間件本身的串行化處理,解決了集群的并發(fā)性問(wèn)題;由于傳輸?shù)氖遣樵冋Z(yǔ)句,而且只需重做DML查詢,因此不僅系統(tǒng)負(fù)載輕,保證一致性維護(hù)的高性能;更為重要的是,這種事務(wù)重做方式基于標(biāo)準(zhǔn)的SQL,可以支持各種異構(gòu)數(shù)據(jù)庫(kù)。下面對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明:一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,包括如下階段:查詢執(zhí)行階段,該階段包括以下步驟:步驟1:集群事務(wù)管理模塊跟蹤活動(dòng)事務(wù)表,錄制事務(wù)操作在查詢執(zhí)行階段,在存放主數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)庫(kù)的事務(wù)管理模塊增加記錄事務(wù)涉及的語(yǔ)句的邏輯,生成活動(dòng)事務(wù)表。其具體流程:事務(wù)管理模塊在內(nèi)存中申請(qǐng)緩沖區(qū),以Hash表的形式記錄所有活動(dòng)事務(wù)正在執(zhí)行的語(yǔ)句。其中hash鍵是事務(wù)id,hash值是一個(gè)鏈表,按照語(yǔ)句順序記錄該事務(wù)的所有查詢語(yǔ)句,其中select語(yǔ)句不記錄。每當(dāng)一個(gè)事務(wù)要執(zhí)行一條查詢的時(shí)候,如果是DML語(yǔ)句,則根據(jù)其事務(wù)id在hash表里查找,如果已有該事務(wù)則把DML按順序加在該事務(wù)語(yǔ)句鏈表的最后,如果沒(méi)有該事務(wù)則在hash表中新生成一個(gè)hash入口,并記錄該DML語(yǔ)句。通過(guò)上述處理建成的活動(dòng)事務(wù)表結(jié)構(gòu),如圖1所示,該結(jié)構(gòu)表明當(dāng)前在數(shù)據(jù)庫(kù)的事務(wù)管理模塊有6個(gè)活動(dòng)事務(wù),分別是事務(wù)TX1、TX2、TX3、TX4、TX5、TX6。其中事務(wù)TX1、TX3、和TX6執(zhí)行了 DML語(yǔ)句。每個(gè)事務(wù)內(nèi)部的語(yǔ)句是按照從左至右的先后順序依次記錄在該活動(dòng)事務(wù)hash表中的。步驟2:集群為主數(shù)據(jù)節(jié)點(diǎn)生成事務(wù)重做日志當(dāng)有事務(wù)提交時(shí),從hash表中把該事務(wù)的所有DML語(yǔ)句鏈表取出,按順序記錄在事務(wù)重做日志中,并從活動(dòng)事務(wù)hash表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句。而當(dāng)事務(wù)被回滾的時(shí)候,則僅需從活動(dòng)事務(wù)hash表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句即可,而不必記錄事務(wù)重做日志。事務(wù)重做日志是集群為主數(shù)據(jù)節(jié)點(diǎn)生成和維護(hù)一個(gè)文件,語(yǔ)句逐條組織,按實(shí)際執(zhí)行順序記錄了主數(shù)據(jù)節(jié)點(diǎn)的所有DML語(yǔ)句。假設(shè)上述活動(dòng)事務(wù)表中的六個(gè)事務(wù)的執(zhí)行順序如圖2所示,可以看出,事務(wù)TX6最后開始(Begin),但是最先提交(Commit)。而事務(wù)TXl先于所有事務(wù)Begin,但是晚于事務(wù)TX6提交(Commit)。因此,此時(shí)生成的事務(wù)重做日志如圖3所示,而此時(shí)更新的活動(dòng)事務(wù)表結(jié)構(gòu)如圖4所示,可以看出,已經(jīng)提交(Commit)的事務(wù)以及該事務(wù)所進(jìn)行的操作語(yǔ)句都被從活動(dòng)事務(wù)表中剔除。步驟3:集群每隔一段時(shí)間將主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件發(fā)送給所有副本數(shù)據(jù)節(jié)點(diǎn),并管理節(jié)點(diǎn)狀態(tài)。事務(wù)重做日志的格式逐條組織,記錄了如圖3所示的主數(shù)據(jù)節(jié)點(diǎn)在事務(wù)管理模塊實(shí)際執(zhí)行DML語(yǔ)句的順序,語(yǔ)句逐行存儲(chǔ)在事務(wù)重做日志文件中。集群每隔一段時(shí)間把主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志發(fā)送給所有副本數(shù)據(jù)節(jié)點(diǎn),并等待所有副本數(shù)據(jù)節(jié)點(diǎn)的回復(fù)以確認(rèn)所有副本都已收到。如果所有副本數(shù)據(jù)節(jié)點(diǎn)都及時(shí)給出了響應(yīng),集群刪除已發(fā)送的日志;如果發(fā)現(xiàn)有的副本數(shù)據(jù)節(jié)點(diǎn)沒(méi)有及時(shí)給予響應(yīng),集群將該日志存檔,并記錄未回復(fù)的副本數(shù)據(jù)節(jié)點(diǎn),同時(shí)將這些節(jié)點(diǎn)標(biāo)志為不可用狀態(tài)。被標(biāo)志為不可用狀態(tài)的節(jié)點(diǎn)將進(jìn)入故障恢復(fù)階段,需要人工進(jìn)行數(shù)據(jù)一致性維護(hù)。副本維護(hù)階段,該階段的處理包括:副本數(shù)據(jù)節(jié)點(diǎn)不斷地接收來(lái)自于主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件,并在收到之后給予確認(rèn)收到的回復(fù)。副本數(shù)據(jù)節(jié)點(diǎn)接收到事務(wù)重做日志之后,副本數(shù)據(jù)節(jié)點(diǎn)按照日志中記錄的SQL語(yǔ)句的順序,嚴(yán)格串行化的執(zhí)行每條DML語(yǔ)句。這一過(guò)程是自動(dòng)的,不需要人工參與,由集群調(diào)度副本數(shù)據(jù)節(jié)點(diǎn)自行完成數(shù)據(jù)一致性維護(hù)。故障恢復(fù)階段。如果在集群的自動(dòng)調(diào)度下,副本數(shù)據(jù)節(jié)點(diǎn)未能完成數(shù)據(jù)的一致性同步,則副本數(shù)據(jù)會(huì)進(jìn)入故障恢復(fù)階段,這一階段需要數(shù)據(jù)庫(kù)管理員(DBA)進(jìn)行人工干預(yù)進(jìn)行數(shù)據(jù)一致性維護(hù)。故障恢復(fù)階段包括以下步驟:步驟1:數(shù)據(jù)庫(kù)管理員(DBA)需要將主數(shù)據(jù)節(jié)點(diǎn)更改為只讀狀態(tài),即主數(shù)據(jù)節(jié)點(diǎn)不再接受DML操作。這一過(guò)程是為了給主數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)打一個(gè)基線,所有副本數(shù)據(jù)都以此為基準(zhǔn)恢復(fù)到一致狀態(tài)。步驟2:從集群記錄的故障信息中查找出所有故障節(jié)點(diǎn)對(duì)應(yīng)的存檔日志,依照存檔文件的順序逐個(gè)在故障節(jié)點(diǎn)上重做日志,直到所有副本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)恢復(fù)到同主數(shù)據(jù)節(jié)點(diǎn)一致的狀態(tài)。步驟3:標(biāo)志副本數(shù)據(jù)節(jié)點(diǎn)為可用狀態(tài),并恢復(fù)主數(shù)據(jù)節(jié)點(diǎn)為讀寫狀態(tài),即主數(shù)據(jù)節(jié)點(diǎn)可以接受并處理DML語(yǔ)句。本發(fā)明的關(guān)鍵特點(diǎn)在于利用并發(fā)事務(wù)實(shí)際執(zhí)行順序是事務(wù)的提交順序這一原理,在主數(shù)據(jù)節(jié)點(diǎn)錄制事務(wù)執(zhí)行順序,而不是在集群中間件進(jìn)行錄制,據(jù)此生成事務(wù)重做日志并通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸,在副本數(shù)據(jù)節(jié)點(diǎn)重做日志記錄的SQL語(yǔ)句,從而保證主數(shù)據(jù)和副本數(shù)據(jù)的最終一致性。此技術(shù)方案具有低負(fù)載、高性能、弱一致、支持異構(gòu)等特點(diǎn)。需要強(qiáng)調(diào)的是,本發(fā)明所述的實(shí)施例是說(shuō)明性的,而不是限定性的,因此本發(fā)明包括并不限于具體實(shí)施方式
中所述的實(shí)施例,凡是由本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出的其他實(shí)施方式,同樣屬于本發(fā)明保護(hù)的范圍。
權(quán)利要求
1.一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:包括以下階段: 查詢執(zhí)行階段,該階段包括以下步驟: 步驟1:集群主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)管理模塊跟蹤活動(dòng)事務(wù)表,錄制事務(wù)操作; 步驟2:集群為主數(shù)據(jù)節(jié)點(diǎn)生成事務(wù)重做日志; 步驟3:集群每隔一段時(shí)間將主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件發(fā)送給所有副本數(shù)據(jù)節(jié)點(diǎn),并管理節(jié)點(diǎn)狀態(tài); 副本維護(hù)階段,該階段包括以下步驟:副本數(shù)據(jù)節(jié)點(diǎn)不斷地接收來(lái)自于主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件,并在收到之后給予確認(rèn)收到的回復(fù);接收到事務(wù)重做日志之后,副本數(shù)據(jù)節(jié)點(diǎn)按照日志中記錄的SQL語(yǔ)句的順序,嚴(yán)格串行化的執(zhí)行每條DML語(yǔ)句; 故障恢復(fù)階段,該階段包括以下步驟: 步驟1:數(shù)據(jù)庫(kù)管理員將主數(shù)據(jù)節(jié)點(diǎn)更改為只讀狀態(tài); 步驟2:從集群記錄的故障信息中查找出所有故障節(jié)點(diǎn)對(duì)應(yīng)的存檔日志,依照存檔文件的順序逐個(gè)在故障節(jié)點(diǎn)上重做日志,直到所有副本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)恢復(fù)到同主數(shù)據(jù)節(jié)點(diǎn)一致的狀態(tài); 步驟3:標(biāo)志副本數(shù)據(jù)節(jié)點(diǎn)為可用狀態(tài),并恢復(fù)主數(shù)據(jù)節(jié)點(diǎn)為讀寫狀態(tài)。
2.根據(jù)權(quán)利要求1所述的一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:所述查詢執(zhí)行階段的步驟I的處理過(guò)程為:在存放主數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)庫(kù)的事務(wù)管理模塊增加記錄事務(wù)涉及的語(yǔ)句的邏輯,生成活動(dòng)事務(wù)表。
3.根據(jù)權(quán)利要求2所述的一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:所述的活動(dòng)事務(wù)由活動(dòng)事務(wù)以及該活動(dòng)事務(wù)所執(zhí)行的語(yǔ)句構(gòu)成,每個(gè)事務(wù)內(nèi)部的語(yǔ)句是按照從一定的順序依次記錄在該活動(dòng)事務(wù)表中。
4.根據(jù)權(quán)利要求3所述的一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:所述的活動(dòng)事務(wù)表為Hash表,hash鍵是事務(wù)id,hash值是一個(gè)鏈表并按照語(yǔ)句順序記錄該事務(wù)的所有查詢語(yǔ)句。
5.根據(jù)權(quán)利要求1所述的一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:所述查詢執(zhí)行階段的步驟2的處理過(guò)程為:當(dāng)有事務(wù)提交時(shí),從活動(dòng)事務(wù)表中把該事務(wù)的所有DML語(yǔ)句鏈表取出,按順序記錄在事務(wù)重做日志中,并從活動(dòng)事務(wù)表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句;當(dāng)事務(wù)被回滾時(shí),從活動(dòng)事務(wù)表中刪除該事務(wù)以及該事務(wù)的所有操作語(yǔ)句。
6.根據(jù)權(quán)利要求1所述的一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特征在于:所述查詢執(zhí)行階段的步驟3管理節(jié)點(diǎn)狀態(tài)的方法為:集群向所有副本數(shù)據(jù)節(jié)點(diǎn)發(fā)送事務(wù)重做日志后,等待所有副本數(shù)據(jù)節(jié)點(diǎn)的回復(fù)以確認(rèn)所有副本都已收到,如果所有副本數(shù)據(jù)節(jié)點(diǎn)都及時(shí)給出了響應(yīng),集群刪除已發(fā)送的日志;如果發(fā)現(xiàn)有的副本數(shù)據(jù)節(jié)點(diǎn)沒(méi)有及時(shí)給予響應(yīng),集群將該日志存檔,并記錄未回復(fù)的副本數(shù)據(jù)節(jié)點(diǎn),同時(shí)將這些節(jié)點(diǎn)標(biāo)志為不可用狀態(tài),被標(biāo)志為不可用狀態(tài)的節(jié)點(diǎn)將進(jìn)入故障恢復(fù)階段。
全文摘要
本發(fā)明涉及一種基于事務(wù)重做的異構(gòu)集群多副本一致性維護(hù)方法,其特點(diǎn)是包括查詢執(zhí)行階段集群事務(wù)管理模塊跟蹤活動(dòng)事務(wù)表,錄制事務(wù)操作;集群為主數(shù)據(jù)節(jié)點(diǎn)生成事務(wù)重做日志;集群將事務(wù)重做日志文件發(fā)送給所有副本數(shù)據(jù)節(jié)點(diǎn)并管理節(jié)點(diǎn)狀態(tài);副本維護(hù)階段副本數(shù)據(jù)節(jié)點(diǎn)接收來(lái)自于主數(shù)據(jù)節(jié)點(diǎn)的事務(wù)重做日志文件;故障恢復(fù)階段數(shù)據(jù)庫(kù)管理員將查找出故障節(jié)點(diǎn)對(duì)應(yīng)的存檔日志,將所有副本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)恢復(fù)到同主數(shù)據(jù)節(jié)點(diǎn)一致的狀態(tài)。本發(fā)明解決了現(xiàn)有技術(shù)存在代價(jià)高、性能差的問(wèn)題,彌補(bǔ)了二進(jìn)制日志傳輸方式無(wú)法支持異構(gòu)數(shù)據(jù)庫(kù)的不足,實(shí)現(xiàn)了多副本之間的快速一致性維護(hù),保證無(wú)共享集群的高可用性,同時(shí)能夠支持集群數(shù)據(jù)庫(kù)節(jié)點(diǎn)的異構(gòu)化。
文檔編號(hào)G06F11/34GK103198159SQ20131015333
公開日2013年7月10日 申請(qǐng)日期2013年4月27日 優(yōu)先權(quán)日2013年4月27日
發(fā)明者王洋, 楊海成, 李陽(yáng), 馮柯, 蔣志勇, 蔣旭, 陳東, 譚煒波, 孫磊, 劉勇生, 李曉鵬, 劉榮 申請(qǐng)人:國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心, 天津神舟通用數(shù)據(jù)技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1