openGauss-資料校驗gs_datacheck

MySQL成长之路發表於2024-08-29

openGauss- 資料校驗 gs_datacheck

可獲得性

本特性自openGauss 3.0.0版本開始引入。

特性簡介

gs_datacheck 工具是一個基於JDK11 + Springboot2.6.7 框架實現openGauss/MySQL之間的同構與異構之間的資料校驗。該工具提供了全量資料的校驗以及增量資料的實時校驗能力,可實現資料一致性校驗。

客戶價值

透過使用gs_datacheck工具,可完成資料從openGauss/MySQL之間的同構與異構之間的資料庫資料一致性檢查。

特性描述

gs_datacheck工具提供資料全量和增量校驗功能,可以對openGauss/MySQL之間的同構與異構之間的資料庫的資料進行一致性校驗。

  • 全量校驗:

    在全量資料遷移完成後,由extract服務對源端和目標端資料透過JDBC方式進行資料抽取然後規整計算,並將計算後的中間資料推送到kafka中。最後由check服務提取kafka中的中間資料,構建默克爾樹,透過默克爾樹比對實現表資料校驗且輸出校驗結果。

  • 增量校驗:

    由debezium服務偵聽源端MySQL資料庫的增量資料,到指定topic。再由源端extract服務處理該topic增量資料,觸發check增量校驗。

特性增強

  • 自openGauss 6.0.0-RC1版本 資料校驗工具支援源端是openGauss/MySQL的校驗,包括全量校驗與增量校驗。
  • 自openGauss 6.0.0-RC1版本 資料校驗實現大表分片校驗,提升抽取校驗整體效能。具體引數配置參考《校驗工具使用指導》( https://gitee.com/opengauss/openGauss-tools-datachecker-performance/blob/master/校驗工具使用指導.md)中7.4章節的資料校驗調優配置。
  • 自openGauss 5.1.0版本 資料校驗工具支援源端是openGauss的校驗,包括全量校驗與增量校驗。
  • 自openGauss 5.1.0版本 表記錄抽取任務分片規則進行最佳化,實現抽取校驗效能的提升。( 在50張表每張表1千萬記錄場景下,校驗效能使用sysbench模型以及t_datacheck_templete模型,校驗速率達到20萬條/秒,其中使用t_datacheck_templete模型可以達到(150+M/s) )(具體模型參考 https://gitee.com/opengauss/openGauss-tools-datachecker-performance中《校驗工具使用指導.md 》7.1章節,表設計)

特性約束

  • JDK版本要求JDK11+
  • 當前版本僅支援對源端openGauss/MySQL,目標端openGauss/MySQL資料校驗
  • 當前版本僅支援資料校驗,不支援表物件校驗
  • MYSQL需要5.7+版本
  • 當前版本不支援地理位置幾何圖形資料校驗
  • 資料校驗行級過濾規則配置,只支援[offset,count]指定範圍內抽取,不支援排除[offset,count]範圍之內的資料過濾。
  • 行過濾規則抽取中間範圍內資料(例如:[10,100]),如果源端在該範圍之前的資料[0,10]發生刪除操作,則會導致該表在指定範圍內資料發生偏移,從而導致資料校驗結果產生差異。此時需要擴大前置下標範圍,以及增加相應的抽取數量。即[3,107]。
  • 當對主鍵的update語句沒有透過增量遷移同步到目的端 或 主鍵同步發生錯誤的時候,進行資料校驗,源端update後的新資料和目標端的舊資料是兩條獨立的資料,對校驗差異進行處理時,會生成兩條語句,即對舊資料進行刪除,對新資料做插入。此場景會將一條主鍵update語句拆分為兩條語句(insert+delete)來執行,且分解到兩個事務中執行,無法保證原子性。
  • 增量校驗不支援表級規則
  • 增量校驗不支援行級規則
  • 增量校驗目前只支援資料增刪改校驗,暫時不支援表結構(物件)校驗(包括多表少表)

依賴關係

無。

參考文件

開源社群地址: gs_rep_portal

詳細參考文件: README.md

資料校驗社群地址:gs_datacheck

詳細參考文件: 校驗工具使用指導.md

詳情檢視:https://opengauss.org

詳情檢視:https://docs-opengauss.osinfra.cn

相關文章