Navicat 备份卡顿主因有四:一是 gzip 压缩级别设为9导致CPU满载,建议调至1或3,或禁用压缩;二是 mysqldump 缺失关键参数,需添加--single-transaction、--skip-triggers、--max-allowed-packet=512M;三是写入NAS时缓存冲突,应禁用SMB/CIFS自动缓存或先写本地再同步;四是计划任务权限不足,须配置“用户未登录时运行”并取消GUI模式。
Navicat 备份时启用压缩就卡住,gzip 级别设太高是主因
navicat 默认用 gzip 压缩 sql 备份文件,但把压缩级别设成 9(最高)会导致 cpu 持续满载、i/o 阻塞,尤其在大库(500mb+)或低配机器上,界面直接无响应。这不是 bug,是同步阻塞式压缩的必然结果——它得等整个 sql 导出完再压,中间不释放控制权。
实操建议:
- 进 Navicat「工具 → 选项 → 备份」,把
Compression level改成1或3(最低到中低) - 如果只是本地备份且磁盘空间充足,干脆选
No compression;恢复时速度差异几乎感知不到 - 别信“压缩率高省空间”的直觉——
gzip -1和-9对 SQL 文本的体积差通常不到 8%,但耗时可能差 5 倍以上
导出大表时卡在“Writing data”阶段,mysqldump 参数没传对
Navicat 底层调用的是 mysqldump,但它默认没加关键参数,遇到大表(比如单表超 100 万行)容易卡死或 OOM。最典型的表现是进度条停在 “Writing data” 几分钟不动,任务管理器里 mysqldump.exe 占着 100% CPU 但磁盘写入为 0。
实操建议:
- 在 Navicat 备份设置里勾选「Use custom dump path」,填入你本地安装的
mysqldump路径(如C:Program FilesMySQLMySQL Server 8.0inmysqldump.exe) - 在「Additional options」框里加这三组参数:
--single-transaction --skip-triggers --max-allowed-packet=512M -
--single-transaction避免锁表;--max-allowed-packet防止长文本字段截断;--skip-triggers加速(触发器逻辑不参与备份)
备份文件写入 NAS 或远程共享盘特别慢,network timeout 不是网络问题
把备份目标设成 \192.168.1.100ackup 或 /mnt/nas/backup 后,Navicat 经常假死或报 Network timeout 错误。实际是 Windows SMB 或 Linux CIFS 挂载默认启用了缓存策略,而 Navicat 的写入模式(小块、高频率 flush)和缓存机制冲突,导致大量重试和延迟累积。
实操建议:
- Windows 下挂载 NAS 时加参数:
net use Z: \192.168.1.100ackup /persistent:yes /cache:manual(禁用自动缓存) - Linux 下挂载 CIFS 时加选项:
cache=none,actimeo=1,避免内核缓存干扰 - 更稳的做法:先备份到本地 SSD(如
D: avicat_tmp),再用脚本异步 rsync 到 NAS
用 Navicat 自动计划备份,Task Scheduler 权限不足导致失败
设置了自动备份计划后,任务看似运行了,但日志里只有 Exit code: 1,备份文件却没生成。常见原因是 Windows 计划任务默认以“仅当用户登录时运行”,一旦锁屏或远程断开,Navicat 进程就被杀掉——它不是服务进程,不能后台常驻。
实操建议:
- 在「任务计划程序」里找到 Navicat 创建的任务,右键 → 属性 → 「常规」页,勾选
Run whether user is logged on or not - 必须点「更改用户或组」,输入你的账户名并勾选
Do not store password(否则下次密码改了就失效) - 关键一步:进 Navicat「工具 → 选项 → 备份」,取消勾选
Use GUI mode for scheduled tasks——否则它会试图弹窗,而无桌面会话下直接崩溃
真正卡顿的根源往往不在 Navicat 界面本身,而在它背后调用的 mysqldump 行为、系统 I/O 缓存策略、以及 Windows/Linux 对后台进程的权限收束方式。调一个参数可能快 3 倍,但漏掉权限配置,整个计划就静默失败。


















