启动Canal-adapter 1.1.5 日志报错,Mysql 数据库连接 Communications link failure,问题处理

今天安装canal-adapter报错,Communications link failure

附 application.yml 配置信息

  srcDataSources:
    defaultDS:
      url: jdbc:mysql://127.0.0.1:3306/canal_manager?useUnicode=true&useSSL=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
      username: canal
      password: canal
  canalAdapters:
  - instance: kafka # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: logger
      - name: rdb
        key: mysql1
        properties:
#          jdbc.driverClassName: com.mysql.jdbc.Driver
           jdbc.driverClassName: ru.yandex.clickhouse.ClickHouseDriver
#          jdbc.url: jdbc:mysql://127.0.0.1:3306/mytest2?useUnicode=true
           jdbc.url: jdbc:clickhouse://192.168.160.133:8123/canal_manager
           jdbc.username: default
           jdbc.password:

问题分析

经过几个小时查看并尝试了网上的解决方案,都没有解决我的问题。
总结了一下,应该从以下几个方面思考。

  1. Mysql 服务是否启动
  2. mysql-connector-java的版本
  3. Mysql 参数 wait_timeout、interactive_timeout
  4. application 数据库连接配置问题
  5. JDK版本

解决的过程就不多说了,请看总结内容。

总结

  1. 确保Mysql服务正常启动。

  2. mysql-connector-java-8.0.16.jar版本与Mysql 5.7.28兼容。如果无法确认是该问题导致,可以换几个版本切换试试,下载地址
    下载mysql-conncetor-java

    注意,下载后,上传到Canal-adapter lib 文件下,需要授权 chmod 7777 mysql-connector-java-8.0.16.jar

  3. Mysql的这两个参数详情内容请参考其他资料,本次只给出设置语句(Linux)

   set global wait_timeout=604800;
   set global interactive_timeout=604800;

注意:设置完后,重开一个会话后该设置生效。如果通过以上语句设置,Mysql服务重启后会失效。可以在/etc/my.cnf中添加参数,永久生效。

  1. 注意参考URL的配置方式:(serverTimezone可以根据实际使用时区调整,比如UTC等)
   url: jdbc:mysql://127.0.0.1:3306/canal_manager?useUnicode=true&useSSL=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
  1. 确认JDK的版本,经过测试,我的JDK一开始是,openJDK 1.8.*。经过对比尝试,重装了Java(TM) SE Runtime Environment (build 1.8.0_181-b13)。最终解决了该问题

启动Canal-adapter 1.1.5 日志报错,Mysql 数据库连接 Communications link failure,问题处理

上一篇:2 MySql数据类型 不用这么了解的啊 知道就行


下一篇:在springboot中使用jdbcTemplate