Коллега пытается выполнить резервное копирование базы данных mysql на машине Windows с машины linux по расписанию. Машины linux и windows используют разные версии mysql, поэтому мы можем ' Запустить mysqldump на машине Linux и подключить его к машине Windows, поэтому вместо этого он запускает mysqldump на машине Windows через SSH и передает вывод в файл. Он написал сценарий, протестировал его, затем запланировал его с помощью cron (без проверки) и, конечно же, он потерпел неудачу - при запуске через cron SSH mysqldump не производит никаких выходных данных, поэтому размер файла резервной копии составляет 0 байт. Тот же сценарий, запущенный без cron, создает резервную копию mysql.
Вот тогда я и подключился.
Я повозился с ним разными способами. Я отправил env на диск, добавил подробности SSH, поинтересовался, имеет ли это какое-либо отношение к TTY, поэтому попробовал с -t
, -tt
и -T
, но я до сих пор не понимаю, почему это не удается. Я могу видеть, добавляя -v
к SSH, что соединение выполняется, аутентификация прошла успешно, команда отправляется. Единственная реальная разница состоит в том, что когда я планирую сценарий через cron, вывод mysqldump отсутствует.
Я могу опубликовать очищенный вывод журналов отладки SSH, если кто-то думает, что они помогут. Можно получить версии для Windows, CentOS и MySQL, если они актуальны. Рад пробовать предложения.
В конечном итоге мы, вероятно, сможем перенаправить вывод mysqldump на диск Windows, а затем скопировать файл, так что, вероятно, есть альтернативный путь к успеху, но я озадачен тем, что происходит, и я бы предпочел понять. ;)
Оказывается, это ошибка в OpenSSH для Windows, о которой я в конечном итоге нашел сообщение в блоге , которое, в свою очередь, связано с отчетом об ошибке .
Есть обходной путь, но он также исправлен, поэтому, если мы обновим OpenSSH в Windows, все пройдет.