Repository navigation
Jync v1.7.6
Jync v1.7.6
首次全量同步大幅提速;新增只读数据预览、项目克隆与列清洗规则;修复 Oracle 11g / GBK 与若干同步正确性问题。
性能
- 全量分块并行:默认 2 路并行(上限 8,按连接池自动收敛),可按项目覆盖;仅单列整数主键表启用。
- 断点续跑:keyset 分页 + 分块检查点,中断、重启后从已完成的分块继续,检查点绑定区间边界,并行度或数据边界变化时自动作废重来。
- 更大的全量批次:全量专用
full-load-batch-size/full-load-fetch-size默认 2000;增量与 CDC 回放不受影响。 - Oracle 空目标 INSERT 优先:首次全量写入空表改用 INSERT,500k 行基准约为 MERGE 的 2.3 倍;非空目标仍用 MERGE。
- 新建表索引后建:非唯一二级索引等到首次全量提交后再创建,500k 行 Oracle 基准端到端快约 42%;主键与唯一索引仍立即创建,纯结构同步行为不变。
- MySQL / TiDB 批量写入:连接串开启
rewriteBatchedStatements,executeBatch由逐条往返变为单包发送,首次全量不再被网络延迟封顶。 - 吞吐日志:每个分块输出行/秒、读/写/提交三段耗时占比与批量形态;
commit%偏高说明目标库提交慢(redo、Data Guard 等),加大full-load-batch-size减少提交次数即可。 - 相关配置:
full-load-parallelism、full-load-batch-size、full-load-fetch-size、oracle-initial-load-insert-first、defer-secondary-indexes,老项目按默认值自动生效。
新功能
- 只读数据预览:详情页查看源库或目标表内容,最多 100 行、单元格超 500 字符截断,仅管理员可用,不提供写入、筛选、排序或导出。
- 项目克隆:复制同步设置,不带游标、检查点与 CDC 位点;目标库需重选,「首次加载前截断」强制关闭。
- 列清洗规则:写入前按表按列执行去首尾空白、大小写转换、空白转 NULL、去前后缀、正则替换七种固定操作;轮询与日志 CDC 两条写入路径均生效。
- 全不选即不同步:取消全部表/视图/存储过程即表示该类别不同步,不再回退为全选。
- 空配置禁止启动:无对象,或轮询/全量比对下同步选项全关时,前后端均拒绝启动并说明原因;CDC 不受影响。
- CDC 下隐藏轮询开关:日志 CDC 模式隐藏不参与增量流的五个同步选项并给出说明,已保存的值原样保留。
- 版本更新提示:管理员打开任意页面自动检查一次(GitHub 优先,超时无结果再查 Gitee,都失败则静默),有更高版本时「系统信息」导航项右上角显示黄色提醒圆点;进入系统信息页强制复查,其余页面复用本次会话的结果。
- 下次自动运行:项目详情页显示下一次调度时间与服务器时区;项目未启动时直接提示「未启动(启动后才会按调度运行)」,不用等到时间过了才发现没跑。
- 在线升级体验:下载进度显示百分比与已下载大小(源站不返回文件大小时取响应长度,仍未知则显示不确定态进度条);重启后自动探测服务恢复,弹出「更新成功」提示后自动刷新页面,2 分钟仍未恢复则改为提示手动刷新。
修复
- Oracle 11g LogMiner:按服务端版本读取
V$LOGMNR_CONTENTS,不再引用 11g 不存在的SRC_CON_ID。 - GBK 等字符集:内置
orai18n,修复对象列表为空与字符集转换失败。 - LogMiner 权限探测:补
SELECT ANY TRANSACTION检查并给出授权语句;重复日志按线程号 + 日志序列号判重,修复 ORA-01289。 - 并行全量:停止请求可传播到 worker 并等待其退出;截断或重置进度后不再复用旧分块检查点。
- 分页兼容:DB2 改用
FETCH FIRST;SQL Server 首屏改用TOP,修复 2008/R2 上OFFSET/FETCH语法错误(CDC 仍需 2012+)。 - 列清洗:不再改写分块边界;保存时校验正则与替换串,非法规则当场拒绝。
- 克隆与预览:克隆的项目与同步设置同事务提交;预览仅限管理员,网络失败有明确提示。
- 在线升级:修复 fat jar 运行时把
jar:嵌套类路径误判为「非可执行 jar」、一律提示无法在线升级的问题。 - 表注释与列注释同步:读取 Oracle
ALL_TAB_COMMENTS/ALL_COL_COMMENTS,新建表随 DDL 带上注释;已有表的注释变更通过ALTER TABLE ... COMMENT=与MODIFY COLUMN更新。源端一部分列没有注释属正常情况,不会报错;注释更新失败只记警告,不阻塞数据同步。 - Oracle 宽表同步到 MySQL:业务列上百、总行宽超过 InnoDB 65535 字节限制时,按整表行宽预算把放不下的列瘦身为
LONGTEXT,唯一索引列最后才动,优先保证数据能落库;新增列与修改列沿用同一方案,不再报 1118。瘦身后的 TEXT 列不再携带目标库拒绝的DEFAULT(1101)。 - 自定义 Cron 到点不生效:错过的触发(线程池忙、调度暂停打满宽限期)恢复后补跑一次,不再被静默丢弃;启动与保存时校验 Cron,调度日志记录下次触发时间与时区;每轮定时任务输出 INFO 日志(项目、开始、结束、用时)。程序停机期间错过的触发不补跑,但游标未推进,下一次触发会把停机期间的变更一并同步。
测试
- 1643 个测试:1642 通过,1 个按环境条件跳过;
*IT需 Docker 另跑。
升级
- 替换
jync.jar重启即可,表结构随ddl-auto: update自动演进;升级前备份./data。 - 停机期间的源库变更会在重启后自动补齐。
- 容器部署将镜像 tag 更新为
jync:1.7.6(Docker Compose 与deploy/k8s/清单已同步)。