Сценарий full_backup.rb
, на который вы ссылаетесь, содержит следующее:
cmd = "mysqldump --quick --single-transaction ...
#...
run(cmd)
Обратите внимание, что на mysqldump
нет полного пути.Задания в Cron обычно выполняются с очень ограниченным PATH
в их среде, и я предполагаю, что mysqldump
не в этом ограниченном PATH
.Вы можете попытаться установить свой собственный PATH
в вашем crontab:
PATH='/bin:/usr/bin:/whatever/else/you/need'
*/5 * * * * /home/ubuntu/mysql_s3_backup/incremental_backup.rb
Или в своем скрипте на Ruby:
ENV['PATH'] = '/bin:/usr/bin:/whatever/else/you/need'
Или указать полный путь к mysqldump
(и любой другойвнешние исполняемые файлы) в вашем скрипте резервного копирования.
Я бы выбрал один из двух последних вариантов (т.е. укажите ENV['PATH']
в вашем скрипте или используйте полные пути к исполняемым файлам), поскольку это уменьшит вашу зависимость от внешних факторов.и это также поможет избежать проблем с людьми, имеющими свои собственные версии команд, которые вам нужны в их PATH
.
Немного проверки и обработки ошибок при вызове run
также может быть полезно.
Если какая-либо из необходимых библиотек Ruby была недоступна (из-за разрешений или проблем с путями), вы, вероятно, получите жалобы из сценария.