环境信息
canal 1.1.2 mysql 5.6
问题描述
canal server HA模式下 使用tcp模式,发生主备切换时可以正常解析binlog的接收binlog
对接kafka时,发生主备切换后不再正常解析和接收binlog
手动停止当前running的节点后,主备切换成功了,instance正常启动,也从zookeeper获取到了上次解析的位点信息,但是对于新的binlog,没有继续解析并投递到kafka。
我这里准备了2台canal server 和 3台zookeeper,出现上述情况后,我将所有的canal server都停掉,然后启动其中一台,这时就自动从上次解析的点位正常投递到kafka中了。
请大神解答疑惑。
原提问者GitHub用户shubiao-yao
您遇到的问题可能和canal server在高可用模式下无法正确切换主备节点有关。出现这种情况的原因可能是主备节点间网络通信出现问题,导致canal server无法正确获取到binlog并发送到kafka。
解决这个问题的一个方法是检查网络设置,确保主备节点之间的连接正常。另外,您可以尝试使用canal server在高可用模式下使用UDP模式进行通信,这也许能够解决您的问题。您可以参考canal server的文档了解如何设置UDP模式。
此外,还有一些其他的可能性需要排除。例如:kafka集群是否正常工作、binlog解析是否正确等。您可以针对这些可能的问题进行一一排查,并逐步解决。
可能是因为在主备切换时,canal server HA模式下使用的是不同的ip地址或者hostname,导致kafka无法正确地接收到binlog信息。可以尝试在canal server HA配置中指定固定的ip地址或者hostname来解决这个问题。另外,也可以查看canal server和kafka之间的网络连接是否正常。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。