DATABASES

支持的数据库

当前支持 34 种预设数据库类型,其中二十五种驱动随包内置。按「实时同步」「ETL 任务」与「Redis 缓存投影」三条链路组织:左侧选数据源,中间是三张引擎卡,右侧看能落到哪些目标;卡片上的标签标明它可参与的模式。最下方的专属迁移是独立的整对象复制链路,不走 JDBC,也不占用这条能力矩阵

01数据源SOURCES
事务型数据库 实时同步ETL
MySQL MariaDB Oracle SQL Server DB2 PostgreSQL OpenGauss 达梦 DM 人大金仓 KingBase OceanBase TiDB 华为 GaussDB 中兴 GoldenDB 腾讯 TDSQL 阿里 PolarDB 万里 GreatDB 银联 UPDRDB 星环 KunDB 平安 RASESQL 东方金信 SeaboxSQL 瀚高 HighGo 海量 Vastbase 崖山 YashanDB 南大通用 GBase 神通 Oscar
分析型数据库 实时同步(轮询)ETL
SAP HANA
分析型 / 搜索型引擎 仅作实时源ETL
Apache Doris ClickHouse Apache Hive Apache Impala Elasticsearch MongoDB(Atlas SQL)
文档 / 内嵌 仅 ETL
MongoDB 原生驱动 H2(内嵌元数据库)
02同步引擎ENGINES
实时同步 全量 + 增量轮询 / 调度 + 日志 CDC

按主键或时间窗做增量;开启日志 CDC 后直接解析数据库日志。MySQL 兼容家族、Oracle、PostgreSQL 方言家族、SQL Server、达梦、崖山六类源可切 CDC,位点续传、结构同步与行数审计都在同一条链路里。

POLLING · FULL_COMPARE · CDC
ETL 任务 Cron 调度 · 批次取数 · 自由 SQL

按 Cron 或手动触发,用自由 SQL 把查询结果写入目标表;支持批次、断点续传与前置 / 后置 SQL,分析型引擎与 MongoDB 原生驱动也能取数。

CRON · BATCH · RESUME
缓存目标 Redis 缓存投影

日志 CDC 的行级变化直接投影进 Redis:键为前缀 + 表名 + 主键,值可选 JSON 或 HASH,支持 TTL、排除列与按前缀重建,不走 JDBC。

REDIS · JSON / HASH · TTL
03目标库TARGETS
事务型数据库 实时同步ETL
MySQL MariaDB Oracle SQL Server DB2 PostgreSQL OpenGauss 达梦 DM 人大金仓 KingBase OceanBase TiDB 华为 GaussDB 中兴 GoldenDB 腾讯 TDSQL 阿里 PolarDB 万里 GreatDB 银联 UPDRDB 星环 KunDB 平安 RASESQL 东方金信 SeaboxSQL 瀚高 HighGo 海量 Vastbase 崖山 YashanDB 南大通用 GBase 神通 Oscar
分析型数据库 实时同步(轮询)ETL
SAP HANA
缓存目标 仅作目标不走 JDBC
Redis

只作实时同步的目标,不占数据库类型:仅日志 CDC 源可用,结构 / 索引 / 视图 / 存储过程同步强制关闭,无主键表不投影。

仅作源,不作目标 只读 / 仅源

实时同步中,Doris、ClickHouse、Hive、Impala、Elasticsearch、MongoDB(Atlas SQL)只作源、按无主键读取,不会出现在目标下拉。ETL 中 Doris、ClickHouse、Hive、Impala 可作写入目标;Elasticsearch 与 MongoDB(Atlas SQL)只读,MongoDB 原生驱动只作源,H2 主要作为内置元数据库。

04专属迁移DEDICATED MIGRATION 不走 JDBC 独立连接 · 整对象一次性复制 · 手动 / cron · 可取消
Elasticsearch / OpenSearch 搜索专属连接索引发现 · settings / mappings / alias Easysearch
MongoDB MongoDB 专属连接集合选项 · 索引 · 文档原样写入并保留 _id MongoDB
MongoDB 采样推断 + 建表_id 主键 · 批量 INSERT / ON CONFLICT upsert KingbaseES

