在实时监控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)编辑文件,加配置参数文章来源:https://www.toymoban.com/news/detail-506230.html
文章来源地址https://www.toymoban.com/news/detail-506230.html
//导入binLog依赖包
<dependency>
<groupId>com.github.shyiko</groupId>
<artifactId>mysql-binlog-connector-java</artifactId>
<version>0.21.0</version>
</dependency>
//代码编写环节:
//其中的base代表的是数据库名字,代表此逻辑可以监听到指定数据库,如需要监听到表只需在包一层
//逻辑
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;
map.put("database",tableMapEventData.getDatabase());
}
if (map.getOrDefault("database","").equals("base") && data instanceof UpdateRowsEventData) {
System.out.println("Update:");
System.out.println(data.toString());
} else if (map.getOrDefault("database","").equals("base") && data instanceof WriteRowsEventData) {
System.out.println("Insert:");
System.out.println(data.toString());
} else if (map.getOrDefault("database","").equals("base") && data instanceof DeleteRowsEventData) {
System.out.println("Delete:");
System.out.println(data.toString());
}
});
}
到了这里,关于Java实时监控Mysql的binLog--可指定监听某个库或者某张表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!