Canal是什么
canal主要用途是基于 MySQL 数据库增量日志(binlog)解析,提供增量数据订阅和消费
Canal有什么用
image.png实时更新ES索引,减少业务系统与ES的耦合
端到端的核对,比如营销场景,可通过binlog的订阅对发奖与支付做核对,跳过业务链路的中间环节,即时发现链路中的bug
数据同步,备份等
缓存刷新
……
Canal部署时遇到的坑
本地OK测试/生产环境连不上数据库
连接本地mysql时没问题,但连测试环境时出现连不上数据库的异常,本地通过命令行能连上测试环境数据库,异常如下:
java.io.IOException: ErrorPacket [errorNumber=2003, fieldCount=-1, message=Can't connect to MySQL server on '(这里去掉了ip)' (107), sqlState=HY000, sqlStateMarker=#]
with command: set @master_binlog_checksum= @@global.binlog_checksum
at com.alibaba.otter.canal.parse.driver.mysql.MysqlUpdateExecutor.update(MysqlUpdateExecutor.java:49) ~[canal.parse.driver-1.1.5-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.Mys