一位同事试图按计划从linux机器备份Windows机器上的mysql数据库。linux和windows机器使用不同版本的mysql,因此我们不能在linux机器上运行mysqldump并将其连接到Windows机器,因此,他在windows机器上通过SSH运行mysqldump,并将输出传输到文件中。他写了一个脚本,测试了它,然后用cron调度它(没有测试),当然,它失败了--当运行cron时,mysqldump的SSH没有产生输出,所以备份文件是0字节。在没有cron的情况下运行相同的脚本会产生mysql备份。
那时我就被牵扯进来了。
我用了几种不同的方法。我已经将env连接到磁盘上,添加了SSH详细信息,想知道它是否与TTY有关,所以尝试了-t、-tt和-T,但我仍然不知道为什么会失败。通过将-v添加到SSH,我可以看到连接正在建立,身份验证正在成功,命令正在发送。唯一真正的区别是,当我通过cron安排脚本时,mysqldump输出就会丢失。
如果有人认为SSH调试日志会有所帮助,我可以发布经过消毒的输出。如果相关的话,可以获得Windows、CentOS和MySQL版本。很高兴尝试一下建议。
最终,我们可能可以将mysqldump输出重定向到Windows磁盘上,然后复制文件,因此可能有一条通往成功的替代路径,但我对正在发生的事情感到困惑,我更愿意理解。;)
https://serverfault.com/questions/861652
复制相似问题