j请问java使用这个binlog包 怎么实时监控mysql单个库的数据变化(增删改查)
java
<dependency>
<groupId>com.github.shyiko</groupId>
<artifactId>mysql-binlog-connector-java</artifactId>
<version>0.21.0</version>
</dependency>
public static void main(String[] args) {
BinaryLogClient binaryLogClient = new BinaryLogClient("host", 3306,"root", "root");
binaryLogClient.setServerId(1);
binaryLogClient.registerEventListener(event -> {
EventData data = event.getData();
TableMapEventData tableMapEventData = null;
if (data instanceof TableMapEventData) {
tableMapEventData = (TableMapEventData) data;
}
if (data instanceof WriteRowsEventData) {
WriteRowsEventData writeRowsEventData = (WriteRowsEventData) data;
List<Serializable[]> rows = writeRowsEventData.getRows();
for (Serializable[] row : rows) {
Iterator<Serializable> iterator = Arrays.stream(row).iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
System.out.print(iterator.next().toString() + " - ");
System.out.println();
}
}
}
});
try{
binaryLogClient.connect();
}catch (IOException e){
System.out.println(e);
}
}
这里已经很详细了:
java通过bin-log监控mysql数据变化_蓝天灬的博客-CSDN博客_java监听mysql数据变化
需要监控到单个database的,不是所有database的方法
提供参考实例【Java代码中,如何监控Mysql的binlog?】,期望对你有所帮助:https://www.modb.pro/db/85008
【实例讲解的非常详细,代码注解清晰】
你可以通过 tableMapEventData.getDatabase() 获取数据库名来监控特定数据库
这里写的很详细,希望对你有所帮助
https://blog.csdn.net/u013169723/article/details/124930882
有其他问题,可以一起探讨