在部署和使用Canal中遇见了好几个问题,提供解决方法:
问题1:Canal日志提示command : 'show binlog events limit 1' has an error!
首先看提示会想到是MySQL的binlog问题,可是经过检查binlog是开启的,通过flush logs也能正常刷新日志,同时binlog的index文件里也都记录有新的日志文件信息。后来发现index文件第一行是空行,而空行被认为是文件结束,所以当Canal去获取binlog信息时就直接结束了导致读不到正确日志。只需要删掉这个空行然后flush logs即可恢复
问题2:某个instance的日志一直输出类似column size is not match for table:pluto_is_web.t_abnormal,6 vs 7这样的报错
这种问题是因为表结构被缓存在了Canal的本地时序数据库中,而后来数据结构发生了变化。6 vs 7是指当前表结构有6列数据,但是Canal中出现了7列,导致数据不一致无法解析。只需要清空报错的那个instance目录中的h2.mv.db文件即可
问题3:某个instance日志中一直输出could not find first log file name in binary log index file这样的报错
网上搜相关错误都是说MySQL binlog的问题。但实际上跟MySQL没有关系,找到canal/conf/$instance目录中的meta.dat文件,清理掉即可
发表评论: