本發明涉及有數據庫遷移以及數據庫備份恢復,尤其涉及一種基于塊文件的mysql數據庫遷移方法及系統。
背景技術:
1、mysql數據庫遷移技術是將一個mysql數據庫系統中的數據從一個存儲介質或平臺全量遷移到另一個存儲介質或平臺的過程。這涉及到數據的提取、轉換、加載(etl)以及確保數據在遷移過程中的一致性和完整性。目前常見方式有如下幾種,1、通過數據庫驅動連接查詢全表,如:java語言通過jdbc驅動,使用select語句查詢全表數據到目標庫執行insert操作;2、解析數據庫日志文件,然后轉為數據模型,最后拼接成insert語句到目標庫執行插入,如mysql讀取binlog日志解析后到目標庫執行數據還原。3、快照文件遷移,停止源端數據庫服務,然后將整個源端服務器文件拷貝至目標服務器上,然后在目標服務器執行還原操作。
2、現有技術的缺點在于:(1)通過數據庫驅動連接查詢全表:會返回表中的所有記錄,如果表中數據量很大,這會導致大量的數據在網絡上傳輸,增加網絡負載和響應時間。如果查詢結果集非常大,可能會導致應用程序內存不足,尤其是在內存資源有限的環境中。全表掃描會對數據庫服務器造成較大的負載,特別是在高并發環境下,可能導致數據庫性能下降。全表查詢會返回表中的所有字段和記錄,這可能會導致敏感數據的暴露,尤其是在沒有適當的安全措施的情況下。(2)解析數據庫日志文件:當數據量大時,需要解析全部binlog文件,效率比較慢。(3)停機遷移整個服務器:需要停止源端數據庫服務,影響生產業務的執行。
技術實現思路
1、本發明的目的在于提供一種基于塊文件的mysql數據庫遷移方法及系統,在塊文件遷移基礎上結合增量日志實現熱遷移數據庫。
2、本發明采用的技術方案是:
3、一種基于塊文件的mysql數據庫遷移系統,其包括以下模塊:
4、快照文件遷移模塊:提供快照文件生成服務和快照文件傳輸服務;快照文件生成服務用于創建數據庫在某一時間點的完整副本的快照文件并將生成的快照文件存儲在指定位置;快照文件傳輸服務將生成的快照文件從源服務器傳輸到目標服務器
5、增量數據模塊:提供增量數據抽取服務、增量數據轉換服務和增量數據寫入服務;增量數據抽取服務在快照文件遷移中,捕獲和傳輸新產生的數據變化,以確保源數據庫和目標數據庫之間的數據一致性;增量數據轉換服務將從源數據庫捕獲的增量數據進行必要的轉換,以確保這些數據能夠在目標數據庫中正確應用;增量數據寫入服務將經過轉換的增量數據寫入目標數據庫,確保數據的完整性和一致性,同時盡量減少對目標數據庫的影響。
6、進一步地,快照文件傳輸服務對快照文件進行加密,保證數據傳輸安全。
7、進一步地,增量數據抽取服務基于數據庫日志,實時或定期捕獲源數據庫中的新增、修改和刪除操作,并將捕獲到的數據變化緩存到本地磁盤目錄。
8、具體地,作為一種較優實施方式,增量數據抽取服務的磁盤緩存改為內存緩存。這樣可以減少磁盤io的讀寫,提高增量數據的解析效率。
9、進一步地,增量數據轉換服務對捕獲到的數據進行必要的轉換,包括數據映射、格式轉換等,以適應目標數據庫的結構和要求;再利用數據一致性算法(如摘要算法)進行數據校驗,實現數據文件的一致性和完整性。
10、進一步地,增量數據寫入服務將轉換后的增量數據寫入目標數據庫,并利用數據庫事務技術實現dml操作的完整性和一致性;同時記錄寫入過程中的詳細信息,便于后續審計和問題排查。
11、一種基于塊文件的mysql數據庫遷移方法,其包括以下步驟:
12、步驟1,快照文件生成服務對源數據庫目錄生成快照存儲到指定本地磁盤目錄,并記錄下當前快照生成時間作為后續服務調用的時間戳;快照文件傳輸服務再將快照文傳輸到目標庫服務器上;
13、具體地,步驟1中快照記錄下數據庫當前時刻所有數據,包括業務數據、配置數據、系統數據等。
14、進一步地,步驟1具體包括以下步驟:
15、步驟1-1,快照文件生成服務調用操作系統底層接口對源數據庫目錄生成快照存儲到指定本地磁盤目錄,并記錄下當前快照生成時間作為后續服務調用的時間戳;
16、步驟1-2,快照文件傳輸服務在傳輸快照前生成文件的校驗碼(如采用?md5、sha-256),并對快照文件進行壓縮;然后使用高效的安全的數據傳輸協議(如tcp/ip協議、https協議)將快照文件和文件校驗碼傳輸到目標庫服務器上。
17、步驟1-3,快照傳輸完成后,目標庫服務器?快照文件傳輸服務對壓縮的快照文件進行解壓,解壓后進行文件完整性校驗,這樣既提高數據傳輸效率,又保證了數據一致性和完整性。
18、步驟2,增量數據抽取服務獲取到快照文件生成服務的快照生成時間戳,并解析時間戳之后的增量日志,將增量日志中的二進制數據轉為結構化的數據保存到本地磁盤目錄;
19、具體地,該服務采用實時監聽方式,實時捕獲到數據庫的增量變化,并記錄時間戳。當增量數據抽取服務異常關閉后,下次啟動后可以基于該時間戳繼續解析后續生成的增量數據。
20、進一步地,步驟2具體包括以下步驟:
21、步驟2-1,增量數據抽取服務獲取到快照文件生成服務的快照生成時間戳;
22、步驟2-2,判斷時間戳之后的增量日志是否開啟;如果是,則執行步驟2-3;否則,執行步驟2-2;
23、步驟2-3,基于時間戳捕獲增量數據并記錄對應的時間戳形成增量日志;
24、步驟2-4,解析增量日志中的二進制數據,并轉為結構化的數據保存到本地磁盤目錄。
25、步驟3,增量數據轉換服務對增量數據抽取服務的結構化數據進行轉換,通過識別數據操作內容和解析適配所有字段類型,以便轉換為數據庫標準的dml語句;
26、具體地,自動識別出新增、修改、刪除操作。并且進行字段級別的解析,適配字符型、整型、浮點型、時間型、二進制等所有字段類型,將數據轉換為數據庫標準的dml語句。
27、特殊類型適配規則:
28、時間型:識別各種時間格式,如yyyy-mm-dd,yyyy,yyyy-mm,hh:mm:ss等格式,采用不同的解析規則,轉換為dml語句可執行的數據
29、浮點型:識別單精度、雙精度、無精度的數據,轉換為dml語句可執行的數據
30、二進制:識別出二進制數據,采用數據映射方式,將二進制數據映射到dml語句中完成二進制數據寫入。
31、步驟4,通過增量數據寫入服務讀取增量數據轉換服務轉換后的dml語句,順序執行dml語句,將源數據庫的數據還原到目標數據庫,同時采用數據庫事務管理技術,保證數據的一致性。
32、本發明采用以上技術方案,利用快照文件進行數據還原,從底層文件維度實現數據庫存量遷移,提高存量遷移速率。同時為了解決熱遷移過程中,高并發情況下源和目標數據庫一致性問題,采用解析底層數據庫日志技術,并結合數據一致性算法,將熱遷移過程中產生增量數據遷移到目標庫。
33、本發明相較于現有技術具有如下有益效果:1、不需要借助數據庫驅動進行額外的全量數據查詢和解析,減少了時間開銷;2、采用文件方式,不需要將全量數據加載到內存中,減少了內存資源的使用;3、對數據庫性能上影響較小,只使用了數據庫服務器的磁盤空間;4、沒有對數據進行結構化查詢,規避了數據暴露的問題;5、相對解析全部binlog,存量數據不解析binlog日志,提高存量遷移效率,增量遷移采用讀取binlog日志方式,實現熱遷移,不用中斷生產業務。