当前位置: 首页 > news >正文

MySQL BinLog实战应用之二

一、前言

上篇  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保证必须按顺序消费,以免数据无序造成数据错乱。

http://www.lryc.cn/news/216364.html

相关文章:

  • Visual Studio Code 快 捷 键
  • 有色金属冶炼VR虚拟场景互动教学有何优势
  • Python将知网导出的endnote题录转为Refworks模式
  • 单元测试反射注解
  • Android 交叉编译openssl 、libxml2静态库
  • 神经网络气温预测
  • 体验SOLIDWORKS钣金切口工具增强 硕迪科技
  • (八)Flask之app.route装饰器函数的参数
  • ES6.8集群配置注意点
  • Powercli批量修改分布式交换机端口组
  • ZKP10.2 Efficient Recursion via Statement Folding (Nova)
  • 高浓度cod废水怎么处理
  • Docker学习——②
  • VSCode 设置平滑光标
  • Spring、SpringMVC、Mybatis
  • Kubernetes 架构
  • python---数据类型(列表)
  • CentOS 7升级gcc/G++版本
  • uni-app开发微信公众号 H5打开扫一扫功能
  • k8s-服务网格实战-入门Istio
  • 金属压铸件自动化3D全尺寸测量设备自动外观检测三维检测-CASAIM
  • Android笔记(十):结合Navigation组件实现Compose界面的导航
  • linux内核tcp配置--断网后连接卡住
  • Apache Pulsar 在腾讯云上的最佳实践
  • VMware 虚拟机安装 CentOS 7
  • UnityAI——个体AI角色的操控行为脚本
  • ssh登录界面变成vim提示,进不去系统
  • 虹科示波器 | 汽车免拆检修 | 2012 款上汽大众帕萨特车 发动机偶尔无法起动
  • UE5.0.3版本 像素流送 Pixel Streaming
  • BetterDisplay Pro v1.4.15(显示器管理管理软件)