需求,监控mysql的事件操作,比如插入数据,删除数据,更新数据,只要mysql的数据发生变化,就能监听到。然后实现我们的业务操作。
首先要开启log_bin日志。

设置mysql的配置文件,修改my.ini 文件,添加下面这些配置,然后重启mysql
[mysqld]# 开启log_binserver_id=2#设置日志三种格式:STATEMENT、ROW、MIXED 。binlog_format = mixed#设置日志路径,注意路经需要mysql用户有权限写log-bin = D:/devtool/phpstudy_pro/Extensions/MySQL5.7.26/log/mysql-bin.log#设置binlog清理时间expire_logs_days = 7#binlog每个日志文件大小max_binlog_size = 100m#binlog缓存大小binlog_cache_size = 4m#最大binlog缓存大小max_binlog_cache_size = 512m
JAVA代码实现监听
<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.DeleteRowsEventData;import com.github.shyiko.mysql.binlog.event.EventData;import com.github.shyiko.mysql.binlog.event.TableMapEventData;import com.github.shyiko.mysql.binlog.event.UpdateRowsEventData;import com.github.shyiko.mysql.binlog.event.WriteRowsEventData;import java.io.IOException;public class TestBin {public static void main(String[] args) {BinaryLogClient client = new BinaryLogClient("localhost", 3306, "root", "123456");client.setServerId(2);client.registerEventListener(event -> {EventData data = event.getData();System.out.println("data:" + data);if (data instanceof TableMapEventData) {System.out.println("Table:");TableMapEventData tableMapEventData = (TableMapEventData) data;System.out.println(tableMapEventData.getTableId() + ": [" + tableMapEventData.getDatabase() + "-" + tableMapEventData.getTable() + "]");}if (data instanceof UpdateRowsEventData) {System.out.println("Update:");System.out.println(data.toString());} else if (data instanceof WriteRowsEventData) {System.out.println("Insert:");System.out.println(data.toString());} else if (data instanceof DeleteRowsEventData) {System.out.println("Delete:");System.out.println(data.toString());}});try {client.connect();} catch (IOException e) {e.printStackTrace();}}}
创作不易,如果对你有帮助,麻烦三连。点赞,在看,转发。


文章转载自干货食堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




