本發(fā)明涉及分布式數(shù)據(jù)庫,具體地說是一種實現(xiàn)事務一致性復制的方法及系統(tǒng)。
背景技術(shù):
1、cdc是change?data?capture,即捕獲變更數(shù)據(jù)。是數(shù)據(jù)庫進行備份的一種方式,常用于大量數(shù)據(jù)的備份工作。cdc的機制是在主集群對目標數(shù)據(jù)進行監(jiān)控,當數(shù)據(jù)發(fā)生變更是,捕獲增量的變更數(shù)據(jù)。cdc存在的問題,不支持事務特性,只捕獲了數(shù)據(jù)最終變更的結(jié)果,沒有事務關(guān)聯(lián),數(shù)據(jù)復制能夠達到最終一致性。
2、目前,主備集群基于cdc實現(xiàn)主備分布式集群的數(shù)據(jù)復制,對主集群的數(shù)據(jù)變更進行捕獲,發(fā)動到備集群,并在備集群進行數(shù)據(jù)回放,達到主備集群的最終一致性。關(guān)于備集群數(shù)據(jù)的回放,并不支持事務特性,無法保證事務的原子性及一致性。
技術(shù)實現(xiàn)思路
1、本發(fā)明的技術(shù)任務是針對以上不足之處,提供一種實現(xiàn)事務一致性復制的方法及系統(tǒng),優(yōu)化分布式數(shù)據(jù)庫集群,使用基于cdc實現(xiàn)的數(shù)據(jù)復制,在主備集群復制方案下,備集群數(shù)據(jù)回放保證事務原子性、一致性。
2、本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
3、一種實現(xiàn)事務一致性復制的方法,該方法在分布式數(shù)據(jù)庫上實現(xiàn),基于raft共識算法,支持cdc捕獲數(shù)據(jù)變更進行數(shù)據(jù)復制功能,對于cdc數(shù)據(jù)進行復制回放時,支持事務原子性,保證數(shù)據(jù)的事務完整性,保證主備事務一致性;該方法的實現(xiàn)方式如下:
4、分布式數(shù)據(jù)庫在全局(跨機器)范圍內(nèi),提交了多個事務;
5、對全局范圍內(nèi),提交的多個事務進行回放;
6、回放事務時,能夠判斷事務包含的操作數(shù)以及事務順序;
7、回放某個事務時,如果該事務的全部操作都接收到了,則該事務就可以進行回放;
8、隱式事務事務可以直接回放。
9、本方法在分布式數(shù)據(jù)庫中基于raft共識協(xié)議,捕獲數(shù)據(jù)變更進行數(shù)據(jù)復制,保證事務完整性、一致性的方案,用于保證備庫數(shù)據(jù)具有事務語義,保證分布式事務的一致性。
10、進一步的,該方法實現(xiàn)的具體過程如下:
11、1)cdc捕獲數(shù)據(jù)變更在raft共識協(xié)議基礎(chǔ)上,捕獲共識的kv數(shù)據(jù);對于每個數(shù)據(jù)變更,記錄相應的事務id及操作;事務提交時,記錄事務id及事務涉及的操作數(shù);
12、2)主集群進行cdc數(shù)據(jù)捕獲時,記錄一個事務涉及的數(shù)據(jù)變更數(shù)量以及該事務的事務id;數(shù)據(jù)傳輸時,除了傳輸變更數(shù)據(jù),增加事務id及事務涉及的變更數(shù)的傳輸;
13、3)在備集群,接收到數(shù)據(jù)后,首先根據(jù)事務id做數(shù)據(jù)聚合操作,如果該事務聚合的變更數(shù)據(jù)記錄與該事務的變更數(shù)相同,則認為該事務的所有操作全部發(fā)送到了備集群,可以進行該事務的數(shù)據(jù)回放,從而保證事務的原子性;
14、4)raft共識協(xié)議保證數(shù)據(jù)捕獲變更的順序性,每個range上事務有序;
15、5)回放時,從cdc隊列中讀取數(shù)據(jù)變更操作,根據(jù)事務id進行聚合操作,通過每個range上事務的順序,生成事務的依賴關(guān)系,依據(jù)事務的先后順序進行回放,從而保證事務的一致性;
16、6)回放成功后,清理緩存中該事物的操作隊列。
17、進一步的,單個事務的復制回放流程如下:
18、s1、主集群進行事務操作,包括數(shù)據(jù)寫入及事務提交;
19、s2、cdc捕獲事務的每個操作,并且在事務結(jié)束時攜帶總操作數(shù);
20、s3、備集群在接收到所有的操作及操作數(shù)后,進行數(shù)據(jù)對比,全部接收后進行回放。
21、進一步的,該方法實現(xiàn)一致性保證的流程如下:
22、設(shè)定分布式數(shù)據(jù)庫提交有多個事務,每個事務均包含事務id及對應kv值;
23、s1、隨時間增長,多個事務對多個range進行多個數(shù)據(jù)操作;
24、s2、cdc對每個range捕獲一組數(shù)據(jù),這組數(shù)據(jù)包含多個事務的操作,同時說明了該range事務的執(zhí)行順序,形成沖突隊列;
25、s3、根據(jù)所述事務沖突隊列,生成事務的等待隊列;
26、s4、最早的事務回放完成后,更新隊列,循環(huán)執(zhí)行最早事務,以此保證事務執(zhí)行順序,保證事務一致性。
27、本發(fā)明還要求保護一種實現(xiàn)事務一致性復制的系統(tǒng),該系統(tǒng)應用于分布式數(shù)據(jù)庫,基于raft共識算法,支持cdc捕獲數(shù)據(jù)變更進行數(shù)據(jù)復制功能,對于cdc數(shù)據(jù)進行復制回放時,支持事務原子性,保證數(shù)據(jù)的事務完整性,保證主備事務一致性;實現(xiàn)方式如下:
28、分布式數(shù)據(jù)庫在全局(跨機器)范圍內(nèi),提交了多個事務;
29、對全局范圍內(nèi),提交的多個事務進行回放;
30、回放事務時,能夠判斷事務包含的操作數(shù)以及事務順序;
31、回放某個事務時,如果該事務的全部操作都接收到了,則該事務就可以進行回放;
32、隱式事務事務可直接回放。
33、進一步的,該系統(tǒng)實現(xiàn)事務一致性復制的具體過程如下:
34、1)cdc捕獲數(shù)據(jù)變更在raft共識協(xié)議基礎(chǔ)上,捕獲共識的kv數(shù)據(jù);對于每個數(shù)據(jù)變更,記錄相應的事務id及操作;事務提交時,記錄事務id及事務涉及的操作數(shù);
35、2)主集群進行cdc數(shù)據(jù)捕獲時,記錄一個事務涉及的數(shù)據(jù)變更數(shù)量以及該事務的事務id;數(shù)據(jù)傳輸時,除了傳輸變更數(shù)據(jù),增加事務id及事務涉及的變更數(shù)的傳輸;
36、3)在備集群,接收到數(shù)據(jù)后,首先根據(jù)事務id做數(shù)據(jù)聚合操作,如果該事務聚合的變更數(shù)據(jù)記錄與該事務的變更數(shù)相同,則認為該事務的所有操作全部發(fā)送到了備集群,可以進行該事務的數(shù)據(jù)回放,從而保證事務的原子性;
37、4)raft共識協(xié)議保證數(shù)據(jù)捕獲變更的順序性,每個range上事務有序;
38、5)回放時,從cdc隊列中讀取數(shù)據(jù)變更操作,根據(jù)事務id進行聚合操作,通過每個range上事務的順序,生成事務的依賴關(guān)系,依據(jù)事務的先后順序進行回放,從而保證事務的一致性;
39、6)回放成功后,清理緩存中該事物的操作隊列。
40、進一步的,單個事務的復制回放流程如下:
41、s1、主集群進行事務操作,包括數(shù)據(jù)寫入及事務提交;
42、s2、cdc捕獲事務的每個操作,并且在事務結(jié)束時攜帶總操作數(shù);
43、s3、備集群在接收到所有的操作及操作數(shù)后,進行數(shù)據(jù)對比,全部接收后進行回放。
44、進一步的,該系統(tǒng)實現(xiàn)一致性保證的流程如下:
45、設(shè)定分布式數(shù)據(jù)庫提交有多個事務,每個事務均包含事務id及對應kv值;
46、s1、隨時間增長,多個事務對多個range進行多個數(shù)據(jù)操作;
47、s2、cdc會對每個range捕獲一組數(shù)據(jù),這組數(shù)據(jù)包含多個事務的操作,同時說明了該range事務的執(zhí)行順序,形成沖突隊列;
48、s3、根據(jù)事務沖突隊列,生成事務的等待隊列;
49、s4、最早的事務回放完成后,更新隊列,循環(huán)執(zhí)行最早事務,以此保證事務執(zhí)行順序,保證事務一致性。
50、本發(fā)明還要求保護一種實現(xiàn)事務一致性復制的裝置,包括:至少一個存儲器和至少一個處理器;
51、所述至少一個存儲器,用于存儲機器可讀程序;
52、所述至少一個處理器,用于調(diào)用所述機器可讀程序,實現(xiàn)上述的方法。
53、本發(fā)明還要求保護一種計算機可讀介質(zhì),所述計算機可讀介質(zhì)上存儲有計算機指令,所述計算機指令在被處理器執(zhí)行時,能夠?qū)崿F(xiàn)上述的方法。
54、本發(fā)明的一種實現(xiàn)事務一致性復制的方法及系統(tǒng)與現(xiàn)有技術(shù)相比,具有以下有益效果:
55、在主備庫集群同等規(guī)模和配置情況下,針對備庫數(shù)據(jù)完整性,備庫發(fā)生故障時能夠保證單個事務的事務原子性、主被事務的一致性。
56、在以cdc為基礎(chǔ)實現(xiàn)的主備集群復制方案下,備集群如果發(fā)生某些故障,導致主集群發(fā)來的數(shù)據(jù)變更沒有得到全部應用,可能分裂一個事務的多個操作,對此對事務的操作變更數(shù)進行統(tǒng)計,回放時進行校驗,可以保證事務的原子性,進而保證數(shù)據(jù)的完整性。
57、通過事務依賴關(guān)系,保證備庫事務的回放順序,進而保證主被事務的一致性。