一次性复制运行那一刻的数据,不是持续同步;预检通过后手动运行或按 cron 触发,运行中可取消并保留每次运行历史。凭据只存加密字段,MongoDB URI 与 Kingbase JDBC URL 禁止写密码,连接测试与运行日志也不输出 URI。边界见 已知限制。

MySQL、MariaDB、Oracle、SQL Server、DB2、PostgreSQL、openGauss、达梦、人大金仓、OceanBase、TiDB、 GoldenDB、TDSQL、PolarDB、GreatDB、UPDRDB、KunDB、RASESQL、SeaboxSQL、瀚高、海量、崖山、Doris、MongoDB 原生驱动、H2 共二十五种驱动随包内置(GoldenDB、TDSQL、PolarDB、GreatDB、UPDRDB、KunDB、Doris 复用 MySQL 驱动, RASESQL、SeaboxSQL 复用 PostgreSQL 驱动,MongoDB 原生驱动随包内置),开箱即用;华为 GaussDB、GBase、神通 Oscar、 SAP HANA、ClickHouse、Hive、Impala、Elasticsearch、MongoDB(Atlas SQL) 以及自定义数据库需提供厂商驱动 jar 路径(也可以填写存放 jar 的目录,驱动类可覆盖), 运行时通过独立 URLClassLoader + DriverShim 动态加载注册, 不污染应用类加载器,也不会与内置驱动发生版本冲突。
容易混淆的两组:华为 GaussDB 与 openGauss 是两个产品 —— 前者驱动类为 com.huawei.gaussdb.jdbc.Driver、URL 前缀 jdbc:gaussdb://,方言归入 PostgreSQL 系; 后者使用 org.opengauss.Driver。TDSQL、PolarDB 的预置对应 MySQL 版; PolarDB 的 PostgreSQL 版直接选 PostgreSQL,Oracle 兼容版请用自定义类型。
IDEMPOTENT WRITE

各库 upsert 语法对照

每一行都通过基于主键的 upsert 写入,重复执行收敛到同一状态 —— 这把「至少一次投递」变成了「结果上的恰好一次」

数据库语句
MySQL 系(MySQL / MariaDB / TiDB / OceanBase / GoldenDB / TDSQL / PolarDB / GreatDB / UPDRDB / KunDB / GBase / H2)INSERT ... ON DUPLICATE KEY UPDATE
PostgreSQL 系(PostgreSQL / openGauss / 华为 GaussDB / 金仓 / 瀚高 / 海量 / 神通 / RASESQL / SeaboxSQL)INSERT ... ON CONFLICT (pk) DO UPDATE
Oracle 系(Oracle / 达梦 DM / 崖山 YashanDB)MERGE INTO ... USING (SELECT ? FROM DUAL)
SQL ServerMERGE ... WITH (HOLDLOCK)
DB2MERGE INTO ... USING (VALUES (?))
通用 / 自定义UPDATE-then-INSERT(无原生 upsert 时的兜底,含唯一冲突重试)
无主键表:无法识别既有行,因此无法保证幂等,重放可能产生重复行。工具会明确告警,建议为表添加主键。
分析型引擎:SAP HANA 支持结构同步与轮询式数据同步,写入用 UPSERT … WITH PRIMARY KEY; Doris、ClickHouse、Hive、Impala、Elasticsearch、MongoDB(Atlas SQL)只能作为实时同步的源(轮询 / 全表比对), 不会出现在目标下拉中,且一律按无主键读取 —— 增量只识别新增,需要收敛时用全表比对。它们同样可以继续用于 ETL; Elasticsearch 与 MongoDB 只读。MongoDB 另提供原生驱动路径,填集合名与可选的 Extended JSON 过滤条件即可取数。

预置的 OceanBase、PolarDB 对应 MySQL 模式,Oracle 模式请选「自定义」类型并填写 Oracle 系 JDBC URL;PolarDB 的 Oracle 兼容版是 PostgreSQL 协议产品,选自定义类型、方言家族选 PostgreSQL 并配 com.aliyun.polardb2.Driver;崖山 YashanDB 的 URL 前缀为 jdbc:yasdb:,选择类型后自动生成,无需记忆。

DRIVER LOADING

驱动动态加载机制

二十五种常用驱动随包内置,个别商业 / 自定义驱动仍按需动态加载,互不污染应用类加载器

