环境信息
canal version1 1.1.2 mysql version 5.7
问题描述
我配置的canal直接同步数据到kafka里存储到kafka里的数据是json格式的,发现数据同步的很慢写入到kafka里的速度大概是7M/S,差不多是400条信心每秒。 看到官方文档上说canal 1.0.26经过优化之后的性能,从业务binlog入库到canal client拿到数据,基本可以达到10~20w的差不多也是10M/S,我现在用的是canal1.1.2的版本,我这种情况瓶颈是不是canal-client到kafka这一块呀
原提问者GitHub用户lijif
写入MQ考虑binlog保序性,是一个串行、同步刷盘的写入行为,可以考虑做partition散列提升写入效率
原回答者GitHub用户agapple
根据您的描述,使用Canal 1.1.2将MySQL数据同步到Kafka时,同步速度非常慢,大约只能达到每秒400条信息。您发现Canal 1.0.26通过优化后的性能可以达到10-20万条数据的入库,大约每秒10M/S。您怀疑同步速度受到Canal-client到Kafka这一块的限制。
在Canal 1.1.2中,同步性能的瓶颈可能有很多,例如Canal Server的配置、网络带宽、Kafka的配置等。为了解决这个问题,建议您按照以下步骤进行排查:
确认Canal Server的配置是否正确,并且Canal Server能够正确地解析MySQL的binlog。您可以查看Canal Server的日志文件以查看是否存在解析binlog失败的异常信息。
确认Canal Client的配置是否正确,并且与Canal Server的版本兼容。如果版本不兼容,可能会导致Canal Client无法正确地解析Canal Server的数据结构,从而引发异常。建议您尝试升级Canal Client的版本,并重新进行配置和测试。
确认Kafka的配置是否正确,并且Kafka的性能优化得当。您可以查看Kafka的日志文件以查看是否存在性能瓶颈的异常信息。如果性能瓶颈在Kafka中,请尝试优化Kafka的配置,例如增加Kafka的分区、调整Kafka的批量大小等。
确认网络带宽是否足够,并且网络延迟不会影响同步速度。如果网络带宽不足或延迟过高,可能会导致同步速度变慢。
尝试调整Canal-Adapter的配置,例如调整批量大小、调整线程数等。这些参数可能会影响数据的同步速度。
如果您无法解决问题,建议您提供更多的信息,例如异常堆栈信息、Canal-Client的配置文件、Kafka的配置文件等,以便我们更好地帮助您解决问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。