<dependency> <groupId>com.github.shyiko</groupId> <artifactId>mysql-binlog-connector-java</artifactId> <version>0.21.0</version> </dependency>
public class App { public static void main(String[] args) throws Exception { BinaryLogClient logClient = new BinaryLogClient( "127.0.0.1", 3306, "db", "root", "7654321" ); logClient.registerEventListener(event -> { EventData data = event.getData(); // 如果日志是更新记录 if(data instanceof UpdateRowsEventData){ long tableId = ((UpdateRowsEventData) data).getTableId(); System.out.println("update: " + tableId); }else if(data instanceof WriteRowsEventData){ long tableId = ((WriteRowsEventData) data).getTableId(); // 如果日志是写操作 System.out.println("write: " + tableId); }else if(data instanceof DeleteRowsEventData){ long tableId = ((DeleteRowsEventData) data).getTableId(); // 如果日志是删除操作 System.out.println("delete: " + tableId); } }); // 开始监听 logClient.connect(); } }
解释: 关闭所有已打开的表对象,同时将查询缓存中的结果清空。就是说Flush tables的一个效果就是会等待所有正在运行的SQL请求结束。
flush tables; flush table table1,table2...
-- 查询binglog日志列表 show binary logs; -- 查询第一个(最早)的binlog日志 show binlog events; -- 指定查询 mysql-bin.000077 日志 show binlog events in 'mysql-bin.000077'; -- 指定查询 mysql-bin.000077 日志,并且从pos=1024开始查 show binlog events in 'mysql-bin.000077' from 1024; -- 指定查询 mysql-bin.000077 日志,并且从pos=1024开始查起,查询10条 show binlog events in 'mysql-bin.000077' from 1024 limit 10; -- 指定查询 mysql-bin.000077 日志,并且从pos=1024开始查起,偏移2行,查询10条 show binlog events in 'mysql-bin.000077' from 1024 limit 2,10;
mysql-binlog-connector-java
阿里巴巴 MySQL binlog 增量订阅&消费组件
mysql原理 ~ binlog系列之 table_id详谈