QUICK START

快速开始

一分钟上手,零门槛配置 —— 单个 jar 启动,不需要任何外部组件。文本教程 + 视频教程

方式一:直接下载 jar(推荐)

v1.2.1 起,MySQL、MariaDB、Oracle、SQL Server、DB2、PostgreSQL、openGauss、达梦、人大金仓、OceanBase、瀚高、海量、崖山、H2 共十四种驱动随包内置(TiDB 兼容 MySQL 协议、复用 MySQL 驱动),下载后 java -jar 就能跑 —— 不需要源码、不需要 Maven,也不用手动往服务器放驱动 jar (仅 GBase、神通 Oscar 与自定义数据库需要自备厂商驱动)。

bash
java -jar jync.jar

方式二:自行构建(git clone + Maven)

环境要求

JDK 17 或以上 · 内存 ≥ 512MB · 端口 8080 · Maven 3.6+(仅方式二自行构建时需要)

构建

bash
git clone https://github.com/vfaner/jync.git
cd jync
mvn clean package -DskipTests

产物:target/jync.jar(可执行 fat jar)

启动

bash
java -jar target/jync.jar

访问 http://localhost:8080 即可。

首次启动会自动创建 ./data(元数据)、./logs(运行日志)、./snapshots(快照)目录。

生产配置(重要)

在 jar 同级目录创建 application.yml:

yaml
server:
  port: 8080

sync:
  poll-interval: 2000              # 轮询间隔(毫秒)
  batch-size: 500
  fetch-size: 1000
  safety-lag-ms: 1000
  lock-ttl-ms: 300000
  crypto-password: 请改成你自己的强口令    # ← 必须修改
  crypto-salt: 请改成你自己的16位十六进制盐  # ← 必须修改
🔐 安全提示:crypto-password 与 crypto-salt 用于加密存储的数据库连接密码,发行包带有默认值,生产环境必须修改。

后台常驻

方式 A:systemd(推荐)

ini
[Unit]
Description=Jync Database Sync
After=network.target

[Service]
Type=simple
User=jync
WorkingDirectory=/opt/jync
ExecStart=/usr/bin/java -Xms512m -Xmx1g -jar /opt/jync/jync.jar \
  --spring.config.location=file:/opt/jync/application.yml
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
sudo systemctl enable --now jync
sudo systemctl status jync

方式 B:nohup(快速验证)

bash
cd /opt/jync
nohup java -jar jync.jar > /dev/null 2>&1 &

使用流程

① 数据库连接 → 新建连接时先选用途「源 / 目标」,分别建好源库和目标库连接 → 点击「测试连接」确认可用
② 项目 → 新建项目 → 选择源库与目标库(下拉只列出对应用途的连接)
③ 进入项目详情 → 勾选要同步的表/视图/存储过程 → 配置同步选项 → 保存
④ 点击「立即同步」验证一次(运行中再次点击会在本轮结束后自动补跑一轮),或点击「启动同步」开始持续轮询
⑤ 在「变更日志」查看每次同步的明细

VIDEO TUTORIAL

14 分钟跟着视频走一遍

不想读文档就跟着视频走一遍,从下载到第一条链路跑通 · 约 14 分钟 在 B 站观看 ↗

📺 哔哩哔哩 · BV1iHYJ6vEEd bilibili.com ↗
Jync 视频教程封面:看板界面
🎬 上面这支约 14 分钟的完整演示,和上面的文字是同一套流程。 第一次用建议先看视频跟着点一遍;想查具体命令、参数说明,往下翻文字版和配置项表。 遇到没讲到的问题,欢迎到 Issue 反馈。
CONFIGURATION

配置项

application.yml 中的 sync.*

键默认说明
poll-interval2000轮询间隔(毫秒)
snapshot-dir./snapshots元数据快照目录
batch-size500每个 JDBC 批次行数
fetch-size1000源库结果集读取批量
max-retries3连续失败多少次后标记任务为 ERROR
safety-lag-ms1000时间戳水位线回退量,避免晚提交的事务被跳过
row-count-audit-interval-ms60000行数审计间隔(毫秒)
full-compare-max-rows20000全表比对的行数上限
lock-ttl-ms300000同步锁租约时长(毫秒)
crypto-password(默认值)密码加密密钥,生产环境必须修改
crypto-salt(默认值)加密盐值(十六进制),生产环境必须修改
ai.enabledtrue是否允许配置 AI 辅助转换。置 false 则菜单与接口一并下线
app.update-check.enabledtrue「系统信息」页是否检查 GitHub 最新版本。检查在后台进行、不拖慢页面;纯内网可置 false 关闭,本地版本号与更新说明照常显示

连接密码使用 Spring Security Crypto 的 AES-256 加密后存储, 带 enc: 前缀标记以避免重复加密,并兼容加密启用前写入的明文。

AUTH

登录与权限

所有页面和接口都必须登录后才能访问,没有任何匿名可达的入口

用户名角色初始密码权限
admin管理员123456全部操作
view访客123456只读
⚠️ 请在第一次登录后立刻改掉这两个密码。 jar 是公开可下载的,初始密码不是秘密。仍在使用初始密码的账号,登录后页面顶部会一直显示一条黄色警告横幅。

权限按 HTTP 方法判定 设计要点

权限不是按页面枚举的,而是按 HTTP 方法判定:本工具所有的写操作都是 POST, 没有任何 GET 会改动状态,所以规则只有一条 —— POST 一律要求管理员。 这样以后新增接口不会漏配。

管理员

新建/编辑/删除数据库连接、项目、AI 供应商;勾选同步对象、启停同步、立即同步、重置进度;起草和保存存储过程转换、清理变更日志。

访客

能看到全部页面和全部数据(看板、连接列表、项目详情的勾选状态、变更日志都能看、能选、能复制),但界面上不会出现任何写操作按钮,直接构造请求打接口也会被拒。

🔑 忘记密码无法找回。登录密码用 BCrypt 单向哈希存储,和数据库配置里那些必须能还原出明文交给驱动的凭据不同。 真忘了就直接删掉 app_user 表里对应那行,重启后会重新种回初始密码。
UPGRADE

升级

下载新版 jar 替换即可,元数据库使用 ddl-auto: update,表结构会自动演进

bash
sudo systemctl stop jync
cp jync.jar /opt/jync/jync.jar   # 自行构建则是 cp target/jync.jar
sudo systemctl start jync
升级前请备份 ./data 目录。 停机期间源库产生的变更会在重启后由游标机制自动补齐,不会丢失。 升到 v1.2.0 时会自动给连接记录加一列保存用途,启动日志出现 Backfilled source/target role... 即源 / 目标归类完成,详见 更新日志 v1.2.0。