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的位置。
查看Redis,可以看到Binlog4j将binlog文件名称和position位置,客户端编号ServerId给记录了下来;
宕机续读就是通过对比这里记录的binlog文件名称和position位置实现的。
相关链接
项目地址: https://gitee.com/dromara/binlog4j
视频教程: https://www.douyin.com/user/self?modal_id=7282114402210417980