簡述
CloudCanal除了提供最核心的資料遷移和同步能力以外,還提供資料校驗和資料訂正兩種非常實用的能力,這兩種功能為用戶保障資料遷移同步鏈路的資料質量提供了非常大的便利性,例如對端資料庫因為各種原因產生一些例外寫入導致的資料不一致或者丟失,用戶均可以使用CloudCanal提供的資料校驗和資料訂正能力來基于同步鏈路的源端資料來恢復資料,使得對端資料庫中相比源端丟失或者不一致的資料得到恢復,
技術點
基于校驗結果的針對性訂正
執行完CloudCanal的校驗任務后,在運行任務的機器上會生成一個檔案compre_rs.log用于記錄校驗的結果資訊,日志路徑為~/logs/cloudcanal/tasks/${taskName}/compare_rs.log,其格式如下:
{庫表名稱,結果型別,主鍵資訊}
{"tableUnit":"test15.test_huasheng1","type":"DIFF","pkColMap":{"id":"9"}}
{"tableUnit":"test15.test_huasheng1","type":"LOSS","pkColMap":{"id":"12"}}
結果型別分為兩種:
- DIFF:對端相比源端不一致的行,例如上面例子中,源端主鍵id=9的行和對端存在不一致,
- LOSS:在源端表中存在,但是在對端表中不存在的行,上面例子中源端主鍵id=12的行,在對端不存在
主鍵資訊記錄的是源端的,支持聯合主鍵,
為了性能考慮,這里DIFF時不展示具體哪一列的資料不一致,如果需要查看這個資訊,這個資料資訊記錄在~/logs/cloudcanal/tasks/${taskName}/diff.log中
利用資料庫的upsert能力進行訂正
針對支持upsert語意寫入的資料源作為對端時,CloudCanal的訂正可以正常作業,CloudCanal根據校驗結果去源端反查資料后寫入對端,如果對端不存在該主鍵的行,則直接INSERT寫入,如果存在則自動轉換為UPDATE進行更新,
使用in multi column處理聯合主鍵的情況
針對實作SQL標準中in multi column語法的資料庫作為源端時,CloudCanal支持對其進行資料訂正,CloudCanal根據主鍵掃描源端表時,如遇聯合主鍵的場景,會根據in multi column的語法來掃描源端的資料,不支持in multi column SQL語法的資料源CloudCanal不支持訂正其資料,in multi column語法的使用例子可以參考如下:
-- works in PostgreSQL, Oracle, MySQL, DB2, HSQLDB
SELECT whatever
FROM t --- you missed the FROM
WHERE (col1, col2) --- parentheses here
IN ((val1a, val2a), (val1b, val2b), ...) ;
使用須知
- 以下源端、對端之間支持創建訂正任務:
- 源端:Oracle、PostgreSQL、MySQL、OceanBase、PolarDBMySQL
- 對端: MySQL、PolarDBMySQL、Oracle、PostgreSQL、OceanBase
- 支持該特性的CloudCanal版本:v2.2.6.8(商業版)
- 訂正是以源端資料為準:校驗結果中會記錄對端相比源端缺失、不一致的行的源端主鍵資訊,訂正則會基于該源端主鍵進行訂正,假設對端多出了一些源端不存在的主鍵,在訂正的時候CloudCanal是不會去洗掉這些行的請知悉,
- 基于校驗結果的訂正依賴校驗任務的校驗結果檔案,因此當關聯的校驗任務在不同機器上執行過的話,則無法基于該校驗任務創建訂正任務,在校驗任務詳情,點擊功能串列->重啟歷史記錄 可以查看校驗任務是否在多臺機器上運行過,

操作說明
前置條件
- 登入 CloudCanal SaaS版或者申請CloudCanal商業版試用,使用參見快速上手檔案
- 準備兩個支持資料訂正的資料庫,一個作為源端,一個作為對端,本次例子采用的源對端資料源型別為阿里云的PolarDBMySQL
校驗訂正的基本流程
使用CloudCanal的校驗訂正能力恢復例外資料的典型流程如下圖所示,

資料校驗
- 在任務管理頁點擊創建任務,進入創建任務的第一步,配置源對端的資料庫并且選擇需要訂閱的庫,

- 選擇任務型別為校驗,開啟一次性校驗,設定自動啟動,

- 選擇需要進行校驗的表,

- 選擇需要進行校驗的列,支持映射和裁剪,裁剪的列將不參與校驗,

- 確認任務整體配置情況,無誤后點擊創建

- 校驗完成后可以查看具體每張表相比源端缺失或者不一致的資料,

資料訂正
- 從校驗任務的詳情頁,點擊功能串列中的創建訂正任務可以直接基于該次校驗的結果,創建對應表的訂正任務,

- 訂正任務的源對端資訊和訂閱的庫資訊與之前的校驗任務保持一致,此處源對端測驗連接成功后可直接點擊下一步,

- 規格與校驗任務保持一致,可以直接下一步

- 訂閱資訊僅供確認,無法修改,與校驗任務保持一致,直接點擊下一步

- 確認列的映射、裁剪資訊,無法修改,與校驗任務保持一致,直接點擊下一步

- 確認訂正任務的配置無誤后點擊創建任務

- 校驗完成后可以看到具體訂正的統計資訊

總結
本文介紹了如何利用CloudCanal的校驗訂正能力來快速恢復資料,如果對您有幫助的話,歡迎點贊轉發,如果想體驗CloudCanal,可以訪問ClouGence官方網站,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533570.html
標籤:其他
上一篇:MySQL科學計數法展示解惑
