具体现象是这样的,在canal的server端启动的一小段时间内接受到的数据是正常的,但是在过大约10分钟之后,客户端接受到的entry的entryType就全部为TRANSACTION_BEGIN和TRANSACTION_END了。
曾经怀疑是我写的客户端有问题,但是把客户端换成示例客户端还是一样的效果。
已经尝试将server端的日志级别设置为debug,但是没有得到什么有价值的调试信息。
麻烦提供一下解决此问题的思路,或者我的server端配置有问题,可能是哪儿的问题,谢谢!!!
原提问者GitHub用户yukaizhao
这个问题的原因找到了。
在instance.properties中配置的数据库名称是小写的,但是mysql上的数据库是大写的,同时配置了大小写敏感,所以大多数的是空的。
但是::不解的是为什么会消费一段时间,然后就不行了。如果是因为大小写的原因,那应该是一条都没有,这样才合理。
建议:在canal.properties中增加大小写敏感的选项
原回答者GitHub用户zppio
首先,问题看起来是出现在 Canal Server 端的。可能的问题是 Canal Server 的配置或者运行状况导致了 Entry 类型的错误。以下是几个可能的解决方案:
检查 Canal Server 的配置文件 首先,您需要仔细检查 Canal Server 的配置文件,确保没有任何配置文件参数导致 Entry 类型被更改。您需要检查 canal.instance.filter.regex 配置参数是否存在,如果存在,请检查正则表达式是否正确。如果您在 canal.instance.filter.regex 中使用了不正确的表达式,则很有可能引发 Entry 类型错误。
检查 Canal Server 的运行状况 如果您的 Canal Server 在运行时出现错误,可能导致 Entry 类型被更改。您需要检查 Canal Server 的运行状况,并查看是否存在任何错误或异常。如果是这样,请尝试解决这些错误或异常。
检查 Canal Server 版本 您需要检查 Canal Server 的版本是否正确。如果您的 Canal Server 的版本太老,可能无法正确处理 Entry 类型。您需要升级 Canal Server 的版本,以确保其能够正确处理 Entry 类型。
检查客户端 如果 Canal Server 已经根据上述建议进行了检查,那么可能是客户端的问题。检查客户端是否正确处理 Entry 类型,并确保客户端和 Canal Server 的版本兼容。
我建议您从以上几个方面入手进行排查和解决问题。如果这些方案都没有解决您的问题,请在 Canal 的 GitHub issue 页面上询问其他开发者是否遇到了类似的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。