本發(fā)明涉及計算機存儲技術(shù)領(lǐng)域,尤其涉及一種高可用nas集群的實現(xiàn)方法及裝置。
背景技術(shù):
隨著計算機應(yīng)用和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,數(shù)字化信息呈爆炸性增長的趨勢,用戶對存儲系統(tǒng)的可用性和可擴展性提出了更高的要求,單一的nas已經(jīng)不能夠滿足用戶的需要,導(dǎo)致“nas集群技術(shù)”的出現(xiàn)。這種nas集群系統(tǒng),結(jié)合了nas和集群系統(tǒng)兩方面的優(yōu)點:當(dāng)nas集群中的一個子系統(tǒng)發(fā)生故障時,集群系統(tǒng)迅速做出反映,將該子系統(tǒng)的任務(wù)分配到集群中其它正在工作的同類子系統(tǒng)上執(zhí)行;當(dāng)總體的工作流量超出了一個集群中各系統(tǒng)的能力時,將有其它子系統(tǒng)加入到該集群中。
傳統(tǒng)的高可用nas集群的實現(xiàn)存在依賴底層文件系統(tǒng)的問題,使得nas和底層文件系統(tǒng)耦合性很高;而解耦的nas集群又不能保證數(shù)據(jù)的不丟失。因此需要一種新方法來解決nas集群的數(shù)據(jù)遷移冗余備份問題,提高nas集群的高可用性。
技術(shù)實現(xiàn)要素:
針對以上技術(shù)問題,本發(fā)明的目的是提供一種基于高可用nas集群的數(shù)據(jù)遷移冗余的實現(xiàn)方法及裝置,在nas層面實現(xiàn)了數(shù)據(jù)遷移冗余備份,保證了數(shù)據(jù)在節(jié)點出現(xiàn)故障的情況下,不會出現(xiàn)數(shù)據(jù)的丟失,實現(xiàn)了nas集群的高可用性。
為達到上述目的,本發(fā)明通過以下技術(shù)方案實現(xiàn):
本發(fā)明提供一種高可用nas集群的實現(xiàn)方法,包括以下步驟:
a:記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求;
b:其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移;
c:本地數(shù)據(jù)庫的服務(wù)端節(jié)點接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫。
優(yōu)選地,在步驟a之前,還包括:記錄請求端預(yù)先設(shè)定記錄請求的屬性為只讀和讀寫。
優(yōu)選地,在步驟a之后,還包括:本地數(shù)據(jù)庫中該記錄的本地主節(jié)點通過檢索本地數(shù)據(jù)庫,判斷本地數(shù)據(jù)庫是否有該的記錄本地記錄節(jié)點,若有,則記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄;若沒有,則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點。
優(yōu)選地,在將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點之后,還包括:對其他數(shù)據(jù)庫進行初始化處理。
優(yōu)選地,步驟c包括:如果不需要,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點。
優(yōu)選地,所述本地數(shù)據(jù)庫和其他數(shù)據(jù)庫均為key-value數(shù)據(jù)庫。
本發(fā)明還提供了一種高可用nas集群的實現(xiàn)裝置,包括:
記錄請求發(fā)送及處理模塊,用于記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求及處理該記錄;
第二判斷模塊,其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,用于判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果不需要,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點;
重設(shè)模塊,用于本地數(shù)據(jù)庫的服務(wù)端節(jié)點的接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫。
優(yōu)選地,還包括:預(yù)設(shè)模塊,用于記錄請求端預(yù)先設(shè)定記錄請求的屬性為只讀和讀寫。
優(yōu)選地,還包括:第一判斷模塊,用于本地數(shù)據(jù)庫中該記錄的本地主節(jié)點通過檢索本地數(shù)據(jù)庫,判斷本地數(shù)據(jù)庫是否有該記錄的本地記錄節(jié)點,若有,則記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄;若沒有,則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點。
優(yōu)選地,還包括:初始化模塊,用于將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點之后,對其他數(shù)據(jù)庫進行初始化處理。
與現(xiàn)有技術(shù)相比,本發(fā)明一種高可用nas集群的實現(xiàn)方法的有益效果如下:
1.本發(fā)明將key-value數(shù)據(jù)庫中的每條記錄作為一個基本的數(shù)據(jù)同步點,每條記錄通過不同身份的轉(zhuǎn)換,在nas層面實現(xiàn)了數(shù)據(jù)遷移冗余備份,減少了記錄請求對底層存儲系統(tǒng)的依賴,保證了數(shù)據(jù)在節(jié)點出現(xiàn)故障的情況下,不會出現(xiàn)數(shù)據(jù)的丟失,實現(xiàn)了nas集群的高可用性;
2.本發(fā)明給nas集群的每個數(shù)據(jù)庫中的每條記錄賦予三種不同的身份,每個數(shù)據(jù)庫在初始狀態(tài)時,每條記錄的本地主節(jié)點和數(shù)據(jù)主節(jié)點是同一節(jié)點號。當(dāng)記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求而本地數(shù)據(jù)庫中沒有該記錄時,本地數(shù)據(jù)庫根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點和數(shù)據(jù)主節(jié)點的節(jié)點號,再將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點,其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果需要強制遷移,則本地數(shù)據(jù)庫中該記錄的本地主節(jié)點就記錄最新的數(shù)據(jù)主節(jié)點的節(jié)點號。因此nas集群的數(shù)據(jù)庫中發(fā)生數(shù)據(jù)遷移時,每條記錄的本地主節(jié)點和數(shù)據(jù)主節(jié)點是不同的節(jié)點號,從而實現(xiàn)了每條記錄不同身份的轉(zhuǎn)換,實現(xiàn)了數(shù)據(jù)遷移冗余備份及nas集群內(nèi)數(shù)據(jù)庫的實時更新,確保了數(shù)據(jù)在節(jié)點出現(xiàn)故障的情況下,數(shù)據(jù)不會丟失。
一種高可用nas集群的實現(xiàn)裝置的有益效果與一種高可用nas集群的實現(xiàn)方法的有益效果類似,在此不再贅述。
附圖說明
圖1為本發(fā)明一種高可用nas集群的實現(xiàn)方法的流程示意圖之一。
圖2為本發(fā)明一種高可用nas集群的實現(xiàn)方法的數(shù)據(jù)遷移的流程示意圖。
圖3為本發(fā)明一種高可用nas集群的實現(xiàn)方法的流程示意圖之二。
圖4為本發(fā)明一種高可用nas集群的實現(xiàn)方法的數(shù)據(jù)復(fù)制的流程示意圖。
圖5為本發(fā)明一種高可用nas集群的實現(xiàn)裝置的結(jié)構(gòu)示意圖之一。
圖6為本發(fā)明一種高可用nas集群的實現(xiàn)裝置的結(jié)構(gòu)示意圖之二。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
下面對下列實施例中出現(xiàn)的名詞及概念進行解釋說明:
在高可用nas集群的中,每個數(shù)據(jù)庫中的任一條記錄都有三種不同的身份,即本地記錄節(jié)點(localrecordnode)、本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)。
本地記錄節(jié)點:英文全稱localrecordnode,本地記錄節(jié)點內(nèi)保存的普通身份的記錄。
本地主節(jié)點:英文全稱localmasternode,在集群數(shù)據(jù)庫中,每條記錄都有一個唯一的且固定的本地主節(jié)點,這個本地主節(jié)點的節(jié)點號可以通過每條記錄的key值經(jīng)過計算得到。這樣就可以保證任何一個節(jié)點,不需要保存每條記錄的本地主節(jié)點的值,而是通過每條記錄的key值然后計算就可以知道該記錄的本地主節(jié)點的節(jié)點號。
數(shù)據(jù)主節(jié)點:英文全稱datamasternode,在集群數(shù)據(jù)庫中,對于一條記錄來說,它的數(shù)據(jù)主節(jié)點也是唯一的,但它不是固定的,可以在集群中多個節(jié)點之間進行轉(zhuǎn)換;數(shù)據(jù)主節(jié)點更像是一種權(quán)限,它擁有對于記錄的修改權(quán)限,所以在集群數(shù)據(jù)庫中,數(shù)據(jù)主節(jié)點中的該記錄的數(shù)據(jù)始終是最新的。
下面結(jié)合附圖和具體實施方式對本發(fā)明一種高可用nas集群的實現(xiàn)方法及裝置作進一步地說明:
實施例1
如圖1所示,一種高可用nas集群的實現(xiàn)方法,包括以下步驟:
步驟s101:記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求,并設(shè)定記錄請求的屬性為只讀和讀寫兩種;
步驟s102:本地數(shù)據(jù)庫中該記錄的本地主節(jié)點通過檢索本地數(shù)據(jù)庫,判斷本地數(shù)據(jù)庫是否有該記錄的本地記錄節(jié)點,若有,則進行s106,記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄;若沒有,則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點,進行步驟s103;
步驟s103:對其他數(shù)據(jù)庫中該記錄的head進行初始化處理;
步驟s104:其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果不需要,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點;
步驟s105:本地數(shù)據(jù)庫的服務(wù)端節(jié)點接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫;
步驟s106:記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄。
請參考圖2,作為一種可實施方式,nas集群中的數(shù)據(jù)庫均為key-value數(shù)據(jù)庫,每個數(shù)據(jù)庫中的任一條記錄都有三種不同的身份,即本地記錄節(jié)點(localrecordnode)、本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode),通過key進行檢索,找到value并對value進行處理,其中value包含head和value兩部分,head中記錄該記錄的本地主節(jié)點(localmasternode)的節(jié)點號(id)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)。本地數(shù)據(jù)庫根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)。
記錄請求端(nasapp)在本地數(shù)據(jù)庫中無法找到記錄時,就向本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode)發(fā)送記錄請求,并設(shè)定記錄請求的屬性為讀寫;本地數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)通過檢索本地數(shù)據(jù)庫,發(fā)現(xiàn)本地數(shù)據(jù)庫中沒有該記錄的本地記錄節(jié)點(localrecordnode),本地數(shù)據(jù)庫對該記錄的head進行初始化并保存,再根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id),則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode);其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)接收到該記錄請求后,對其他數(shù)據(jù)庫中該記錄的head進行初始化處理,其他數(shù)據(jù)庫在初始狀態(tài)時,每條記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)相同;因為記錄請求為讀寫屬性,則需要強制遷移,其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)需要記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id),并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點(datamasternode)中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode),此時其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)不同,從而實現(xiàn)每條記錄不同身份的轉(zhuǎn)換及數(shù)據(jù)遷移冗余備份;本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode)接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點(datamasternode)所在數(shù)據(jù)庫,也就是說本地數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)一直是最新的;記錄請求端(nasapp)開始處理本地數(shù)據(jù)庫內(nèi)的該記錄。
實施例2
如圖3所示,一種高可用nas集群的實現(xiàn)方法,包括以下步驟:
步驟s201:記錄請求端預(yù)先設(shè)定記錄請求的屬性為只讀和讀寫兩種;
步驟s202:記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求;
步驟s203:本地數(shù)據(jù)庫中該記錄的本地主節(jié)點通過檢索本地數(shù)據(jù)庫,判斷本地數(shù)據(jù)庫是否有該記錄的本地記錄節(jié)點,若有,則進行s207,記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄;若沒有,本地數(shù)據(jù)庫對該記錄的head進行初始化并保存,再根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點和數(shù)據(jù)主節(jié)點的節(jié)點號,則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點,進行步驟s204;
步驟s204:對其他數(shù)據(jù)庫中該記錄的head進行初始化處理;
步驟s205:其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果不需要,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點;
步驟s206:本地數(shù)據(jù)庫的服務(wù)端節(jié)點接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫;
步驟s207:記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄。
請參考圖4,作為一種可實施方式,nas集群中的數(shù)據(jù)庫均為key-value數(shù)據(jù)庫,每個數(shù)據(jù)庫中的任一條記錄都有三種不同的身份,即本地記錄節(jié)點(localrecordnode)、本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode),通過key進行檢索,找到value并對value進行處理,其中value包含head和value兩部分,head中記錄該記錄的本地主節(jié)點(localmasternode)的節(jié)點號(id)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)。本地數(shù)據(jù)庫根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)。
記錄請求端(nasapp)在本地數(shù)據(jù)庫中無法找到記錄時,就向本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode)發(fā)送記錄請求,并設(shè)定記錄請求的屬性為只讀;本地數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)通過檢索本地數(shù)據(jù)庫,發(fā)現(xiàn)本地數(shù)據(jù)庫中沒有該記錄的本地記錄節(jié)點(localrecordnode),本地數(shù)據(jù)庫對該記錄的head進行初始化并保存,再根據(jù)key通過哈希取余算法,確定nas集群其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id),則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode);其他數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)接收到該記錄請求后,對其他數(shù)據(jù)庫中該記錄的head進行初始化處理,其他數(shù)據(jù)庫在初始狀態(tài)時,每條記錄的本地主節(jié)點(localmasternode)和數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)相同;因為記錄請求為只讀屬性,則不需要強制遷移,只需要復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點(datamasternode)中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode);本地數(shù)據(jù)庫的服務(wù)端節(jié)點(localdispatchernode)接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點(datamasternode)所在數(shù)據(jù)庫,也就是說本地數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點(datamasternode)的節(jié)點號(id)一直是最新的;記錄請求端(nasapp)開始處理本地數(shù)據(jù)庫內(nèi)的該記錄。
實施例3
如圖5所示,一種高可用nas集群的實現(xiàn)裝置,包括以下模塊:
記錄請求發(fā)送及處理模塊302,用于記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求及處理該記錄,預(yù)先設(shè)定記錄請求的屬性為只讀和讀寫;
第二判斷模塊305,其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,用于判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果不需要強制遷移,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要強制遷移,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點;
重設(shè)模塊306,用于本地數(shù)據(jù)庫的服務(wù)端節(jié)點的接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫。
其中記錄請求發(fā)送模塊302依次順序第二判斷模塊305和重設(shè)模塊306相連。
實施例4
如圖6所示,一種高可用nas集群的實現(xiàn)裝置,包括以下模塊:
預(yù)設(shè)模塊301,用于記錄請求端預(yù)先設(shè)定記錄請求的屬性為只讀和讀寫。
記錄請求發(fā)送及處理模塊302,用于記錄請求端向本地數(shù)據(jù)庫的服務(wù)端節(jié)點發(fā)送記錄請求及處理該記錄;
第一判斷模塊303,用于本地數(shù)據(jù)庫中該記錄的本地主節(jié)點(localmasternode)通過檢索本地數(shù)據(jù)庫,判斷本地數(shù)據(jù)庫是否有該記錄的本地記錄節(jié)點,若本地數(shù)據(jù)庫中有該記錄,則記錄請求端開始處理本地數(shù)據(jù)庫內(nèi)的該記錄;若本地數(shù)據(jù)庫中沒有該記錄,則將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點。
初始化模塊304,用于將該記錄請求發(fā)送到其他數(shù)據(jù)庫中該記錄的本地主節(jié)點之后,對其他數(shù)據(jù)庫進行初始化處理。
第二判斷模塊305,其他數(shù)據(jù)庫中該記錄的本地主節(jié)點根據(jù)該記錄請求的屬性,用于判斷其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)是否需要進行強制遷移,如果不需要強制遷移,則復(fù)制其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)并發(fā)送給本地數(shù)據(jù)庫的服務(wù)端節(jié)點;如果需要強制遷移,則其他數(shù)據(jù)庫中該記錄的本地主節(jié)點記錄其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點的節(jié)點號,并將其他數(shù)據(jù)庫中該記錄的數(shù)據(jù)主節(jié)點中的數(shù)據(jù)遷移至其他數(shù)據(jù)庫中該記錄的本地主節(jié)點后,再遷移至本地數(shù)據(jù)庫的服務(wù)端節(jié)點;
重設(shè)模塊306,用于本地數(shù)據(jù)庫的服務(wù)端節(jié)點的接收到數(shù)據(jù)強制遷移的響應(yīng)后,將本地數(shù)據(jù)庫設(shè)置為該記錄的數(shù)據(jù)主節(jié)點所在數(shù)據(jù)庫。
其中預(yù)設(shè)模塊301依次順序與記錄請求發(fā)送模塊302、第一判斷模塊303、初始化模塊304、第二判斷模塊305和重設(shè)模塊306相連。
以上所述僅為本發(fā)明示意性的具體實施方式,并非用以限定本發(fā)明的范圍,任何本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明構(gòu)思和原則的前提下所做出的等同變化與修改,均應(yīng)屬于本發(fā)明保護的范圍。