|
2 ani în urmă | |
---|---|---|
dbsyncer-biz | 2 ani în urmă | |
dbsyncer-cache | 2 ani în urmă | |
dbsyncer-cluster | 2 ani în urmă | |
dbsyncer-common | 2 ani în urmă | |
dbsyncer-connector | 2 ani în urmă | |
dbsyncer-listener | 2 ani în urmă | |
dbsyncer-manager | 2 ani în urmă | |
dbsyncer-monitor | 2 ani în urmă | |
dbsyncer-parser | 2 ani în urmă | |
dbsyncer-plugin | 2 ani în urmă | |
dbsyncer-storage | 2 ani în urmă | |
dbsyncer-web | 2 ani în urmă | |
.gitignore | 4 ani în urmă | |
LICENSE | 5 ani în urmă | |
README.md | 2 ani în urmă | |
build.cmd | 2 ani în urmă | |
build.sh | 2 ani în urmă | |
pom.xml | 2 ani în urmă | |
version.cmd | 2 ani în urmă |
DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。
特点
- 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系
- 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志
- 开发插件,自定义转化同步逻辑
项目地址
连接器 | 数据源 | 目标源 | 支持版本(包含以下) |
---|---|---|---|
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 |
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;
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='你的账号';
- 启动 代理 和 数据库 服务
- 准备测试账号,test
- 分配sysadmin角色
- 分配指定数据库权限
通过复制流技术监听增量事件,基于内置插件pgoutput、test_decoding实现解析wal日志
1、修改postgresql.conf文件,重启服务
wal_level=logical
2、授予账号权限LOGIN和REPLICATION
建议MySQL、SqlServer、PostgreSQL都使用日志
假设源表数据格式
先确保环境已安装JDK和Maven
$ git clone https://gitee.com/ghi/dbsyncer.git $ cd dbsyncer $ chmod u+x build.sh $ ./build.sh
类型 | 耗时 | 数据量 | 机器配置 |
---|---|---|---|
MySQL全量同步 | 202s | 1000w | MacBook Pro 2.4 GHz 四核Intel Core i5 16 GB 2133 MHz LPDDR3 |