java binlog

作者:原创时间:2022-03-24
文档

java binlog是什么,让我们一起了解一下?

binlog是记录所有数据库表结构变更以及表数据修改的二进制日志,而java代码中可以通过地方的类库提供的方法去监听日志文件中的时间变化,当日志中出现增删改时可以在java中监听到,从而进行一些对缓存等内容的自动修改。

如何打开binlog?

在mysql的目录下etc/my.conf或者my.ini文件中的[mysqld]标签下添加以下配置:

log-bin=mysql-bin
binlog-format=Row
server_id=201903

那么在java中是如何监听binlog日志的?

文件pom地址:


    com.github.shyiko
    mysql-binlog-connector-java
    0.13.0

引入文件后:

//配置连接(指定数据库的地址,端口号,账号,密码)
BinaryLogClient logClient = new BinaryLogClient(
        "127.0.0.1",
        3306,
        "root",
        "123456"
);
//注册事件监听器(可以对不同日志变更进行不同的操作逻辑)
logClient.registerEventListener(event -> {
    EventData data = event.getData();
    //如果日志是更新记录
    if(data instanceof UpdateRowsEventData){
        System.out.println("update");
    }else if(data instanceof WriteRowsEventData){
        //写操作
        System.out.println("write");
    }else if(data instanceof DeleteRowsEventData){
            //删除操作
        System.out.println("delete");
 
    }
});
//开始连接监听
logClient.connect();

拓展一下:binlog还有这三个用途,分别为恢复、复制、审计。

恢复:创建的库突然消失,可以用来恢复数据。

复制:从库有两个线程,一个I/O线程,一个SQL线程,I/O线程读取主库传过来的binlog内容并写入到relay log,SQL线程从relay log里面读取内容,写入从库的数据库。

审计:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击。

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
如何清理win10电脑c盘 java bit java blob java break wps怎么求和 java bufferedimage java bufferedoutputstream java build.gradle java bundle java bytebuffer java byte取值范围 java calculate 苹果13怎么开机 java calendar获取当前时间 java callback java ceiling 平板如何录屏 java cglib iPad怎么重启 java channel win10c盘满了怎么清理 java binder java binary excel表格怎么合并单元格 java bigdecimal java benchmark java beanutils 手机充电发热发烫是什么原因 手机充电时可以玩手机吗 java bean java base64decoder java base64 java barrier java bacnet win10专业版和企业版的区别 java async java assembly java aspose java aspectj java asmx