使用 crontab 通过 SSH 进行 Mysqldump 失败

使用 crontab 通过 SSH 进行 Mysqldump 失败

一位同事正尝试按计划从 Linux 计算机备份 Windows 计算机上的 mysql 数据库。Linux 和 Windows 计算机使用不同版本的 mysql,因此我们无法在 Linux 计算机上运行 mysqldump 并将其连接到 Windows 计算机,因此,他改为通过 SSH 在 Windows 计算机上运行 mysqldump 并将输出传输到文件。他编写了一个脚本,对其进行了测试,然后使用 cron 对其进行了计划(未进行测试),当然,它失败了 - 当通过 cron 运行时,mysqldump 的 SSH 不会产生任何输出,因此备份文件为 0 字节。不使用 cron 运行相同的脚本会生成 mysql 备份。

从那时起我就参与其中了。

我用几种不同的方法尝试过它。我将环境通过管道传输到磁盘,添加了 SSH 详细程度,想知道它是否与 TTY 有关,因此尝试了 和,-t但我仍然不知道它为什么会失败。通过添加到 SSH,我可以看到正在建立连接,身份验证正在成功,命令正在发送。唯一真正的区别是,当我通过 cron 安排脚本时,mysqldump 输出丢失。-tt-T-v

如果有人认为它们有帮助,我可以发布 SSH 调试日志的清理输出。如果相关,可以获取 Windows、CentOS 和 MySQL 版本。很高兴尝试建议。

最终,我们可能可以将 mysqldump 输出重定向到 Windows 磁盘上,然后复制文件,因此可能有另一条成功的路径,但我对正在发生的事情感到困惑,我更愿意了解。;)

答案1

这原来是 Windows 版 OpenSSH 的一个 bug,我最终找到了博客文章,这又链接到错误报告

有一个解决方法,但它也是固定的,所以如果我们在 Windows 上升级 OpenSSH,它应该会顺利进行。

相关内容