System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及數據庫,特別是涉及一種存量數據不上鎖遷移并與增量數據同步銜接的方法和設備。
技術介紹
1、隨著信息化建設的高速發展、數據同步及共享技術的普及,許許多多的業務系統往往都在一周7x24小時的運行著。對在線數據的遷移和同步,要求也變得越來越高。
2、傳統的遷移同步方法,是先對業務表上共享鎖,然后進行存量數據遷移,然后銜接增量數據同步。這種方法,雖然也能達到存量數據遷移后,再準確銜接上增量數據同步的目的。但該種方法,存在兩個致命的缺陷,第一個缺陷:如果業務一直比較繁忙,可能會導致業務表根本無法被上共享鎖,那之后的存量數據遷移和增量數據同步也就根本無法進行下去了。第二個缺陷:如果遷移同步工具已經對業務表上共享鎖了,那正常業務的提交,就需要等待業務表的共享鎖被遷移同步工具釋放之后,才能再次進行相關的業務操作。而根據業務表數據量的不同,解鎖時間可能會有較大差異,不利于現階段越來越高要求的同步需求。基于上述兩個缺陷,一種在不影響業務的情況下,進行不上鎖的存量數據遷移,并與增量數據同步準確銜接的方法,就顯得尤為必要。
3、鑒于此,如何克服現有技術所存在的缺陷,解決上述不上鎖的存量數據遷移,并與增量數據同步準確銜接的技術問題,是本
待解決的難題。
技術實現思路
1、針對現有技術的缺陷或改進需求:如何在不影響業務的情況下,進行不上鎖的存量數據遷移,并與增量數據同步準確銜接。本專利技術提供一種存量數據不上鎖遷移并與增量數據同步銜接的方法和設備,采用不上鎖方式,在
2、本專利技術實施例采用如下技術方案:
3、第一方面,本專利技術提供了一種存量數據不上鎖遷移并與增量數據同步銜接的方法,包括:
4、目標數據庫建立輔助表,所述輔助表包括源數據庫獲取的當前源數據庫存量數據的相關信息;
5、目標數據庫接收源數據庫進行不上鎖方式下讀取得到的存量數據,并將所述存量數據執行入庫;
6、目標數據庫對于接收的源數據庫的增量數據,將源數據庫的增量數據中相關事務與輔助表中相關信息進行對比,符合條件的執行入庫。
7、在一個可選的實施方式中,所述輔助表包括字段:table_name、commit_lsn、next_commit_trxid以及active_trxs,其中,table_name表示業務表名、commit_lsn表示提交lsn、next_commit_trxid表示下次將提交的事務id、active_trxs表示可見性活動事務列表。
8、在一個可選的實施方式中,所述目標數據庫建立輔助表具體包括:
9、目標數據庫接收源數據庫發送的current_active_trxs、next_commit_trxid以及current_lsn_2,保存在輔助表中;其中,current_active_trxs保存在輔助表的active_trxs字段;next_commit_trxid保存在輔助表的next_commit_trxid字段;current_lsn_2保存在輔助表的commit_lsn字段。
10、在一個可選的實施方式中,所述源數據庫獲取當前源數據庫存量數據的相關信息具體包括:
11、源數據庫獲取自身數據庫當前lsn,記為current_lsn_1;
12、查詢源數據庫事務相關視圖,等待比current_lsn_1小的事務均提交完成后,再次獲取源數據庫的當前lsn,記為current_lsn_2;
13、將用于讀取源數據庫業務數據的連接記為conn1,并設置為串行化策略;
14、在conn1下,查詢本連接可見的所有活動事務,記為current_active_trxs;查詢下一個即將要提交的事務id,記為next_commit_trxid;
15、將獲取的current_active_trxs、next_commit_trxid以及current_lsn_2一起發送至目標數據庫。
16、在一個可選的實施方式中,所述源數據庫進行不上鎖方式下讀取得到存量數據具體包括:
17、源數據庫在conn1下,采用不上鎖的方式直接查詢業務表的數據,發往目標數據庫,業務表記為table_yw。
18、在一個可選的實施方式中,所述目標數據庫接收源數據庫進行不上鎖方式下讀取得到的存量數據,并將所述存量數據執行入庫具體包括:
19、目標數據庫接收源數據庫端發送的業務表table_yw的數據,以sql方式執行入庫。
20、在一個可選的實施方式中,所述目標數據庫對于接收的源數據庫的增量數據,將源數據庫的增量數據中相關事務與輔助表中相關信息進行對比,符合條件的執行入庫具體包括:
21、當相關事務id比輔助表中下次將提交的事務id小,且在可見性活動事務列表中時,判斷相關事務中提交操作lsn與輔助表中登記的提交lsn的大小;
22、當相關事務中提交操作lsn大于輔助表中登記的提交lsn時,執行入庫,并使用相關事務中提交操作lsn更新替代輔助表中提交lsn字段值。
23、在一個可選的實施方式中,當相關事務id比輔助表中下次將提交的事務id小,且不在可見性活動事務列表中時,將相關事務過濾掉。
24、在一個可選的實施方式中,當相關事務中提交操作lsn小于等于輔助表中登記的提交lsn時,忽略該相關事務。
25、另一方面,本專利技術提供了一種存量數據不上鎖遷移并與增量數據同步銜接的設備,具體為:包括至少一個處理器和存儲器,至少一個處理器和存儲器之間通過數據總線連接,存儲器存儲能被至少一個處理器執行的指令,指令在被處理器執行后,用于完成第一方面中的存量數據不上鎖遷移并與增量數據同步銜接的方法。
26、與現有技術相比,本專利技術的有益效果在于:本專利技術提供一種存量數據不上鎖遷移并與增量數據同步銜接的方法和設備,采用不上鎖方式,在線的對業務數據表進行數據讀取和發送;對讀取存量數據期間,產生的數據庫當前相關信息進行記錄和發送。同步模塊在做完存量數據入庫之后,再依據當前相關信息進行綜合判定,判定出增量數據與存量數據的銜接點,并完成后續的增量數據同步。通過上述方法,本專利技術實施例可以在不影響業務的情況下,進行不上鎖的存量數據遷移,并與增量數據同步準確銜接。
本文檔來自技高網...【技術保護點】
1.一種存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,包括:
2.根據權利要求1所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述輔助表包括字段:TABLE_NAME、COMMIT_LSN、NEXT_COMMIT_TRXID以及ACTIVE_TRXS,其中,TABLE_NAME表示業務表名、COMMIT_LSN表示提交LSN、NEXT_COMMIT_TRXID表示下次將提交的事務ID、ACTIVE_TRXS表示可見性活動事務列表。
3.根據權利要求2所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述目標數據庫建立輔助表具體包括:
4.根據權利要求1所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述源數據庫獲取當前源數據庫存量數據的相關信息具體包括:
5.根據權利要求4所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述源數據庫進行不上鎖方式下讀取得到存量數據具體包括:
6.根據權利要求5所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其
7.根據權利要求1所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述目標數據庫對于接收的源數據庫的增量數據,將源數據庫的增量數據中相關事務與輔助表中相關信息進行對比,符合條件的執行入庫具體包括:
8.根據權利要求7所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,當相關事務ID比輔助表中下次將提交的事務ID小,且不在可見性活動事務列表中時,將相關事務過濾掉。
9.根據權利要求7所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,當相關事務中提交操作LSN小于等于輔助表中登記的提交LSN時,忽略該相關事務。
10.一種存量數據不上鎖遷移并與增量數據同步銜接的設備,其特征在于:
...【技術特征摘要】
1.一種存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,包括:
2.根據權利要求1所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述輔助表包括字段:table_name、commit_lsn、next_commit_trxid以及active_trxs,其中,table_name表示業務表名、commit_lsn表示提交lsn、next_commit_trxid表示下次將提交的事務id、active_trxs表示可見性活動事務列表。
3.根據權利要求2所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述目標數據庫建立輔助表具體包括:
4.根據權利要求1所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述源數據庫獲取當前源數據庫存量數據的相關信息具體包括:
5.根據權利要求4所述的存量數據不上鎖遷移并與增量數據同步銜接的方法,其特征在于,所述源數據庫進行不上鎖方式下讀取得...
【專利技術屬性】
技術研發人員:孫峰,張峰,彭青松,劉啟春,
申請(專利權)人:武漢達夢數據庫股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。