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:
问题分析
经过几个小时查看并尝试了网上的解决方案,都没有解决我的问题。
总结了一下,应该从以下几个方面思考。
- Mysql 服务是否启动
- mysql-connector-java的版本
- Mysql 参数 wait_timeout、interactive_timeout
- application 数据库连接配置问题
- JDK版本
解决的过程就不多说了,请看总结内容。
总结
-
确保Mysql服务正常启动。
-
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
-
Mysql的这两个参数详情内容请参考其他资料,本次只给出设置语句(Linux)
set global wait_timeout=604800;
set global interactive_timeout=604800;
注意:设置完后,重开一个会话后该设置生效。如果通过以上语句设置,Mysql服务重启后会失效。可以在/etc/my.cnf中添加参数,永久生效。
- 注意参考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
- 确认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,问题处理