這是Canal在新版本引入的一個內容,主要是爲了解決因爲歷史的DDL致使表結構與現有表結構不一致,致使的同步失敗的問題。採用的是Druid和Fastsql,來記錄表結構到DB中,若是須要進行回滾時,得從DB中根據時間點去查到對應的庫表結構,而後進行業務的處理。也就是,若是咱們想要這樣的效果,須要開啓TSDB的功能,同時要新增庫表來記錄表結構的變動。git
這個基本上是在parser啓動時,尋找位點時須要的。固然在系統啓動的時候,會將庫表的信息寫入到DB中,而後定時24小時寫入一次。另外就是在發生了DDL時,會更新表結構。github
咱們來看下他的類圖。sql
一張表記錄的是表結構,加上了時間,另外一張記錄的是當時的DDL語句。在進行回溯的時候,直接根據時間戳和binlog文件名來進行尋找便可找到。固然這些數據也會在內存中保存一份,加快速度。ui
具體的介紹能夠見這個連接https://github.com/alibaba/canal/wiki/TableMetaTSDB。blog