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

Springboot——使用shyiko监听mysql的bin-log

文章目录

  • 前言
  • 架构版本
  • mysql开放bin-log配置
  • 测试代码编写
    • 项目依赖引入
    • 编写测试类
    • 测试

前言

最近想在Java项目中,对数据库的bin-log日志文件数据变化做一个监听。找了多个开源框架,最终选择shyiko来实现。

架构版本

  • jdk 17
  • mysql 5.7.1
  • shyiko 0.13.0

mysql开放bin-log配置

需要能监听到mysqlbin-log数据变化,最主要的还需要数据库开通了bin-log。

查看mysql数据库的配置文件。

vi /etc/my.cnf

在配置文件最下面增加下面的几项配置:

 # 配置开启binlog 
log-bin=/var/lib/mysql/mysql-bin.log# 记录log文件过期时间,0表示永不过期
expire_logs_days=7# 注意5.7以及更高版本需要配置本项:server-id=1(数值自定义,保证唯一性); #binlog格式,有3种statement,row,mixed # 安全性、主从同步一致性,采取row或mixed,建议使用row# statement:记录操作逻辑# row:记录sql(如update)影响的那条记录之后的结果# mixed:statement和row的综合效果binlog_format=ROW # 设置最大binlog文件的大小,如果超过则会切换至下一序列号文件
# 这里也有时间设定,超过6小时也会切换下一序列号文件
max_binlog_size=100M# 二进制文件缓存大小,可以通过 show status like 'blinlog_%';查看调整写入磁盘的次数。
# 写入磁盘为0则最好
binlog_cache_size=16M# 最大缓存大小
max_binlog_cache_size=256M# 表示每1次执行写入就与硬盘同步,会影响性能,# 为0时表示,事务提交时mysql不做刷盘操作,由系统决定 # 5.7 版本该项参数不合法#sync‐binlog=1# 每次事务提交,将日志缓冲写入 log file,并同时flush到磁盘
# 设置次数,1表示提交1次就进行操作;n表示进行n次事务提交之后
innodb_flush_log_at_trx_commit=1

其中log-bin的配置路径需要与mysql 的路径一致

配置完成后,重启MySQL服务。

service mysqld restart

测试代码编写

项目依赖引入

在测试项目中,引入shyiko 依赖。

<dependency><groupId>com.github.shyiko</groupId><artifactId>mysql-binlog-connector-java</artifactId><version>0.13.0</version>
</dependency>

编写测试类

import com.github.shyiko.mysql.binlog.BinaryLogClient;
import com.github.shyiko.mysql.binlog.event.*;public class ShyikoTest {public static void main(String[] args) {BinaryLogClient client = new BinaryLogClient("localhost", 3306, "root", "root");// 与 my.cnf 文件中的 server-id 不是一个东西client.setServerId(12345);client.registerEventListener(new BinaryLogClient.EventListener() {@Overridepublic void onEvent(Event event) {EventData data = event.getData();if (data instanceof TableMapEventData) {TableMapEventData tableMapEventData = (TableMapEventData) data;System.out.println("Table map event: " + tableMapEventData);} else if (data instanceof WriteRowsEventData) {WriteRowsEventData writeRowsEventData = (WriteRowsEventData) data;System.out.println("Write rows event: " + writeRowsEventData);} else if (data instanceof UpdateRowsEventData) {UpdateRowsEventData updateRowsEventData = (UpdateRowsEventData) data;System.out.println("Update rows event: " + updateRowsEventData);} else if (data instanceof DeleteRowsEventData) {DeleteRowsEventData deleteRowsEventData = (DeleteRowsEventData) data;System.out.println("Delete rows event: " + deleteRowsEventData);}}});try {client.connect();} catch (Exception e) {e.printStackTrace();}}
}

测试

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/487870.html

相关文章:

  • 英特尔Day0适配Qwen3-VL-4B/8B新模型,释放系统资源带来流畅体验
  • 深度解析TENGJUN JA017-BPD105-A-SLIP-RING 10极滑动环耳机插座
  • 网站建设培训学校北京怎么做外网的网站
  • 东方网站建设展馆设计网站推荐
  • 做战袍网站贪玩手游官方网站
  • excel做注册网站网站被墙是谁做的
  • 河北省城乡建设培训网官方网站wordpress 在线文章插件
  • n8n飞书节点知识空间中的多维表格 Token如何获取
  • 做外贸的人经常逛的网站网校网站建设
  • LLVM IR深度技术解析:架构、优化与应用
  • 网站建设+三乐衡水景县专业做淘宝网站公司
  • linux学习笔记(33)网络编程——HTTP协议
  • 守护线程,礼让线程,插入线程
  • 网站建设好不好北京数据优化公司
  • 网站建设服务非常好湖南岚鸿公司万网怎样安装wordpress
  • FPGA职位经典笔/面试题(附答案与解析)
  • 哪个网站百度收录快怎样免费安装wordpress
  • 给客户做网站建设方案推广计划地域设置的作用描述不正确的是
  • N8N 系列:入门级,告别 SQL “天书”!N8N原生数据表 Data Tables,让新手也能轻松管理数据,上手即会用
  • 整体设计 逻辑系统程序 之28 拼语言+ CNN 框架核心定位、三阶段程序与三种交换模式配套的方案讨论 之1
  • 谷歌自建站和优化中国对外贸易公司排名
  • 网站被百度k掉怎么办手机网站制作方案
  • 永磁同步电机无速度算法--基于降阶准谐振ESO和Newton-Raphson方法PLL的PMSM无速度传感器控制
  • 网站建设推广方案策划书羽毛球赛事直播app
  • 做摄影网站的目的是什么给自己的网站做代言
  • GEO实战之GEO 在营销生态中的定位:GEO 与其他营销渠道的协同效应
  • wordpress怎么做响应式网站phpcms v9漏洞
  • 做网站的每天打电话咋办wordpress轻语博客
  • 邯郸网站建设费用做网站费用 优帮云
  • 网站建设职责要求网站开发命名规则