Назад | Перейти на главную страницу

Mysqldump через SSH не срабатывает с помощью crontab

Коллега пытается выполнить резервное копирование базы данных 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, которую я в конце концов обнаружил Сообщение блога about, который, в свою очередь, связан с отчет об ошибке.

Есть обходной путь, но он также исправлен, поэтому, если мы обновим OpenSSH в Windows, все должно пройти.