一位同事正尝试按计划从 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 磁盘上,然后复制文件,因此可能有另一条成功的路径,但我对正在发生的事情感到困惑,我更愿意了解。;)