注册 X
提交 注:点击提交后系统会发送邮件到邮箱验证!(仅支持中国大陆邮箱)
我已阅读并同意 服务条款
首页 > IT技术笔记 > 查看笔记

基于Spring Boot监听MySQL日志Binlog实现数据实时同步

mysql数据实时同步使用canal框架可以实现,但是canal需要额外部署,此次使用的是一种更加轻量级的方式。

一款非常不错开源的组件mysql-binlog-connector-java。通过名称就能知道他是通过连接MySQL binlog日志来实现数据监听的。该组件不仅仅是能够实时监听binlog的变化,而且你还可以直接去读取binlog日志文件解析其内容。

该组件具备以下特性:

自动解析二进制日志文件名/位置 | GTID 解析

断开连接可恢复

插件化的故障转移策略

支持 binlog\_checksum=CRC32(适用于 MySQL 5.6.2+ 用户)

通过 TLS 进行安全通信

友好的Java管理扩展(JMX)

实时统计

在 Maven Central 上可用

无第三方依赖,跨不同版本的 MySQL 发行版的测试套件

接下来,我将通过如下几方面介绍该组件在项目中的使用:

编程解析binlog日志

* 实时监听binlog日志

环境准备

我的mysql版本:5.7.34

1、引入依赖包

        
        
      

2、mysql开启binlog日志

        
        
      

3、查看到log_bin的值为OFF,说明未开启binlog,需要先开启mysql的binlog

编辑mysql的配置文件,一般为my.cnf 或 my.ini。增加如下信息

        
        
      

之后重启mysql服务

问题:在使用docker容器启动的mysql遇到了权限问题

        
        
      

所以在docker容器启动的mysql,先不要在my.cnf增加上面的内容,先正常启动mysql, 然后进入容器内部进行授权操作

        
        
      

重启mysql容器

4、查看是否已开启binlog日志

        
        
      

编程读取binlog日志

        
        
      

上面程序输出结果:

        
        
      

实时监听Binlog日志

        
        
      

以上监听程序,我们仅对部分事件进行了监听处理。当数据发生变化后,输出如下:

        
        
      

更序列使用了BitSet表示,所以如果你要与具体的列想对应,你还应该执行如下的语句来确定具体的列名:

idintNOPRINULLauto_increment
ageintYESNULL

        
        
      

这是增加的测试数据


 打赏        分享



评论

邮箱: 昵称: