开发者社区> 问答> 正文

WritableByteChannel channel 为null

使用版本为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

展开
收起
绿子直子 2023-05-09 10:27:40 122 0
2 条回答
写回答
取消 提交回答
  • 已经修复,可以重新下载1.0.26-alpha 3

    原回答者GitHub用户agapple

    2023-05-10 09:36:55
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    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语句来进行测试。

    2023-05-09 10:40:10
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载