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)。最終解決了該問題