Navicat 不支持冷备份,其所有备份均为基于 mysqldump 的在线逻辑备份;真冷备份需手动停服、拷贝数据文件、重启服务,Navicat 仅可辅助校验。
navicat 本身不支持“停止 mysql 服务 + 拷贝数据文件”式的冷备份。它所有备份操作(包括自动运行里的 backup)都是逻辑备份,底层调用的是 mysqldump,全程数据库必须在线。真要执行冷备份,得绕开 navicat,手动控制服务启停和文件拷贝。
为什么 Navicat 的“自动备份”不是冷备份
Navicat 的 Backup 任务本质是导出 SQL 文本:它连接数据库、执行 SELECT 和 SHOW CREATE、拼装建表语句和 INSERT 语句。这个过程要求 MySQL 正在运行,且会加读锁(对 MyISAM 是表级锁,InnoDB 是一致性快照)。它不会、也不能去停服务或复制 /var/lib/mysql/your_db/ 下的 .ibd 或 .MYD 文件。
- 你在“自动运行”里看到的“备份”动作,对应的是
mysqldump命令,不是文件系统拷贝 - 即使勾选了“压缩”或“加密”,输出仍是 SQL 文件,不是数据文件快照
- 所谓“冷备份配置”,在 Navicat 界面里根本不存在对应选项或开关
真正冷备份必须脱离 Navicat:三步手动控制
冷备份的核心是“数据库进程关闭 → 文件静止 → 安全拷贝”。这需要操作系统级调度,Navicat 无权管理 MySQL 进程生命周期。推荐用系统任务计划(Windows Task Scheduler / Linux cron)驱动批处理脚本:
- 第一步:用
mysqladmin -u root -p[password] shutdown停服务(注意密码不能带空格,建议用配置文件免密) - 第二步:用
xcopy(Windows)或rsync -a(Linux)拷贝整个数据目录(如C:\ProgramData\MySQL\MySQL Server 8.0\Data\或/var/lib/mysql/)到目标路径 - 第三步:用
net start mysql80(Windows)或systemctl start mysqld(Linux)重启服务
⚠️ 关键风险点:若第二步拷贝未完成而第三步启动服务,会导致数据损坏。务必在脚本中加入 timeout 或 wait 机制,并检查上一步退出码(%ERRORLEVEL% 或 $?)。
Navicat 能做的唯一“冷备份辅助”:校验与归档
你可以在冷备份脚本末尾,让系统自动触发一次 Navicat 的 Backup 任务(通过命令行调用 navicat.exe --backup ...),但这只是生成一份 SQL 备份作为双重验证——它不参与冷备份主流程,也不保证一致性。实际使用中:
- 不要依赖 Navicat 启动/停止服务;它没这个能力
- 不要把 Navicat 自动运行里的“备份”误认为冷备份;它永远是热逻辑备份
- 若需保留二进制日志做 PITR(基于时间点恢复),冷备份后记得同时拷贝
mysql-bin.*文件,并记录SHOW MASTER STATUS输出的 position
冷备份真正难的不是拷贝文件,而是精确控制服务状态切换窗口、避免残留锁、确保拷贝原子性。Navicat 在这个链条里只能当个“事后验证员”,别让它站到主控位置。











