数据库同步中间件

AE86 fa6c5ffdb3 update README.md. 1 year ago
dbsyncer-biz 63354009b4 发布稳定版本 1 year ago
dbsyncer-cache 63354009b4 发布稳定版本 1 year ago
dbsyncer-cluster 63354009b4 发布稳定版本 1 year ago
dbsyncer-common 63354009b4 发布稳定版本 1 year ago
dbsyncer-connector 63354009b4 发布稳定版本 1 year ago
dbsyncer-listener 63354009b4 发布稳定版本 1 year ago
dbsyncer-manager 63354009b4 发布稳定版本 1 year ago
dbsyncer-monitor 63354009b4 发布稳定版本 1 year ago
dbsyncer-parser 63354009b4 发布稳定版本 1 year ago
dbsyncer-plugin 63354009b4 发布稳定版本 1 year ago
dbsyncer-storage 63354009b4 发布稳定版本 1 year ago
dbsyncer-web 63354009b4 发布稳定版本 1 year ago
.gitignore 1cb24567f9 add plugins 4 years ago
LICENSE c8bef651e7 init 5 years ago
README.md fa6c5ffdb3 update README.md. 1 year ago
build.cmd 1dd6ce323c 修改编译脚本 2 years ago
build.sh 230967d282 upgrade version 2 years ago
pom.xml 63354009b4 发布稳定版本 1 year ago
version.cmd 63354009b4 发布稳定版本 1 year ago

README.md

介绍

logo

DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

特点

  • 组合驱动,自定义库同步到库组合,关系型数据库与非关系型之间组合,任意搭配表同步映射关系
  • 实时监控,驱动全量或增量实时同步运行状态、结果、同步日志和系统日志
  • 开发插件,自定义转化同步逻辑

项目地址

star fork license

🌈应用场景

连接器 数据源 目标源 支持版本(包含以下)
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

📦安装配置

步骤

  1. 安装JDK 1.8(省略详细)
  2. 下载安装包DBSyncer-1.0.0-RC.zip(也可手动编译)
  3. 解压安装包,Window执行bin/startup.bat,Linux执行bin/startup.sh
  4. 打开浏览器访问:http://127.0.0.1:18686
  5. 账号和密码: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='你的账号';
    

    DCN账号

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

输入图片说明

  1. 准备测试账号,test

输入图片说明

  1. 分配sysadmin角色

输入图片说明

  1. 分配指定数据库权限

输入图片说明

PostgreSQL
  • 通过复制流技术监听增量事件,基于内置插件pgoutput、test_decoding实现解析wal日志

    1、修改postgresql.conf文件,重启服务

    wal_level=logical
    

    2、授予账号权限LOGIN和REPLICATION

File
ES
  • 定时获取增量数据。 > 账号具有访问权限。
日志

建议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

💕了解更多

  • 使用说明:博客地址(小提示:现在需要先登录,才能查看完整的教程信息,包含截图等😂)
  • QQ群: 875519623或点击右侧按钮数据同步dbsyncer

🤝贡献支持

  • 如有比较着急的需求或建议(想支持某版本的中间件,最好能描述清楚你的原始需求,作者会帮你提供一些建议方案),欢迎大家【新建issuses】!
  • DBSyncer研发团队目标:取之社区,用于社区。为了能让项目得到可持续发展,我们期望获得更多的支持者!
  • 内推项目 如您觉得项目不错,可推荐到公司,建立长期稳定的商业合作,提供更专业的技术服务。(入群联系群主)
  • 参与开发 项目成员来自于不同公司,汇聚了不同专业的大佬,相信一定能找到您比较感兴趣的方向,欢迎加入团队!(入群联系群主)
  • 扫赞赏码【捐赠者名单】 款项主要用于项目研发和推广,会定期通过线上活动,与大家一起讨论问题,随机回馈粉丝们一些礼物。