在实时监控Mysql的binLog时,前提是开启Mysql的BinLog打印机制,如果是有主从节点的,肯定是开
启了的,因为主从节点也是通过binLog实现数据同步,状态一致的。
在MySql的命令行或者客户端输入命令:
show variables like '%bin%'
会看到打印MySql的配置信息,其中有一行log_bin,如果对应的值为ON代表已开启BinLog机制,如果
是OFF则未开启BinLog打印机制,需先开启这个机制才能next.
*接下来接瞅瞅开启方法(已开启的跳过这一步哦,直接next)*1) 找到Mysql的配置文件中的my.ini文件(这里建议在编辑的时候不要修改此文件的编码,修改后
可能会导致文件无法解析)
2) 在文件中的[mysqld]后面加入两行配置:
log_bin=mysql-bin
binlog-format=ROW
第一行的开启binLog机制,第二行是数据binLog数据一行一行打印,都要加上哦!
3) 重启mysql服务 - 重启之后在输入命令:show variables like '%bin%' 查看是否开启
binLog机制
1)找到my.ini文件
2)编辑文件,加配置参数
//导入binLog依赖包<dependency><groupId>com.github.shyiko</groupId><artifactId>mysql-binlog-connector-java</artifactId><version>0.21.0</version></dependency>
//代码编写环节://其中的base代表的是数据库名字,代表此逻辑可以监听到指定数据库,如需要监听到表只需在包一层//逻辑publicstaticvoidmain(String[] args){BinaryLogClient binaryLogClient =newBinaryLogClient("host",3306,"root","root");
binaryLogClient.setServerId(1);
binaryLogClient.registerEventListener(event ->{EventData data = event.getData();TableMapEventData tableMapEventData =null;if(data instanceofTableMapEventData){
tableMapEventData =(TableMapEventData) data;
map.put("database",tableMapEventData.getDatabase());}if(map.getOrDefault("database","").equals("base")&& data instanceofUpdateRowsEventData){System.out.println("Update:");System.out.println(data.toString());}elseif(map.getOrDefault("database","").equals("base")&& data instanceofWriteRowsEventData){System.out.println("Insert:");System.out.println(data.toString());}elseif(map.getOrDefault("database","").equals("base")&& data instanceofDeleteRowsEventData){System.out.println("Delete:");System.out.println(data.toString());}});}
本文转载自: https://blog.csdn.net/weixin_48960305/article/details/127926739
版权归原作者 生吃小瓜子 所有, 如有侵权,请联系我们删除。
版权归原作者 生吃小瓜子 所有, 如有侵权,请联系我们删除。