Navicat的“增量备份”实为伪增量,依赖.psc基准文件、MySQL的ROW格式binlog及完整权限,任一条件缺失即静默降级为全量备份,且界面无提示。
增量备份根本没启用,实际在跑全量
navicat 的「增量备份」不是数据库原生的 binlog 增量,而是基于上次备份文件做差异比对——前提是必须用 navicat 自己生成的 .psc 备份文件作为基准。如果你上次备份是手动导出的 .sql、或用 mysqldump 直接生成的、甚至是从其他工具导入的,navicat 就无法识别为有效基准,自动降级为全量备份,且界面仍显示“增量”字样,毫无提示。
- 确认基准文件:检查上次备份是否为 Navicat 生成的
.psc文件(不是.sql),且未被手动修改或移动位置 - 路径一致性:增量依赖备份路径不变,若你改过「设置位置」或手动挪动了
.psc文件,Navicat 就找不到基准 - 版本限制:Navicat 15 及更早版本不支持跨版本增量衔接;比如用 Navicat 16 生成的
.psc,再用 Navicat 15 执行增量会静默失败
MySQL 没开 binlog 或配置不匹配
Navicat 增量备份真正依赖的是 MySQL 的 binlog(仅限「日志增量」模式,非默认)。但很多人误以为只要点了“增量”就自动生效,其实它需要服务端明确支持:
- 检查是否启用:
SHOW VARIABLES LIKE 'log_bin';返回ON才算开启;若为OFF,增量备份按钮虽可点,但执行时直接报错或跳过 - binlog 格式必须是
ROW:SHOW VARIABLES LIKE 'binlog_format';,MIXED或STATEMENT会导致部分 DML 无法精确捕获,Navicat 日志里会出现Binary logging not enabled in ROW format - 用户权限缺一不可:
REPLICATION CLIENT和REPLICATION SLAVE权限必须授予连接用户,仅SELECT不够
定时任务里增量选项被忽略
Navicat 的批处理作业(自动运行)和手动备份界面的选项不完全同步——你在手动备份窗口勾选了「增量」,不代表定时任务也生效。定时任务里的备份动作是独立配置的,不会继承手动操作的偏好。
- 打开「自动运行」→「批处理作业」→ 右键对应任务 →「编辑」→ 进入「高级」页签
- 必须显式勾选「增量备份」,否则即使源数据库支持、基准存在,任务仍走全量流程
- 注意:某些老版本(如 Navicat 12)的「高级」页签里根本没有该选项,本质不支持定时增量,只能靠外部脚本调用
mysqlbinlog
备份后数据没变,Navicat 认为“无需增量”
这是最容易被当成故障的正常行为:Navicat 增量逻辑是「对比上次备份时刻到当前时刻之间,表的行数、修改时间戳、主键最大值等元数据是否有变化」。如果期间只执行了 SELECT、SHOW 或事务已回滚,它检测不到有效变更,就会跳过写入,只生成一个极小的空 .psc 文件(几 KB),日志里可能只写 Skipped: no changes detected。
- 验证方式:在备份前执行一条确定生效的
INSERT INTO test VALUES (NOW());,再立刻备份,看是否生成合理大小的增量文件 - 不要依赖「执行时间短」判断成功——真增量可能几秒完成,假增量也可能卡住(比如锁表导致元数据读取失败)
- 该机制对大表敏感:若某张表有 500 万行但只改了 1 行,Navicat 仍需扫描整表统计,可能超时或内存溢出,表现为任务卡在
Getting data info
mysqldump --incremental(不存在)那样直白,也不像 xtrabackup 那样深度耦合。任何一环断开——基准丢失、binlog 关闭、权限不足、定时配置遗漏、甚至只是表没真改——都会让它静默退化为全量,而你可能还在等“快一点”的结果。


















