设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间09 现在时间09 缓存数据 现在不玩命,将来命玩你;现在不努力,未来不给力。今天,早安!

现在不玩命,将来命玩你;现在不努力,未来不给力。今天,早安!

查看: 495|回复: 3

Java binLog日志监听方式

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:15
  • 打卡月天数:0
  • 打卡总奖励:166
  • 最近打卡:2024-01-31 00:21:47
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
35
主题
29
精华
0
金钱
276
积分
78
注册时间
2023-8-12
最后登录
2025-3-13

发表于 2024-11-17 20:26:49 | 显示全部楼层 |阅读模式
目录
  • Java binLog日志监听
    • 一、Windows下开启MySQL binLog日志
    • 二、Java代码示例演示
  • 总结

    Java binLog日志监听

    监听指定的表去做一些处理逻辑,首先是要开启M有SQL的配置,然后再撸代码。

    一、Windows下开启MySQL binLog日志

    首先要开启MySQL的BinLog 管理

    1. show variables like '%log_bin%';
    复制代码

    1.png

    如果发现是OFF,打开mysql文件夹下面的my.ini,修改一下

    如果不知道my.ini 在哪里,打开【服务】-> 右击属性

    2.jpeg

    3.png

    4.png

    拉到最后就可以看见my.ini,然后找到文件后

    [mysqld] 下面加

    1. # 开启bin-log
    2. log-bin=mysql-bin # 开启binlog功能
    3. binlog-format=ROW # 设置binlog格式
    4. server_id=1 # 设置服务ID号
    复制代码

    5.jpeg

    然后 重启服务,就会发现已经起好了

    二、Java代码示例演示

    首先引入Maven包

    1. <dependency>
    2. <groupId>com.github.shyiko</groupId>
    3. <artifactId>mysql-binlog-connector-java</artifactId>
    4. <version>0.21.0</version>
    5. </dependency>
    复制代码

    上代码

    1. import cn.hutool.core.collection.ListUtil;
    2. import com.alibaba.fastjson2.JSON;
    3. import com.github.shyiko.mysql.binlog.BinaryLogClient;
    4. import com.github.shyiko.mysql.binlog.event.*;
    5. import com.ruoyi.common.utils.StringUtils;
    6. import com.ruoyi.web.controller.websocket.AlarmWebSocket;
    7. import com.ruoyi.web.service.IWidfireDataService;
    8. import lombok.extern.slf4j.Slf4j;
    9. import org.springframework.beans.factory.annotation.Autowired;
    10. import org.springframework.stereotype.Component;
    11. import java.io.IOException;
    12. import java.util.List;
    13. import java.util.Map;
    14. /**
    15. * mysql bin log 日志监听
    16. */
    17. @Component
    18. @Slf4j
    19. public class MySQLBinaryLogConfig {
    20. public static IWidfireDataService widfireDataService;
    21. @Autowired
    22. public void setSenderService(IWidfireDataService widfireDataService){
    23. MySQLBinaryLogConfig.widfireDataService= widfireDataService;
    24. }
    25. private static final List<String> TABLE_NAME = ListUtil.of("alart_ai"); //数据库表,需要监听的表
    26. {
    27. System.out.println("启动监听:启动中");
    28. getThread().start();
    29. System.out.println("启动监听:成功");
    30. }
    31. public Thread getThread() {
    32. BinaryLogClient client = new BinaryLogClient("127.0.0.1", 3306, "root", "123456");
    33. client.setServerId(1);
    34. return new Thread(() -> {
    35. client.registerEventListener(event -> {
    36. String table =null;
    37. final EventData data = event.getData();
    38. if (data instanceof TableMapEventData) {
    39. TableMapEventData tableMapEventData = (TableMapEventData) data;
    40. String database = tableMapEventData.getDatabase();
    41. table = tableMapEventData.getTable();
    42. log.info("数据表:{},data:{},database:{}",table,data.toString(),database);
    43. }else if (data instanceof UpdateRowsEventData) {
    44. UpdateRowsEventData tableMapEventData = (UpdateRowsEventData) data;
    45. System.out.println("更新:");
    46. } else if (data instanceof WriteRowsEventData) {
    47. System.out.println("添加:");
    48. } else if (data instanceof DeleteRowsEventData) {
    49. System.out.println("删除:");
    50. }
    51. if(StringUtils.isNotEmpty(table) && TABLE_NAME.contains(table)){
    52. log.info("<<<<<< 收到MySQL binLog 日志推送 >>>>>>>");
    53. //开始编写具体的逻辑
    54. }
    55. });
    56. try {
    57. client.connect();
    58. } catch (IOException e) {
    59. e.printStackTrace();
    60. }
    61. });
    62. }
    63. }
    复制代码

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持晓枫资讯。


    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
    晓枫资讯-科技资讯社区-免责声明
    免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
          1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
          2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
          3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
          4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
          5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

      离线 

    TA的专栏

    等级头衔

    等級:晓枫资讯-列兵

    在线时间
    0 小时

    积分成就
    威望
    0
    贡献
    0
    主题
    0
    精华
    0
    金钱
    13
    积分
    6
    注册时间
    2022-12-26
    最后登录
    2022-12-26

    发表于 2025-2-11 10:24:02 | 显示全部楼层
    感谢楼主分享。
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

      离线 

    TA的专栏

    等级头衔

    等級:晓枫资讯-列兵

    在线时间
    0 小时

    积分成就
    威望
    0
    贡献
    0
    主题
    0
    精华
    0
    金钱
    11
    积分
    2
    注册时间
    2024-8-31
    最后登录
    2024-8-31

    发表于 2025-3-30 20:40:02 | 显示全部楼层
    顶顶更健康!!!
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

      离线 

    TA的专栏

    等级头衔

    等級:晓枫资讯-列兵

    在线时间
    0 小时

    积分成就
    威望
    0
    贡献
    0
    主题
    0
    精华
    0
    金钱
    22
    积分
    24
    注册时间
    2022-12-26
    最后登录
    2022-12-26

    发表于 2025-4-11 13:07:45 | 显示全部楼层
    路过,支持一下
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
    严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    1楼
    2楼
    3楼
    4楼

    手机版|晓枫资讯--科技资讯社区 本站已运行

    CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

    晓枫资讯--科技资讯社区

    本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

    如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表