【Canal源码分析】TableMetaTSDB
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
這是Canal在新版本引入的一個內(nèi)容,主要是為了解決由于歷史的DDL導(dǎo)致表結(jié)構(gòu)與現(xiàn)有表結(jié)構(gòu)不一致,導(dǎo)致的同步失敗的問題。采用的是Druid和Fastsql,來記錄表結(jié)構(gòu)到DB中,如果需要進行回滾時,得從DB中根據(jù)時間點去查到對應(yīng)的庫表結(jié)構(gòu),然后進行業(yè)務(wù)的處理。也就是,如果我們想要這樣的效果,需要開啟TSDB的功能,同時要新增庫表來記錄表結(jié)構(gòu)的變更。
這個基本上是在parser啟動時,尋找位點時需要的。當然在系統(tǒng)啟動的時候,會將庫表的信息寫入到DB中,然后定時24小時寫入一次。另外就是在發(fā)生了DDL時,會更新表結(jié)構(gòu)。
我們來看下他的類圖。
一張表記錄的是表結(jié)構(gòu),加上了時間,另一張記錄的是當時的DDL語句。在進行回溯的時候,直接根據(jù)時間戳和binlog文件名來進行尋找即可找到。當然這些數(shù)據(jù)也會在內(nèi)存中保存一份,加快速度。
具體的介紹可以見這個鏈接https://github.com/alibaba/canal/wiki/TableMetaTSDB。
轉(zhuǎn)載于:https://my.oschina.net/nuaazhaofeng/blog/1821761
總結(jié)
以上是生活随笔為你收集整理的【Canal源码分析】TableMetaTSDB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Yum下载慢 的问题
- 下一篇: 如果两个对象具有相同的哈希码,但是不相等