Navicat 17 在 Linux 上彻底移除计划任务功能,无任何图形界面入口;必须改用 mysqldump/pg_dump 等原生工具配合 cron 实现自动备份与同步,且脚本需使用绝对路径、~/.my.cnf 存储凭据、错误处理及完整环境配置。
Navicat 17 在 Linux 上根本没有计划任务功能
navicat 17 的「计划任务」界面在 linux 版本中彻底移除,不是隐藏,是压根不存在。官方明确说明:该功能仅保留在 windows 版本中用于配合 taskschd.msc,linux/macos 下连入口都没有。你右键数据库找「计划」、点「工具」翻菜单、查「选项」设置——全无结果,不是操作错,是根本没实现。
Linux 下替代方案只能用原生命令 + cron
真实可行的路径只有一条:放弃 Navicat 内置调度逻辑,改用 mysqldump、mysql、pg_dump 等原生工具链,再由 cron 驱动。这不是“平替”,而是必须切换的底层范式。
-
cron是唯一可靠的选择;at只适合一次性任务,无法支撑每日备份或同步 - 备份脚本必须用绝对路径:
/usr/bin/mysqldump而不是mysqldump,否则 cron 执行时会报command not found - 密码不能写在命令行里(会被
ps看见),要用~/.my.cnf配置文件,且权限必须是600 - 脚本开头加
#!/bin/bash,并确保cron使用的 SHELL 是 bash(有些系统默认用 dash)
跨库同步不能靠 .nsx 文件
Linux 版 Navicat 自带的 navicatcmd 工具不支持 -sync 参数,也无法加载 .nsx 同步配置文件。试图运行 navicatcmd -sync /path/to/task.nsx 会直接报错 unknown option 或静默退出。
- MySQL → MySQL:用
mysqldump --no-create-info --where="updated_at > DATE_SUB(NOW(), INTERVAL 1 DAY)"抽增量,再mysql导入 - MySQL → PostgreSQL:先
mysqldump --tab导出为 TSV,再用psql -c "\copy ..."加载,避开类型转换陷阱 - 所有脚本必须包含错误判断,例如
if [ $? -ne 0 ]; then echo "dump failed" | mail -s "DB alert" admin@example.com; exit 1; fi
日志和权限最容易被忽略
cron 任务失败通常不报错,只留下空日志或 /var/log/syslog 里一行 (CRON) error (grandchild #1 failed with exit status 1)。真正卡点在于环境变量和工作目录。
- cron 默认
HOME=/root,但你的.my.cnf如果放在普通用户家目录下,就会读不到 - 脚本里所有路径写成绝对路径,比如
/home/app/backup/,别用~/backup/ - 用
crontab -e编辑时,最后一行必须是空行,否则部分 cron 实现会跳过最后一行 - 测试时先手动执行一遍脚本,再用
run-parts --report /etc/cron.hourly模拟 cron 环境











