4

У меня есть сценарий оболочки, чтобы получить дамп базы данных MySQL. Этот скрипт отлично работает при запуске вручную

#!/bin/sh
fqn=/home/Mysqluser/daily_dumps/bookstore_`date +%Y%m%d_%H%M%S`.sql.gz
mysqldump -u root -h localhost -pmysql#passwd bookstore | gzip > $fqn

Но когда я включаю этот скрипт для запуска в задании cron, он не создает резервную копию.

Вот что я включил в работу cron:

00 00 * * *  /home/Mysqluser/daily_dumps/bin/backup_database.sh

Что мне здесь не хватает?

2 ответа2

0

Также убедитесь, что mysqldump находится в $PATH при запуске из cron. Рекомендуется устанавливать $PATH непосредственно в вашем скрипте или указывать полные пути для любых вызываемых команд (например, /usr/bin/mysqldump).

0

Вероятно, это связано с тем, что окружение (я) (введите env в командной строке, чтобы увидеть его) отличаются.

У меня была похожая проблема при попытке выполнить запрос mysql в cron.daily, я решил ее, добавив этот флаг --defaults-file=/root/.my.cnf

Похоже, что mysqldump имеет аналогичный флаг --defaults-extra-file (должен быть первым аргументом), но если это не сработает, попытайтесь выяснить, в чем разница между вашей средой командной строки и средой cron. Создайте cronjob, который печатает вывод env в файл и сравнивает его с тем, что вы получаете, когда запускаете его из своей оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .