项目场景:
实时平台搭建,canal在使用过程中遇到的问题.
1.Could not find first log file name in binary log index file报错
由于机器磁盘满过,导致canal找不到binlog日志文件报错:Could not find first log file name in binary log index file
解决方案:
需删除/canal/conf/example下的meta.dat文件,再重新启动,需要手动补偿丢失的历史数据
2.高可用状态下,canal.propertites的canal.ip没有指定从而导致主从节点均监听发送数据引起数据重复
说明:canal集群安装节点:173.20.20.3、173.20.20.4
今天在组件监控界面上偶然发现监控指标出现两个版本,见下方,通过消费kafka数据,看到同一条数据插入了两次,这两条数据来自不同节点。
正常情况下,主节点工作,从节点存活但不工作,所以只应该显示主节点的监控指标,比如:吞吐量等,而现在显然两个节点都在工作。
问题解决
1.首先在zookeeper中查看了当前的工作节点是谁 -> 返回的是[173.20.20.4:11111]
#启动zookeeper客户端
/opt/moudle/zookeeper/bin/zkCli.sh
#查看canal当前活动节点及工作节点
get /otter/canal/destinations/example/running
#查看canal运行节点
ls /otter/canal/destinations/example/cluster
2.查看当前运行节点,返回的是[173.16.100.101:11111,173.20.20.4:11111]
查到这里发现问题,出现的ip地址不符合预期,再查看canal.log日志,启动时的ip的确是173.16.100.101:11111,但173.16.100.101:11111应该为173.20.20.3:11111(这台canal安装在173.20.20.3),经过查询资料canal配置文件canal.propertites下的canal.ip项为canal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行。
3.之前没有配置,不知道上面出现的问题是否和这个问题有关,对canal.ip配置项进行指定
配置完重启后再查看当前运行节点,返回的是[173.20.20.3:11111,173.20.20.4:11111],ip正常,监控界面指标也恢复正常,kafka接收数据已不存在重复收到消息的问题。
第二天的监控指标与前两天相比,显然降下来了,毕竟减少了一倍的数据,问题解决。
记得点赞收藏奥,后续遇到问题我会实时更新,关注不迷路~