文章摘要
单 JAR 开箱即用 —— 不要 Kafka,不要 ZooKeeper,不要一行代码。 项目地址:GitHub | Gitee 镜像 | 14 分钟演示视频 下载地址:GitHub Releases | Gitee Releases | 详细教程
开发背景
项目介绍
- 结构 + 数据一起同步:按目标库方言自动建表、索引、视图、存储过程,源库 DDL 变更后差异自动传播;
- 持续增量:默认 2 秒轮询,也可用 Cron 编排;进程重启从游标继续,停机期间的变更自动补齐;
- 不丢不重:闭区间增量窗口 + 提交后才推进游标 + 按主键幂等 upsert,崩溃重放也收敛到同一状态;
- 看得见的同步:看板展示项目数、连接数、24 小时变更量;变更日志记录每次同步的对象、行数、耗时与错误详情;
- 国产库一等公民:达梦、金仓、OceanBase、TiDB、瀚高、海量、崖山、GBase、神通、OpenGauss 均有专门方言实现;
- 内网离线可用:前端资源全内置,运行时零外部请求;中英文界面、昼夜主题;
- AI 辅助(可选):存储过程方言转换可由模型起草候选,人工审阅后才落库,同步链路永不调用 AI。
与同类工具对比的优势[td]
| 维度 | Jync | Debezium + Kafka | Canal | DataX / Navicat 数据传输 |
| 部署形态 | 单个 jar,零外部依赖 | Kafka + Connect + ZK | Canal Server | 客户端脚本 / 桌面端 |
| 持续增量同步 | ✅ 轮询 / Cron | ✅ 但需自写消费代码 | ✅ 仅 MySQL | ❌ 一次性搬运 |
| 结构(DDL)同步 | ✅ 自动建表/索引/视图/过程 | ⚠️ 落库需自写 | ⚠️ 仅事件 | ❌ 需预建表 |
| 国产数据库 | ✅ 10 种预设方言 | ❌ 基本不支持 | ❌ | ⚠️ 部分 |
| 源库侵入性 | 只读账号,零侵入 | 需开 binlog/wal + 复制权限 | 需开 binlog | 只读(但仅一次性) |
| 上手成本 | 分钟级 | 高 | 中高 | 低(但不解决持续同步) |
技术栈
- Java 17 + Spring Boot 2.7 单体架构,Spring Data JPA;
- Thymeleaf 服务端渲染 + 原生 JS + 手写 CSS(设计令牌),无前端框架、无构建步骤;
- Quartz 调度 + 三层锁(调度注解 / JVM 锁 / 数据库锁行租约)保证单实例执行;
- H2 内嵌元数据库:连接、项目、游标、锁、变更日志全部自管理,无需另装数据库;
- 14 个 JDBC 驱动随包内置,GBase / 神通等外部驱动运行时动态加载、ClassLoader 隔离;
- 410 个单元测试 + 20 项端到端断言兜底。
运行方法git clone https://github.com/vfaner/jync.git # 国内:git clone https://gitee.com/super_rgh/jync.gitcd jyncmvn clean package -DskipTestsjava -jar target/jync.jar
效果截图