wordpress关于本站,中国服装设计公司前十名,装修设计装饰,物流公司官方网站建设方案一、前言
上篇 MySQL Binlog实战应用之一 主要讲了BinLog的开启以及用MySQLBinLog读取BigLog二进制文件#xff0c;但MySQLBinLog很难直接对接Java#xff0c;所以有了Canal这个Alibaba开发的用于MySQL增量日志解析#xff0c;提供增量数据的订阅和消费组件。
二、Canal原…一、前言
上篇 MySQL Binlog实战应用之一 主要讲了BinLog的开启以及用MySQLBinLog读取BigLog二进制文件但MySQLBinLog很难直接对接Java所以有了Canal这个Alibaba开发的用于MySQL增量日志解析提供增量数据的订阅和消费组件。
二、Canal原理
我们知道MySQL主从复制是Mster将数据变更写入BinLog然后Slave将Master的BinLog拷贝到它的中继日志最后重放中继日志完成将数据同步到Slave。
Canal其实它就是参考主从复制原理将自己伪装成Slave接收Master推送的二进制日志。
Cannel包括两部分 服务端将自己伪装成Slave并从Master获取Binlog以供消费端使用。 客户端订阅服务端数据变更事件处理后存储到对应的数据仓库中RDB、HBase、ES。
Canal的应用可以用于做数据同步在线库同步到离线库、增量数据同步ES等。
三、Canal服务端安装配置
下载解压 Canal同步账号创建及授权 配置文件 conf/example/instance.properties 因为我Linux服务器上安装的是JDK17.用startup.sh启动报了一堆错只需要将JAVA_OPTS中报错的配置删除即可另外我机器内存只有1G,需要调整一下堆内存的最大值和初始值。 /bin/startup.sh 启动后可以查看到日志输出日志没有报错就启动成功了。 四、canal客户端
依赖 消费端代码类似于MQ的消息接收端 执行UPDATFE语句 接收端收到消息变更前该记录所有字段值变更后该记录所有字段值 mysqlbinlog直接解析canal要求mysqlBinlog配置为row 注这里是仅单机环境我们的场景单机也就可以了如果要保证可靠性使用多个接收端需要引入zk来保证同一时间只有一个消费端工作因为canal通过ack保证必须按顺序消费以免数据无序造成数据错乱。