阿里开源中间件Canal两个重要文件意义及项目使用

文章讲述了MySQL中的meta.dat文件在Canal恢复过程中可能出现的问题,如JSON格式错误导致的异常,以及H2.mv.db文件中tsdb缓存与表结构不匹配引发的CanalParseException。解决方法包括删除meta.dat、关闭canal服务并删除h2.mv.db或禁用tsdb功能。
摘要由CSDN通过智能技术生成

meta.dat

这个文件是用于存储canal读取mysql中binlog的偏移量,存储的是json格式,如果服务器突然挂掉,此时这个文件里面的内容可能就会有问题,然后,重启的时候由于canal会去读取这个文件的内容找到上一次binlog的位置,但是这个文件内容又有问题,此时就会报错。

com.google.common.util.concurrent.UncheckedExecutionException:
com.alibaba.fastjson.JSONException: syntax error, expect {,actual
EOF, pos 344, fastjson-version 1.2.58

所以,最佳解决方案就是每次重启的时候删除此文件,让它重新生成。

h2.mv.db

这个文件是会缓存数据库结构(补充:看网上帖子,还会缓存数据库),当你在配置文件中开启了tsdb这个选项(默认是开启的),如果你后面变更了表结构,h2数据库对应的缓存是不会更新的,也就是这个文件不会更新,这个时候一般会爆如下异常

Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: 
column size is not match for table:数据库名称.表名称,新表结构的字段数量 vs 缓存表结构的字段数量;

而且比较麻烦的是:一旦出现这个问题,只能通过关闭canal服务并删除此文件,然后启动canal服务。

还有一种解决方案就是直接禁用tsdb功能。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值