内置驱动(二十五种)

MySQL、MariaDB、Oracle、SQL Server、DB2、PostgreSQL、openGauss、达梦 DM、人大金仓 KingBase、OceanBase、TiDB、GoldenDB、TDSQL、PolarDB、GreatDB、UPDRDB、KunDB、RASESQL、SeaboxSQL、瀚高 HighGo、海量 Vastbase、崖山 YashanDB、Apache Doris、MongoDB 原生驱动、H2。 共二十五种随发行包内置,开箱即用,新建连接时不再需要手动上传 jar。 TiDB、GoldenDB、TDSQL、PolarDB、GreatDB、UPDRDB、KunDB、Doris 兼容 MySQL 协议、复用 MySQL 驱动; RASESQL、SeaboxSQL 复用 PostgreSQL 驱动,MongoDB 原生驱动直接连接任意 mongod,选对应类型即可。

自备驱动(九种数据库)

仅 华为 GaussDB、GBase、神通 Oscar、SAP HANA、ClickHouse、Hive、Impala、Elasticsearch、MongoDB(Atlas SQL)与自定义数据库需要自备 jar:在连接配置中填写驱动 jar 路径或所在目录,驱动类留空即使用预设值、也可以覆盖,工具会用独立 URLClassLoader 加载,并通过 DriverShim 注册到 DriverManager。

把驱动 jar 放到服务器上

bash
mkdir -p /opt/jync/drivers
cp gaussdbjdbc.jar gbase-8.3.81.53.jar oscarJDBC.jar /opt/jync/drivers/   # GaussDB / GBase / 神通 Oscar
cp ngdbc.jar clickhouse-jdbc-all.jar hive-jdbc-standalone.jar impalaJDBC4.jar /opt/jync/drivers/   # SAP HANA / ClickHouse / Hive / Impala
cp elasticsearch-jdbc.jar mongodb-jdbc.jar /opt/jync/drivers/   # Elasticsearch / MongoDB Atlas SQL

然后在「数据库连接」页面新建连接时,填写驱动 jar 路径(如 /opt/jync/drivers/gbase-8.3.81.53.jar,也可以填目录) 与驱动类名(选择预设类型时会自动填好,留空即用预设值)。点击「测试连接」验证加载成功即可保存。

📄 许可提示:二十五种内置驱动按各自原厂许可证随包再分发,版本与许可详见仓库 THIRD_PARTY_LICENSES.md;华为 GaussDB、GBase、神通 Oscar、SAP HANA、ClickHouse、Hive、Impala、Elasticsearch、MongoDB(Atlas SQL)等第三方驱动不随本项目分发, 请自行从厂商处获取并确认使用授权。
XINCHUANG

为信创迁移而生

Oracle / SQL Server → 国产库的替换场景是本工具的主战场

🇨🇳 国产数据库是一等选项,不是「也许能连上」

达梦、人大金仓、OceanBase、TiDB、OpenGauss、华为 GaussDB、中兴 GoldenDB、腾讯 TDSQL、阿里 PolarDB、 万里 GreatDB、银联 UPDRDB、星环 KunDB、平安 RASESQL、东方金信 SeaboxSQL、瀚高、海量、崖山、南大通用、神通 十九种国产与信创库都是预设选项:Oracle 系有专门的方言与元数据读取器实现,MySQL / PostgreSQL 协议产品复用对应家族 已验证的 DDL、upsert 与元数据读取链路,而不是靠通用 JDBC 蒙。已处理的差异包括:

  • upsert 写法 —— MERGE INTO ... FROM DUAL 这类 Oracle 系特有语法
  • 类型上限 —— Oracle VARCHAR2 4000、SQL Server 4000、DB2 DECIMAL 31;无精度 NUMBER 不产生 DECIMAL(0,0)
  • 精度裁剪 —— 已声明的精度被裁剪到上限而不丢失小数位
  • 函数名差异 —— 如 SUBSTR → SUBSTRING,且不会二次命中自身
  • 标识符引号规则 —— 各产品的引号字符与大小写敏感性不同
  • 不可移植的默认值 —— 被丢弃而非生成非法 DDL

这恰恰是 Debezium、Canal 生态设计重心未覆盖的场景 —— 它们对国产数据库的官方支持相对有限。