[开源]一款开源的数据同步中间件,支持任意搭配表同步映射关系
开源系统流程管理
![[开源]一款开源的数据同步中间件,支持任意搭配表同步映射关系](https://yy123.ink/api/img/1782588957543-ph6tsh.jpg)
一、开源项目简介

DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。
特点
- 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系
- 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志
- 开发插件,自定义转化同步逻辑
二、开源协议
使用Apache-2.0开源协议
三、界面展示
✨预览
驱动管理

驱动详情

驱动表字段关系配置

监控

上传插件

四、功能概述
应用场景
连接器
数据源
目标源
支持版本(包含以下)
MySQL
✔
✔
5.7.19以上
Oracle
✔
✔
10gR2 -11g
SqlServer
✔
✔
2008以上
PostgreSQL
✔
✔
9.5.25以上
ES
✔
✔
6.0以上
Kafka
开发中
✔
2.10-0.9.0.0以上
File
✔
✔
*.txt, *.unl
SQL
✔
支持以上关系型数据库
后期计划
Redis
五、技术选型
设计
架构图

开发依赖
- JDK - 1.8.0_40(推荐版本以上)
- Maven - 3.3.9(推荐版本以上)
安装配置
步骤
- 安装JDK 1.8(省略详细)
- 下载安装包DBSyncer-1.0.0-RC.zip(也可手动编译)
- 解压安装包,Window执行bin/startup.bat,Linux执行bin/startup.sh
- 打开浏览器访问:http://127.0.0.1:18686
- 账号和密码:admin/admin
增量同步配置(源库)
MySQL
- Dump Binlog二进制日志。Master同步Slave, 创建IO线程读取数据,写入relaylog,基于消息订阅捕获增量数据。
修改my.ini文件,重启服务
#服务唯一ID server_id=1 log-bin=mysql_bin binlog-format=ROW max_binlog_cache_size = 256M max_binlog_size = 512M #监听同步的库, 多个库使用英文逗号“,”拼接 replicate-do-db=test
准备账号用于数据同步(这里我为test数据库创建了ae86账号,并授权)
CREATE USER 'ae86'@'%' IDENTIFIED WITH mysql_native_password BY '123'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'ae86'@'%'; GRANT SELECT ON test.* TO 'ae86'@'%'; flush privileges;
Oracle
- CDN注册订阅。监听增删改事件,得到rowid,根据rowid执行SQL查询,得到变化数据。
1、授予账号监听权限, 同时要求目标源表必须定义一个长度为18的varchar字段,通过接收rowid值实现增删改操作。
grant change notification to 你的账号
2、账号必须是监听表的OWNER
SELECT OBJECT_ID, OBJECT_NAME, OWNER FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER='你的账号';

SqlServer
- SQL Server 2008提供了内建的方法变更数据捕获(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改。
要求2008版本以上, 启动代理服务(Agent服务), 连接账号具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,具有源表SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。
- 启动 代理 和 数据库 服务

- 准备测试账号,test

- 分配sysadmin角色

- 分配指定数据库权限

PostgreSQL
- 通过复制流技术监听增量事件,基于内置插件pgoutput、test_decoding实现解析wal日志
修改postgresql.conf文件,重启服务
wal_level=logical
File
- 监听文件修改时间得到变化文件,通过文件偏移量读取最新数据
监听文件实现方案
ES
- 定时获取增量数据。
账号具有访问权限。
日志
建议MySQL、SqlServer、PostgreSQL都使用日志

定时
假设源表数据格式

评论