System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現(xiàn)步驟摘要】
本申請涉及數(shù)據(jù)處理領域,并且更具體地,涉及一種數(shù)據(jù)同步方法和裝置、計算設備、計算設備集群、計算機程序產(chǎn)品以及計算機可讀存儲介質(zhì)。
技術介紹
1、在數(shù)據(jù)容災(disaster?tolerance)、備份等應用場景中,需要在源數(shù)據(jù)庫和目標數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)同步。為了減少數(shù)據(jù)同步對業(yè)務的影響,數(shù)據(jù)同步要支持不停服遷移,即在線遷移,以實現(xiàn)在數(shù)據(jù)同步的過程中,實現(xiàn)業(yè)務0停機。
2、在線遷移主要包括三個階段,即結構遷移、全量數(shù)據(jù)同步和增量數(shù)據(jù)同步。在相關的技術方案中,全量數(shù)據(jù)同步啟動后,需要開始對增量數(shù)據(jù)的抽取和保存,以便在增量數(shù)據(jù)同步階段,能夠與全量數(shù)據(jù)接續(xù),保證數(shù)據(jù)的完整性和一致性。當全量數(shù)據(jù)同步結束后,保存的增量數(shù)據(jù)會進行解析和回放,直到使得目標數(shù)據(jù)庫中的數(shù)據(jù)與源數(shù)據(jù)庫中的數(shù)據(jù)一致。
3、然而,增量數(shù)據(jù)與全量數(shù)據(jù)有重復的部分,這些重復的部分被多次傳輸,導致數(shù)據(jù)同步的效率較低。
技術實現(xiàn)思路
1、本申請?zhí)峁┮环N數(shù)據(jù)同步方法,該方法提高了數(shù)據(jù)同步的效率。
2、第一方面,提供了一種數(shù)據(jù)同步方法,該方法用于把源數(shù)據(jù)庫的數(shù)據(jù)傳輸?shù)侥繕藬?shù)據(jù)庫,該方法包括:數(shù)據(jù)同步裝置在第一時刻開始從該源數(shù)據(jù)庫中抽取增量數(shù)據(jù),其中,該增量數(shù)據(jù)是該源數(shù)據(jù)庫在該第一時刻之后被插入、更新或刪除的數(shù)據(jù);該數(shù)據(jù)同步裝置根據(jù)該源數(shù)據(jù)庫在第二時刻的待同步數(shù)據(jù)的快照,將該待同步數(shù)據(jù)傳輸?shù)皆撃繕藬?shù)據(jù)庫中,其中,該第一時刻在該第二時刻之前;該數(shù)據(jù)同步裝置過濾該增量數(shù)據(jù)中與該待同步數(shù)據(jù)重復的數(shù)據(jù);該數(shù)據(jù)
3、本申請實施例提供的數(shù)據(jù)同步方法,在回放增量數(shù)據(jù)前,還要過濾增量數(shù)據(jù)。過濾后的增量數(shù)據(jù)不包含與已經(jīng)傳輸?shù)侥繕藬?shù)據(jù)庫的數(shù)據(jù)重復的部分,從而避免了已傳輸?shù)侥繕藬?shù)據(jù)庫中的數(shù)據(jù)被重復地回放,提高了數(shù)據(jù)同步的效率。另一方面,相關的技術方案在全量數(shù)據(jù)同步階段啟動之后,才開始增量數(shù)據(jù)的抽取,這樣導致部分增量數(shù)據(jù)缺失。本申請實施例提供的數(shù)據(jù)同步方法,在全量數(shù)據(jù)同步階段啟動之前,開始抽取增量數(shù)據(jù),避免了數(shù)據(jù)缺失,提高了數(shù)據(jù)同步的一致性和完整性。
4、結合第一方面,在第一方面的某些實現(xiàn)方式中,該源數(shù)據(jù)庫包括多個數(shù)據(jù)分片,該待同步數(shù)據(jù)分片是該多個數(shù)據(jù)分片之一。
5、在相關的技術方案中,如果全量數(shù)據(jù)同步階段中斷,只能重新進行所有數(shù)據(jù)的同步,容錯性較低。本申請實施例提供的數(shù)據(jù)同步方法,通過將全量數(shù)據(jù)同步階段的數(shù)據(jù)進行分片,以數(shù)據(jù)分片為粒度進行傳輸,實現(xiàn)了全量數(shù)據(jù)同步階段的斷點續(xù)傳,提高了數(shù)據(jù)同步的容錯性。另一方面,相關技術方案在全量數(shù)據(jù)同步階段需要保存所有數(shù)據(jù)的快照,本申請實施例提供的數(shù)據(jù)同步方法,在傳輸完一個數(shù)據(jù)分片之后,可以選擇刪除該數(shù)據(jù)分片的快照,釋放了存儲資源,提高了數(shù)據(jù)庫查詢的速度。
6、結合第一方面,在第一方面的某些實現(xiàn)方式中,該數(shù)據(jù)同步裝置過濾該增量數(shù)據(jù)中與該待同步數(shù)據(jù)重復的數(shù)據(jù),包括:該數(shù)據(jù)同步裝置獲取該待同步數(shù)據(jù)的快照信息;該數(shù)據(jù)同步裝置將該快照信息與該增量數(shù)據(jù)的事務信息進行可見性判斷,以過濾該增量數(shù)據(jù)中與該待同步數(shù)據(jù)重復的數(shù)據(jù)。
7、本申請實施例提供的數(shù)據(jù)同步方法,在回放增量數(shù)據(jù)前,還要根據(jù)快照信息過濾增量數(shù)據(jù)。過濾后的增量數(shù)據(jù)不包含與已經(jīng)傳輸?shù)侥繕藬?shù)據(jù)庫的數(shù)據(jù)重復的部分,從而避免了已傳輸?shù)侥繕藬?shù)據(jù)庫中的數(shù)據(jù)被重復地回放,提高了數(shù)據(jù)同步的效率。
8、結合第一方面,在第一方面的某些實現(xiàn)方式中,該源數(shù)據(jù)庫是以postgresql為數(shù)據(jù)源的數(shù)據(jù)庫。
9、結合第一方面,在第一方面的某些實現(xiàn)方式中,該方法還包括:該數(shù)據(jù)同步裝置確定該增量數(shù)據(jù)的世代信息;該數(shù)據(jù)同步裝置將該世代信息加入該增量數(shù)據(jù)的事務信息;其中,該數(shù)據(jù)同步裝置將該快照信息與該增量數(shù)據(jù)的事務信息進行可見性判斷,包括:該數(shù)據(jù)同步裝置將該快照信息與帶有世代信息的事務信息進行可見性判斷。
10、增量數(shù)據(jù)的事務信息可能不包含世代信息,與全量數(shù)據(jù)的快照信息進行可見性判斷時,需要將增量數(shù)據(jù)的事務信息進行格式轉換。本申請實施例提供的方法通過將世代信息加入增量數(shù)據(jù)的事務信息中,提高了可見性判斷的準確性,從而能夠準確地過濾增量數(shù)據(jù),提高數(shù)據(jù)同步的效率。
11、結合第一方面,在第一方面的某些實現(xiàn)方式中,該數(shù)據(jù)同步裝置在第一時刻開始從該源數(shù)據(jù)庫中抽取增量數(shù)據(jù),包括:該數(shù)據(jù)同步裝置在該第一時刻確定邏輯復制槽,其中,該邏輯復制槽用于傳輸和控制該增量數(shù)據(jù),該邏輯復制槽包括位點;其中,該數(shù)據(jù)同步裝置確定該增量數(shù)據(jù)的世代信息,包括:該數(shù)據(jù)同步裝置在該邏輯復制槽的位點推進時,獲取基準點;該數(shù)據(jù)同步裝置根據(jù)該基準點與該增量數(shù)據(jù),確定該增量數(shù)據(jù)的世代信息。
12、本申請實施例中,在邏輯復制槽推進位點時獲取基準點,根據(jù)基準點和增量數(shù)據(jù)可以確定世代信息,從而實現(xiàn)了數(shù)據(jù)分片的快照信息與增量數(shù)據(jù)的事務信息的可見性判斷,進而能夠準確地過濾增量數(shù)據(jù),提高數(shù)據(jù)同步的效率。另一方面,以上操作只需要源數(shù)據(jù)庫的讀取(select)權限,將用戶的授權范圍降到了最低。
13、結合第一方面,在第一方面的某些實現(xiàn)方式中,該待同步數(shù)據(jù)包括至少一條記錄,每條記錄對應一個標識,該方法還包括:該數(shù)據(jù)同步裝置根據(jù)該待同步數(shù)據(jù)的至少一條記錄對應的標識,獲取該待同步數(shù)據(jù)的快照。
14、本申請實施例中,通過數(shù)據(jù)分片中記錄的標識進行全量數(shù)據(jù)同步階段的數(shù)據(jù)分片,得到的各個數(shù)據(jù)分片之間不重疊,各個數(shù)據(jù)分片的總和構成全量數(shù)據(jù)同步階段的數(shù)據(jù),從而提升了數(shù)據(jù)同步的效率和完整性。
15、結合第一方面,在第一方面的某些實現(xiàn)方式中,該待同步數(shù)據(jù)分片的至少一條記錄對應的標識屬于一個區(qū)間。
16、本申請實施例中,將記錄的標識按照所屬區(qū)間進行分片,得到的各個數(shù)據(jù)分片之間不重疊,各個數(shù)據(jù)分片的總和構成全量數(shù)據(jù)同步階段的數(shù)據(jù),從而提升了數(shù)據(jù)同步的效率和完整性。
17、結合第一方面,在第一方面的某些實現(xiàn)方式中,該多個數(shù)據(jù)分片的記錄對應的標識不重疊。
18、本申請實施例中,源數(shù)據(jù)庫的數(shù)據(jù)被分為多個數(shù)據(jù)分片,各個數(shù)據(jù)分片之間不重疊,各個數(shù)據(jù)分片的總和構成全量數(shù)據(jù)同步階段的數(shù)據(jù),從而提升了數(shù)據(jù)同步的效率和完整性。
19、結合第一方面,在第一方面的某些實現(xiàn)方式中,該方法應用于云數(shù)據(jù)中心。
20、第二方面,本申請實施例提供一種數(shù)據(jù)同步裝置,該數(shù)據(jù)同步裝置包括用于實現(xiàn)第一方面或第一方面的任意一種可能的實現(xiàn)方式的模塊。
21、第三方面,提供了一種計算設備,包括處理器和存儲器,該處理器用于執(zhí)行該存儲器中存儲的指令,以使得該計算設備執(zhí)行第一方面或者第一方面的任意一種可能的實現(xiàn)方式的數(shù)據(jù)同步方法。
22、第四方面,提供了一種計算設備集群,包括至少一個計算設備,每個計算設備包括處理器和存儲器;該至少一個計算設備的處理器用于執(zhí)行該至少一個計算設備的存儲器中存儲的指令,以使得該計算設備集群執(zhí)行第一方面或者第一方面的任意一種可能的實現(xiàn)方式本文檔來自技高網(wǎng)...
【技術保護點】
1.一種數(shù)據(jù)同步方法,其特征在于,所述方法用于把源數(shù)據(jù)庫的數(shù)據(jù)傳輸?shù)侥繕藬?shù)據(jù)庫,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述源數(shù)據(jù)庫包括多個數(shù)據(jù)分片,所述待同步數(shù)據(jù)是所述多個數(shù)據(jù)分片之一。
3.根據(jù)權利要求1或2所述的方法,其特征在于,所述數(shù)據(jù)同步裝置過濾所述增量數(shù)據(jù)中與所述待同步數(shù)據(jù)重復的數(shù)據(jù),包括:
4.根據(jù)權利要求1至3中任意一項所述的方法,其特征在于,所述源數(shù)據(jù)庫是以PostgreSQL為數(shù)據(jù)源的數(shù)據(jù)庫。
5.根據(jù)權利要求3所述的方法,其特征在于,還包括:
6.根據(jù)權利要求5所述的方法,其特征在于,所述數(shù)據(jù)同步裝置在第一時刻開始從所述源數(shù)據(jù)庫中抽取增量數(shù)據(jù),包括:
7.根據(jù)權利要求2至6中任意一項所述的方法,其特征在于,所述待同步數(shù)據(jù)包括至少一條記錄,每條記錄對應一個標識,所述方法還包括:
8.根據(jù)權利要求7所述的方法,其特征在于,所述待同步數(shù)據(jù)的至少一條記錄對應的標識屬于一個區(qū)間。
9.根據(jù)權利要求7或8所述的方法,其特征在于,所述多個數(shù)據(jù)分片的記錄對應的標
10.根據(jù)權利要求1至9中任意一項所述的方法,其特征在于,所述方法應用于云數(shù)據(jù)中心。
11.一種數(shù)據(jù)同步裝置,其特征在于,所述裝置用于把源數(shù)據(jù)庫的數(shù)據(jù)傳輸?shù)侥繕藬?shù)據(jù)庫,所述裝置包括:
12.根據(jù)權利要求11所述的裝置,其特征在于,所述源數(shù)據(jù)庫包括多個數(shù)據(jù)分片,所述待同步數(shù)據(jù)是所述多個數(shù)據(jù)分片之一。
13.根據(jù)權利要求11或12所述的裝置,其特征在于,所述過濾模塊具體用于:
14.根據(jù)權利要求11至13中任意一項所述的裝置,其特征在于,所述源數(shù)據(jù)庫是以PostgreSQL為數(shù)據(jù)源的數(shù)據(jù)庫。
15.根據(jù)權利要求13所述的裝置,其特征在于,還包括:
16.根據(jù)權利要求15所述的裝置,其特征在于,所述抽取模塊具體用于在所述第一時刻確定邏輯復制槽,其中,所述邏輯復制槽用于傳輸和控制所述增量數(shù)據(jù),所述邏輯復制槽包括位點;
17.根據(jù)權利要求12至16中任意一項所述的裝置,其特征在于,所述待同步數(shù)據(jù)包括至少一條記錄,每條記錄對應一個標識,所述裝置還包括:
18.根據(jù)權利要求17所述的裝置,其特征在于,所述待同步數(shù)據(jù)的至少一條記錄對應的標識屬于一個區(qū)間。
19.根據(jù)權利要求17或18所述的裝置,其特征在于,所述多個數(shù)據(jù)分片的記錄對應的標識不重疊。
20.根據(jù)權利要求11至19中任意一項所述的裝置,其特征在于,所述裝置應用于云數(shù)據(jù)中心。
21.一種計算設備,其特征在于,包括處理器和存儲器,所述處理器用于執(zhí)行所述存儲器中存儲的指令,以使得所述計算設備執(zhí)行如權利要求1至10中任意一項所述的方法。
22.一種計算設備集群,其特征在于,包括至少一個計算設備,每個計算設備包括處理器和存儲器;
23.一種包含指令的計算機程序產(chǎn)品,其特征在于,當所述指令被計算設備運行時,使得所述計算設備執(zhí)行如權利要求1至10中任意一項所述的方法。
24.一種包含指令的計算機程序產(chǎn)品,其特征在于,當所述指令被計算設備集群運行時,使得所述計算設備集群執(zhí)行如權利要求1至10中任意一項所述的方法。
25.一種計算機可讀存儲介質(zhì),其特征在于,包括計算機程序指令,當所述計算機程序指令由計算設備執(zhí)行時,所述計算設備執(zhí)行如權利要求1至10中任意一項所述的方法。
26.一種計算機可讀存儲介質(zhì),其特征在于,包括計算機程序指令,當所述計算機程序指令由計算設備集群執(zhí)行時,所述計算設備集群執(zhí)行如權利要求1至10中任意一項所述的方法。
...【技術特征摘要】
1.一種數(shù)據(jù)同步方法,其特征在于,所述方法用于把源數(shù)據(jù)庫的數(shù)據(jù)傳輸?shù)侥繕藬?shù)據(jù)庫,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述源數(shù)據(jù)庫包括多個數(shù)據(jù)分片,所述待同步數(shù)據(jù)是所述多個數(shù)據(jù)分片之一。
3.根據(jù)權利要求1或2所述的方法,其特征在于,所述數(shù)據(jù)同步裝置過濾所述增量數(shù)據(jù)中與所述待同步數(shù)據(jù)重復的數(shù)據(jù),包括:
4.根據(jù)權利要求1至3中任意一項所述的方法,其特征在于,所述源數(shù)據(jù)庫是以postgresql為數(shù)據(jù)源的數(shù)據(jù)庫。
5.根據(jù)權利要求3所述的方法,其特征在于,還包括:
6.根據(jù)權利要求5所述的方法,其特征在于,所述數(shù)據(jù)同步裝置在第一時刻開始從所述源數(shù)據(jù)庫中抽取增量數(shù)據(jù),包括:
7.根據(jù)權利要求2至6中任意一項所述的方法,其特征在于,所述待同步數(shù)據(jù)包括至少一條記錄,每條記錄對應一個標識,所述方法還包括:
8.根據(jù)權利要求7所述的方法,其特征在于,所述待同步數(shù)據(jù)的至少一條記錄對應的標識屬于一個區(qū)間。
9.根據(jù)權利要求7或8所述的方法,其特征在于,所述多個數(shù)據(jù)分片的記錄對應的標識不重疊。
10.根據(jù)權利要求1至9中任意一項所述的方法,其特征在于,所述方法應用于云數(shù)據(jù)中心。
11.一種數(shù)據(jù)同步裝置,其特征在于,所述裝置用于把源數(shù)據(jù)庫的數(shù)據(jù)傳輸?shù)侥繕藬?shù)據(jù)庫,所述裝置包括:
12.根據(jù)權利要求11所述的裝置,其特征在于,所述源數(shù)據(jù)庫包括多個數(shù)據(jù)分片,所述待同步數(shù)據(jù)是所述多個數(shù)據(jù)分片之一。
13.根據(jù)權利要求11或12所述的裝置,其特征在于,所述過濾模塊具體用于:
14.根據(jù)權利要求11至13中任意一項所述的裝置,其特征在于,所述源數(shù)據(jù)庫是以postgresql為數(shù)據(jù)源的數(shù)據(jù)庫。
15.根據(jù)權利要求13所述的裝...
【專利技術屬性】
技術研發(fā)人員:曹永杰,趙經(jīng)緯,李建新,
申請(專利權)人:華為云計算技術有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。