navicat 16跨服务器数据同步需使用“数据传输”功能,核心前提是源库与目标库连接可达且权限完备(源库需select,目标库需create/insert/drop等),并正确配置网络、字符集、字段映射及自定义查询实现增量同步,定时任务须依赖windows任务计划程序。
navicat 16 跨服务器数据同步,核心就是用 数据传输 功能,而不是“数据同步”(那个是单机双库场景)。只要源库和目标库的连接能同时在 navicat 里连上,跨服务器完全没问题——关键不是物理距离,而是网络可达性和账号权限。
确认两个连接都能正常连通且权限到位
这是最容易卡住的第一步。很多“同步失败”其实根本没走到传输逻辑,卡在连接阶段。
-
SELECT权限必须在源库存在,否则连表结构都读不出来; - 目标库至少要有
CREATE、INSERT、DROP(如果勾选了“删除不存在的表”)权限; - 如果目标库是空库,建议提前手动
CREATE DATABASE并指定CHARACTER SET和COLLATE,避免 Navicat 自动建库时用默认值导致中文乱码; - 检查防火墙:源服务器和目标服务器的数据库端口(如 MySQL 默认
3306)都要对运行 Navicat 的本机 IP 开放; - 若走 SSH 隧道,确保隧道配置里的“本地端口转发”已启用,且 Navicat 连接设置中“连接方式”选的是“SSH”而非“常规”。
在“数据传输”里正确设置源与目标方向
Navicat 不会自动推断流向,“A → B”必须人工指定清楚,选反了就真把生产库清空到测试库了。
- 打开
工具 → 数据传输,左侧“源”选你要读取数据的服务器连接(比如线上 MySQL),右侧“目标”选你要写入的服务器连接(比如测试环境); - 下方“源数据库”和“目标数据库”下拉框是独立选择的,别默认点同一个名字——比如源是
prod_order,目标可以是test_order_v2; - 点击“高级”可展开更多选项:
遇到错误时继续建议勾选(尤其跨版本或含视图/存储过程时),但要配合日志排查;仅传输数据或结构和数据按需切换,别误选“仅结构”当数据同步用; - 字段映射默认自动匹配同名字段,但如果源表有
created_at DATETIME、目标表是ctime TIMESTAMP,得手动点击“调整字段映射”改类型或加转换表达式,否则报类型不兼容。
增量同步不能只靠界面按钮,得靠自定义查询
Navicat 16 的 数据传输 界面里没有“增量同步”开关,所谓“增量”是通过 SQL 查询条件模拟的。
- 在“表映射”步骤,对每张表点击“编辑”,进入“自定义查询”页签;
- 输入类似
SELECT * FROM orders WHERE updated_at > '2026-04-20 00:00:00'的语句,把时间范围写死或用变量(注意:Navicat 不支持运行时变量,只能手动更新或用外部脚本替换); - 目标表必须已有主键或唯一索引,否则“追加数据”模式下可能重复插入;
- 如果要实现真正的 upsert(存在则更新,不存在则插入),Navicat 本身不生成
INSERT ... ON DUPLICATE KEY UPDATE,得在“部署前编辑脚本”里手动补全,或者改用目标库原生的批量导入工具。
定时执行必须依赖 Windows 任务计划,Navicat 内置调度器已弃用
Navicat 16 的 自动运行 → 新建批处理作业 只能保存配置,真正触发还得靠系统级任务。很多人卡在这一步,以为点完“设置计划任务”就万事大吉。
- 先在
工具 → 数据传输中完成配置,点击“保存配置文件”,记下路径(通常是C:\Users\{user}\Documents\Navicat\MySQL\profiles\下的.ntf文件); - 打开 Windows
任务计划程序,新建基本任务,操作设为“启动程序”,程序填navicat.exe的绝对路径(如"C:\Program Files\PremiumSoft\Navicat Premium 16\navicat.exe"),参数填--runprofile "C:\path\to\your.nsf"(注意引号和空格); - 右键该任务 → 属性 → 勾选“使用最高权限运行”,否则 Navicat 启动后可能因权限不足无法读取配置或写日志;
- 测试时先设成“5 分钟后运行一次”,等状态变成“上一次运行结果:操作成功完成”再调成每日周期;
- 日志默认输出到
信息日志窗口,但定时任务后台跑时看不到——务必在“选项”里勾选“将日志保存到文件”,并指定路径,否则出错只能靠 Windows 事件查看器硬翻。
跨服务器同步真正麻烦的从来不是按钮怎么点,而是网络链路是否稳定、字符集是否一致、时间字段精度是否对齐、以及目标库有没有被其他进程锁表。每次上线前,先用小表跑一次完整流程,比对着文档猛点强得多。











