使用版本为1.0.26 CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111), destination,"","");
1.在创建CanalConnector 对象之后发现channel 为null不知道是什么问题
2.mysql的账号,也是根据教程的语句直接生成的
3.server也启动了
start cmd : java -Xms128m -Xmx512m -XX:PermSize=128m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9099,server=y,suspend=n -DappName=otter-canal -Dlogback.configurationFile="E:\canal-dep\bin..\conf\logback.xml" -Dcanal.conf="E:\canal-dep\bin..\conf\canal.properties" -classpath "E:\canal-dep\bin..\conf..\lib*;E:\canal-dep\bin..\conf" java -Xms128m -Xmx512m -XX:PermSize=128m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9099,server=y,suspend=n -DappName=otter-canal -Dlogback.configurationFile="E:\canal-dep\bin..\conf\logback.xml" -Dcanal.conf="E:\canal-dep\bin..\conf\canal.properties" -classpath "E:\canal-dep\bin..\conf..\lib*;E:\canal-dep\bin..\conf" com.alibaba.otter.canal.deployer.CanalLauncher Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 Listening for transport dt_socket at address: 9099 2018-05-17 15:17:09.947 [main] WARN o.s.beans.GenericTypeAwarePropertyDescriptor - Invalid JavaBean property 'connectionCharset' being accessed! Ambiguous write methods found next to actually used [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.nio.charset.Charset)]: [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.lang.String)] 2018-05-17 15:17:10.143 [main] ERROR com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set 2018-05-17 15:17:10.427 [destination = example , address = /192.168.2.165:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.MysqlEventParser - prepare to find start position just show master status
运行canal.example-1.0.26-SNAPSHOT 闪退
原提问者GitHub用户JusterZhu
Canal连接MySQL的过程中,会创建一个TCP连接,即CanalConnector和MySQL之间的连接。在创建CanalConnector对象时,会通过InetSocketAddress指定MySQL服务器的IP地址和端口号,然后通过newSingleConnector方法创建CanalConnector对象。
如果CanalConnector对象的channel属性为null,可能有以下几个原因:
MySQL服务器未启动或网络不通:如果MySQL服务器未启动或与Canal服务器之间的网络不通,那么Canal就无法建立TCP连接,从而创建CanalConnector对象的channel属性为null。
防火墙或安全组限制:如果在MySQL服务器和Canal服务器之间存在防火墙或安全组限制,可能会导致TCP连接无法建立,从而创建CanalConnector对象的channel属性为null。
连接超时或被拒绝:如果Canal和MySQL之间的TCP连接超时或被拒绝,也会导致创建CanalConnector对象的channel属性为null。
针对这个问题,可以从以下几个方面进行排查:
检查MySQL服务器是否启动,以及与Canal服务器之间的网络是否连通。可以尝试使用telnet命令测试MySQL服务器的IP地址和端口号是否可用。
检查防火墙或安全组设置,以确保TCP连接没有被限制。可以尝试暂时关闭防火墙或安全组进行测试。
检查连接超时或被拒绝的问题。可以尝试增加Canal连接MySQL的超时时间,或者检查MySQL的相关配置是否正确。
需要注意的是,Canal的使用比较复杂,问题的原因可能比较多,需要结合具体的环境和情况进行分析和解决。同时,需要确保MySQL的账号和权限设置正确,可以通过在MySQL中尝试手动执行相关的SQL语句来进行测试。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。