1. 程式人生 > >【Canal源碼分析】TableMetaTSDB

【Canal源碼分析】TableMetaTSDB

啟動 尋找 進行 lib 保存 AD orien strip 介紹

這是Canal在新版本引入的一個內容,主要是為了解決由於歷史的DDL導致表結構與現有表結構不一致,導致的同步失敗的問題。采用的是Druid和Fastsql,來記錄表結構到DB中,如果需要進行回滾時,得從DB中根據時間點去查到對應的庫表結構,然後進行業務的處理。也就是,如果我們想要這樣的效果,需要開啟TSDB的功能,同時要新增庫表來記錄表結構的變更。

這個基本上是在parser啟動時,尋找位點時需要的。當然在系統啟動的時候,會將庫表的信息寫入到DB中,然後定時24小時寫入一次。另外就是在發生了DDL時,會更新表結構。

我們來看下他的類圖。

技術分享圖片

一張表記錄的是表結構,加上了時間,另一張記錄的是當時的DDL語句。在進行回溯的時候,直接根據時間戳和binlog文件名來進行尋找即可找到。當然這些數據也會在內存中保存一份,加快速度。

具體的介紹可以見這個鏈接https://github.com/alibaba/canal/wiki/TableMetaTSDB。

【Canal源碼分析】TableMetaTSDB