# data_sync
**Repository Path**: bboymars/data_sync
## Basic Information
- **Project Name**: data_sync
- **Description**: # data_sync
基于Debezium实现数据同步
- **Primary Language**: Unknown
- **License**: AFL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2023-02-20
- **Last Updated**: 2024-12-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# data_sync
#### 介绍
#### data_sync
基于Debezium实现数据同步,源库Mysql -> MQ -> Mysql(支持多个业务端)
#### 软件架构
方案架构

系统交互

架构说明
1、采用采集数据,接收数据两端分离;
2、采用MQ进行数据收发解耦;
3、服务端Server以嵌套Debezium方式进行监听Binlog;
4、客户端提供SDK方式接入业务端;
架构优势
1、支持同步源端DDL而不影响下游业务系统;
2、业务系统接入便利;
3、保证数据可靠性;
4、支持1比N;
5、支持数据丢失补偿;
6、支持源、目标库之间数据一致性对比;
#### 项目模块说明
1、asura-ops-sync-server 服务进程,监听数据源服务
2、asura-ops-sync-api 接口模块,提供手动启动,暂停,补偿等功能
3、asura-ops-sync-client 模拟业务端服务,接收消息并逻辑处理
4、asura-ops-sync-sdk 客户端SDK,方便业务端快速接入
5、asura-ops-sync-check-server 数据对比程序,监控源数据和目标数据的一致性
#### 安装教程
##### 监听服务
1. 执行数据库结构初始化脚本doc/sql/asura_sync.sql, 添加需要被监听的数据库信息(涉及表cfg_db,cfg_server,cfg_table,cfg_server_db,cfg_mq);
2. 修改asura-ops-sync-server配置信息(apollo.config)并启动;
##### 业务端SDK接入
1、新建client同步应用
2、引入依赖
com.asura
asura-ops-sync-sdk
0.0.2-SNAPSHOT
3、配置多数据源
ops.target.dataSourceProperties[0].url = jdbc:mysql://test.db8-01-asura.ruigushop.com:3306/asura_wms_004?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
ops.target.dataSourceProperties[0].username = asura
ops.target.dataSourceProperties[0].password = asura
ops.target.dataSourceProperties[0].type = com.alibaba.druid.pool.DruidDataSource
ops.target.dataSourceProperties[1].url = jdbc:mysql://test.db8-01-asura.ruigushop.com:3306/asura_wms_005?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
ops.target.dataSourceProperties[1].username = asura
ops.target.dataSourceProperties[1].password = asura
ops.target.dataSourceProperties[1].type = com.alibaba.druid.pool.DruidDataSource
3、新建个类实现AbstractSyncHandler接口
@Slf4j
@Component
public class IBSSyncHandler extends AbstractSyncHandler