navicat 16无真正断点续传,需手动实现:启用高级模式→勾选“自定义记录集”→用主键切片生成独立数据集,中断后手动从失败序号继续;或在自定义查询中加where条件过滤已同步数据。
navicat 16 并没有真正意义上的断点续传能力——所谓“改进”只是让人工续传更可控、更少出错,不是自动跳过已同步数据。
“自定义记录集”是唯一可依赖的分片续传机制
Navicat 16 的数据同步(Data Sync)仍基于全表 SELECT + 主键比对,不监听 binlog/WAL,因此无法记录同步位点。但“高级模式”中新增的「自定义记录集」功能,允许你把一张大表按主键范围切分成多个独立数据集(如 dataset_001、dataset_002),每个集对应一段 ID 区间。
- 中断后只需手动勾选从失败序号开始的 dataset,前面成功的不会重跑也不会被清空
- 必须提前启用:右键表 → 高级模式 → 勾选「自定义记录集」→ 点击「记录集生成器」按
id或created_at切片 - 若没开这个,中断后重跑默认全量覆盖或重复插入,
ERROR 1062几乎必然出现
WHERE 条件过滤仍是主力续传手段
Navicat 16 没有增量同步开关,所有“只同步新数据”的逻辑都得靠手动加 WHERE 条件实现。这在跨库迁移或高频同步时最常用。
- 在「表映射」→「编辑」→「自定义查询」里写
SELECT * FROM orders WHERE id > 123456这类语句 - 字段必须存在且索引有效;目标表需已有对应数据,否则条件会漏掉首段记录
- 时间字段慎用:如果源库
updated_at是ON UPDATE CURRENT_TIMESTAMP,它可能被业务频繁更新,导致重复同步
“保持连接间隔”和“自动重连”不能解决续传问题
这两个选项常被误认为能“自动续传”,实际它们只管网络层连通性,跟数据同步进度完全无关。
-
保持连接间隔设为 60 秒,是防防火墙/NAT 中间设备主动断链;不设它,MySQL 的wait_timeout默认 8 小时,但云数据库(如阿里云 RDS)常设为 300 秒,极易断 -
自动重连开启后,断链会重连成功,但同步任务停在中断那一步,不会自动继续——你必须手动点“继续” - 两者都开 ≠ 断点续传;只是让“人工续传”过程更顺滑,不至于每次都要重新点开向导
真正容易被忽略的是:Navicat 同步失败后,日志里最后一条成功 SQL 往往藏在滚动窗口底部,不导出完整日志(右键 → 导出日志)根本看不到;而靠肉眼扫界面输出,90% 的人会误判断点位置,结果续传时漏数据或重复写入。











