# 数据同步平台 **Repository Path**: happergit/ibest-data-integration ## Basic Information - **Project Name**: 数据同步平台 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-13 - **Last Updated**: 2023-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据同步分发组件 本中间件是对mysql中的数据进行分发给其他组件的中间件,采取两种模式:RocketMQ、binlog。 # 项目特点 1. 对mysql数据实时监听,Insert、Update和Delete; 2. 支持高可用性的RocketMQ模式,在服务宕机时,不丢失数据; 3. 支持简单模式(binlog模式),监听mysql的binlog日志; 4. 支持客户端自定义开发,可以定制处理器,如可以同步给ES、本地缓存等; #### 在RocketMQ模式下 使用到RocketMQ,Redis,Mysql,Canal #### 在binlog模式下 使用到Redis、Mysql # 快速开始 ### 1、ibest-data-server 配置yml ``` spring: application: name: data-server #指定Redis服务器 redis: host: 10.1.1.1 port: 6379 ibest: #指定模式 server-type: binlog #RocketMQ、binlog #在RocketMQ模式下,topic,和消费者组名 canal: customer-topic: canal-to-mq-topic customer-group: CanalToTargetProducerGroup #在RocketMQ模式下,RocketMQ信息 rocketmq: name-server: 10.1.1.1:9876 producer: group: group_rocketmq #在binlog模式下,指定监听数据库信息 binlog: datasource: # 订阅binlog数据库连接信息,ip,端口,用户密码(用户必须要有权限) host: 127.0.0.1 port: 3306 username: root passwd: 123456 db: source_db # 监听数据库 table: customer # 监听的表(多个用英文逗号分隔) ``` 启动项目,访问http://ip:8765/ ### 2、集成ibest-data-client 加入pom依赖 ``` com.ibest.base ibest-data-client 1.0-SNAPSHOT ``` 配置yml ``` spring: #订阅Redis的服务信息 redis: host: 10.100.25.178 port: 6379 #同步客户端订阅名称 ibest: client: topic-name: source_db ``` 扩展接口 集成Handler接口,实现public void handle(CanalBinlogBean canalBinlogBean) 方法,如下: ``` @Component public class EsHandle implements Handler { @Override public void handle(CanalBinlogBean canalBinlogBean) { System.out.println(canalBinlogBean); } } ``` 扩展实体类CanalBinlogBean介绍: ``` /**操作的数据*/ private List data; /**监听数据库名称*/ private String database; private long es; //递增,从1开始 private int id; /**是否是DDL语句*/ private boolean isDdl; //表结构的字段类型 private JSONObject mysqlType; /**UPDATE语句,旧数据*/ private String old; /**主键名称,支持联合主键*/ private List pkNames; //sql语句 private String sql; private JSONObject sqlType; //表名 /**数据来源表名*/ private String table; private long ts; /**(新增)INSERT、(更新)UPDATE、(删除)DELETE等等*/ private String type; ``` ### 版本兼容 1. RocketMQ=4.8.0 2. Canal=1.5.0 3. MYSQL>=8.0 4. Redis>=5.0 5. JDK=1.8 6. Sprinboot>=2.2.0.RELEASE