Binlog4j一个轻量级 Mysql Binlog 客户端,支持集群模式、宕机续读、数据转换,很方便的与传统项目或SpringBoot项目集成。

下面已SpringBoot举例说明:

SpringBoot接入Binlog4j

引入binlog4j-spring-boot-starter依赖

<dependency>
    <groupId>com.gitee.Jmysy</groupId>
    <artifactId>binlog4j-spring-boot-starter</artifactId>
    <version>latest.version</version>
</dependency>

application.yml添加配置

spring:
  binlog4j:
    # Redis配置信息
    redis-config:
      host: 127.0.0.1
      port: 6379
      database: 1
    # 客户端配置信息
    client-configs:
      master:
        # MySQL服务器信息
        host: 127.0.0.1
        port: 3307
        username: root
        password: root654321
        # 部署模式
        mode: standalone
        # 读取记忆
        persistence: true
        # 客户端编号
        serverId: 1234

监听类

@Slf4j
@BinlogSubscriber(clientName = "master")
public class BinlogPositionEventHandler implements IBinlogEventHandler<User> {

    @Override
    public void onInsert(BinlogEvent<User> event) {
        log.info("===onInsert: {}", JSONUtil.toJsonStr(event));
    }

    @Override
    public void onUpdate(BinlogEvent<User> event) {
        log.info("===onUpdate: {}", JSONUtil.toJsonStr(event));
    }

    @Override
    public void onDelete(BinlogEvent<User> event) {
        log.info("===onDelete: {}", JSONUtil.toJsonStr(event));
    }

    @Override
    public boolean isHandle(String database, String table) {
        log.info("===database: {}, table: {}", database, table);
        return true;
    }
}

经过上面非常简单的三步后,即可轻松实现MySQL Binlog监听。启动项目后,通过日志可以看到Binlog客户端已经链接上配置的MySQL服务,并且获取到对应的binlog文件和position的位置。
image

查看Redis,可以看到Binlog4j将binlog文件名称和position位置,客户端编号ServerId给记录了下来;
宕机续读就是通过对比这里记录的binlog文件名称和position位置实现的。
image-1695527771508

相关链接

项目地址: https://gitee.com/dromara/binlog4j
视频教程: https://www.douyin.com/user/self?modal_id=7282114402210417980