這是Canal在新版本引入的一個內(nèi)容,主要是為了解決由于歷史的DDL導致表結構與現(xiàn)有表結構不一致为迈,導致的同步失敗的問題债鸡。采用的是Druid和Fastsql,來記錄表結構到DB中油坝,如果需要進行回滾時,得從DB中根據(jù)時間點去查到對應的庫表結構刨裆,然后進行業(yè)務的處理澈圈。也就是,如果我們想要這樣的效果帆啃,需要開啟TSDB的功能瞬女,同時要新增庫表來記錄表結構的變更。
這個基本上是在parser啟動時努潘,尋找位點時需要的诽偷。當然在系統(tǒng)啟動的時候,會將庫表的信息寫入到DB中疯坤,然后定時24小時寫入一次报慕。另外就是在發(fā)生了DDL時,會更新表結構压怠。
我們來看下他的類圖眠冈。
TSDB.png
一張表記錄的是表結構,加上了時間菌瘫,另一張記錄的是當時的DDL語句洋闽。在進行回溯的時候,直接根據(jù)時間戳和binlog文件名來進行尋找即可找到突梦。當然這些數(shù)據(jù)也會在內(nèi)存中保存一份,加快速度羽利。
具體的介紹可以見這個鏈接https://github.com/alibaba/canal/wiki/TableMetaTSDB宫患。