基础资源信息
操作系统版本
uname -mrs Linux 3.10.0-862.14.4.el7.x86_64 x86_64 cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)
canal 版本
v1.1.2
数据库版本
mysql> select version(); +------------+ | version() | +------------+ | 5.7.22-log | +------------+ 1 row in set (0.00 sec)
jdk 信息
java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
数据流
canal 从mysql 获取数据然后同步到kafka 队列中,其中canal 只部署一个服务,但有 18个 canal 实例。消费过程中的元消息暂存到zk 中。异常实例的数量为1.
排故过程
在维护过程中,发现某实例数据消费大量重复。
登录zk 集群,查看实例当前的消费状态及偏移量 发现实例消费状态及偏移量保持不变。 通过辅助 kibana 验证,一条数据重复次数达2亿多条 跟dba 确认。对应数据库的 binlog 日志未删除。 手动设置异常canal 实例消费状态 设置 canal.instance.master.journal.name + canal.instance.master.position 指定从凌晨开始消费数据,故障复现 注释上一步设置,设置 canal.instance.master.timestamp 指定从凌晨开始消费,故障复现 注释前两部设置, 使用当前状态进行消费数据,故障复现。 观察异常实例的启动日志,发现无论变更其对应实例的配置策略及参数。实例启动时,都从特定的一个 journalName position 开始消费数据,然重复数据是在这个点之后。
备注
每次变更参数后,都会在 zk CLI 删除对应的消费位点 临时解决方案 将异常实例的配置文件夹重命名,然后启动canal 服务。故障未出现。
原提问者GitHub用户MrYueQ
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。