Navicat 不支持定时检查连接状态,其“测试连接”仅手动触发且无日志、告警或自动重试;真正可行方案是用数据库命令行工具(如mysql、psql)配合系统定时任务(cron或Task Scheduler)编写脚本实现探测与告警。
Navicat 本身不支持“定时检查连接状态”功能
navicat 是一个数据库客户端工具,不是监控服务,它没有内置的后台定时轮询或心跳检测机制。所谓“定时检查连接状态”,实际是用户误将“自动重连”“连接超时设置”或“手动测试”理解为自动化监控。真要实现定时探测,必须借助外部手段。
用 Navicat 的“连接测试”功能只能手动触发
每次打开连接、右键点击连接选择 测试连接,或在连接属性中点 测试连接 按钮,Navicat 才会发起一次 TCP + 协议握手验证。这个操作不会记录日志,也不能设定间隔、失败告警或自动重试。
- 测试失败时提示类似
Connection refused或Can't connect to MySQL server - 成功仅表示当前时刻能通,不代表后续持续可用
- 该功能不适用于生产环境的可用性保障
替代方案:用脚本 + 系统定时任务模拟“定时检查”
真正可行的做法,是绕过 Navicat,用数据库原生命令行工具(如 mysql、psql、sqlcmd)写轻量脚本,配合系统级定时器(cron 或 Windows Task Scheduler)执行。
- MySQL 示例(Linux):
mysql -h 192.168.1.100 -P 3306 -u monitor -p'pass' -e "SELECT 1;" &>/dev/null && echo "$(date): OK" >> /var/log/db-check.log || echo "$(date): FAIL" >> /var/log/db-check.log
- PostgreSQL 示例(Windows):
psql -h 192.168.1.100 -p 5432 -U monitor -d postgres -c "SELECT 1;" 2>nul && echo %date% %time% OK >> check.log || echo %date% %time% FAIL >> check.log - 关键点:必须使用数据库账户(不能是 Navicat 保存的加密凭据),且该账户仅需最小权限(如只允许
SELECT 1) - 失败时可追加发送邮件、写入告警文件、调用 webhook —— 这些 Navicat 完全做不到
Navicat 的“自动重连”选项容易被误解
在连接编辑窗口的 高级 标签页里,勾选 自动重新连接 并设置 重试次数 和 重试间隔,仅影响 Navicat 自身 GUI 在连接断开后**尝试恢复当前活动查询窗口**的行为,和“定时检查”无关。
- 它不会在后台静默运行,也不会在你没打开任何查询窗口时工作
- 重连失败仍会弹窗报错,无法静默记录或通知
- 若网络中间件(如防火墙、代理)主动 kill 长连接,该选项可能反复失败却无反馈
127.0.0.1(脚本在远程机器跑时连不上)。这些细节比“怎么点 Navicat 按钮”重要得多。











