# mysql-binlog-row-event
**Repository Path**: bingWeb/mysql-binlog-row-event
## Basic Information
- **Project Name**: mysql-binlog-row-event
- **Description**: 基于mysql-binlog-connector-java轻量级实现的实时监控binglog日志,可以基于该事件做自己的业务处理。比如缓存清除、操作日志、数据同步等。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2025-01-20
- **Last Updated**: 2025-08-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: binlog, Cache, Java, SpringBoot
## README
mysql-binlog-row-event
基于SpringBoot开发的轻量级Java快速开发框架
## 平台简介
基于mysql-binlog-connector-java轻量级实现的实时监控binglog日志,可以基于该事件做自己的业务处理。比如缓存清除、操作日志、数据同步等。
## 参考核心配置
```
# 配置
db:
binlog:
enable: true
binlogListenConfigPath: db-binlog.json
lockTime: 60
renewalTime: 30
persistence: true
clean:
cache:
enable: true
```
- db.binlog.enable 控制整个功能的开关
- db.binlog.binlogListenConfigPath binlog监听的数据库表配置(json文件路径相对resources目录)
- db.binlog.lockTime 启动锁的时间(控制集群模式只有一个实例)
- db.binlog.renewalTime 续期时间
- db.binlog.persistence 控制是否续读
- clean.cache.enable 控制是否自动清理缓存
## 使用说明
1. 参考binlog-example的示例
2. (必)实现接口ITableSchemaService。用于查询表结构(binlog无此数据需要业务提供)
3. (必)实现接口IDistributedLockService。分布式锁服务(业务自己实现,不限制实现方式)
4. (必)实现接口IBinlogRowEventHandle。binlog事件句柄,这里消费binlog日志解析出来的内容
5. 实现接口IDistributedCacheService。db.binlog.persistence为true时需要实现,否则无效。
6. binlog-cache-clean基于binlog-core实现自动清理缓存的功能。
7. binlog-cache-clean需实现ICacheCleanHandle,并且需要使用INamespaceCacheManager.register和registerFilterName,注册需要被清理缓存管理器管理的缓存key,可参考binlog-example 的实现。
8. binlog-cache-clean提供CacheCleanJob.clean 方法,任务补偿,单次key过多的情况需要定时任务去补偿。
## 注意
INamespaceCacheManager.register注册的key不能是无限大或无限多的值,不然内存会溢出的。
## 自动清理缓存策略说明
读取到binlog的事件数据后,(表名作为命名空间),然后根据命名空间查询注册了的缓存key以及过滤属性(binlog数据映射的数据的属性名,目的是为了一条数据变动,关联的几个属性如果有缓存都会被清理掉),
然后组装key为scankey然后根据前缀匹配缓存的具体key,再进一步删除。
## 建议
为了更好的维护缓存,务必要规范使用缓存,不要一个命名空间下含有另外一个命名空间的数据,这样的话很难维护好缓存的。
多个命名空间加缓存应该独立加缓存然后聚合多个命名空间的方式来完成,这样可以实现需求,同时可以更好的维护好缓存。
## 模块说明
| binlog-common | 公共模块一些实体、工具类 |
|-----------------------|--------------|
| binlog-core | 核心模块 |
| binlog-cache-clean | 缓存清理模块 |
| binlog-example | 案例 |