问题描述
使用canal-adapter写入elasticSearch数据时,数据是写入了elasticSearch了,但出现了mysql表中的数据和elasticSearch中索引中的数据错乱的问题,即把A列的数据放到了B列中的。
研究了半天,发现是因为我在测试过程中,换过另外1个数据库,这2个库中的列不一致导致的。
因为canal会通过tsdb维护了一个当前数据库内表结构,具体配置如下:
我这里(tsdb使用的是本地的h2数据库)。
我有2个数据库,首先在第1个库测试验证,是正常的,然后换成在第2个库测试验证,就出问题了,
因为第1个库时已经缓存了表结构信息,第2个库还是拿的第1个库的表结构进行处理的。
解决方案
知道原因了就好解决了,既然是用H2存储表结构的,那删除它,然后重启服务就好了,因为会重新加载最新的表结构
cd canal/conf/db1 rm -rf h2.mv.db