Navicat 不记录增量同步的行级变更日志,其 Data Synchronization 仅执行一次性比对与操作,预览结果不持久;可靠追溯需依赖 MySQL general_log 或业务时间字段查询,历史日志(Ctrl+H)仅记录手动执行的SQL,不含中间逻辑或行级详情。
Navicat 本身不记录“增量同步”的历史变更日志
navicat 的 data synchronization 工具只做一次性比对与执行,它不会自动持久化“这次同步了哪些新增行”“哪几条被更新了”这类细粒度变更记录。你看到的预览窗口(比如显示“将插入 12 行”)是运行时临时计算结果,关闭后即消失,也没有内置日志表或归档机制来保存这些操作痕迹。
真正能查到“谁在什么时候新增/改了什么”的两种可靠路径
要回溯增量同步行为,得靠数据库自身能力,不是 Navicat 的功能:
- 开启 MySQL 的
general_log:它会记录所有客户端(包括 Navicat)发来的每一条 SQL,含INSERT、UPDATE等语句及时间戳。但注意:set GLOBAL general_log = 1是全局开关,影响性能,用完务必关掉(set GLOBAL general_log = 0) - 依赖业务字段 + 手动查:如果你的表有
created_at或updated_at字段,且增量同步逻辑基于该字段(如WHERE created_at > '2026-03-10'),那直接查目标库对应时间范围的数据即可定位新增记录——这不需要 Navicat 日志,只要 SQL 能跑通
Navicat 历史日志(Ctrl+H)能看什么、不能看什么
Navicat 的 历史日志(快捷键 Ctrl+H 或菜单 工具 → 历史日志)只记录你在 Navicat 界面里手动执行过的 SQL,比如你点开查询窗口手敲的 INSERT INTO ...,或者同步向导生成并执行的那几条语句。但它不会记录:
- 同步过程中 Navicat 内部生成的中间 SQL(比如它怎么拼接 WHERE 条件)
- 数据行级变更明细(例如“第 5 行 product_name 从 A 改成了 B”)
- 其他客户端(如命令行、Python 脚本)做的变更
想长期追踪增量变更?得换思路建机制
如果这是生产环境的刚需,别指望 Navicat 自带功能扛住。可行做法是:
- 在目标库加触发器(
TRIGGER),把每次INSERT/UPDATE的主键、操作类型、时间写入一张sync_audit_log表 - 用 MySQL 的
binlog配合mysqlbinlog工具解析,它天然记录所有 DML 变更,但需要ROW格式且权限支持 - 在同步前用 Navicat 导出源表的
SELECT * FROM t WHERE created_at > ?结果存为 CSV 备份,作为人工可验证的“本次增量快照”
Navicat 是个操作界面,不是审计系统。它帮你点几下完成同步,但留下证据链这件事,得你自己设计落点。

















