这是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