开启canal服务,查看 instance 的日志,发现报错信息如下:
......Could not find first log file name in binary log index file.....
经搜索发现这个问题的原因是:因为之前开启过canal服务导致canal记录的是历史位点信息,然后历史的binlog日志位点信息找不到。

如何判断是不是历史位点信息?
查询当前mysql日志位点信息:show master status和 instance 的日志对比。

解决方法是:

  1. 如果记录位点信息使用file模式,那么就删除conf/example/meta.dat文件,然后重启instance。这里最重要的一点就是再删除meta.dat文件之前先关闭canal服务,切记注意!⚠️(本人使用)
  2. 如果是记录位点信息使用zookeeper模式,那么就删除zk节点信息,然后重启instance。

参考链接:https://github.com/alibaba/canal/issues/156