2013-08-22 3 views
0

Hello all,MySQLDump через сценарий оболочки не выполняется, почему?

Надеюсь, вы хорошо прочитали этот запрос о помощи. Я не очень опытен в мире Linux, но, тем не менее, я стараюсь учиться как можно быстрее. Поэтому, пожалуйста, прошу простить любое очевидное невежество с моей стороны и помочь, если это возможно.

Я запускаю сервер предприятия ClearOS v5.2 Enterprise (на основе дистрибутива Centos linux), и я использую следующую команду в сценарии оболочки для резервного копирования моей базы данных MySQL.

mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql 

Я использую задание cron для вызова этого скрипта @ 1:15 AM ежедневно. Теперь я вижу в журнале cron, что задание выполняется в это время и вызывается сценарий, но команда не выполняется (записи журнала ниже). Я говорю это, потому что я не вижу, что файл sql создается в каталоге /mnt/shares/flexshares/backup/MySQL.

Aug 21 01:15:01 server1 crond[27842]: (root) CMD (/root/my_scripts/backup-mysql.sh) 
Aug 22 01:15:01 server1 crond[9031]: (root) CMD (/root/my_scripts/backup-mysql.sh) 

Как ни странно, если бы я использовать ту же команду из командной строки он выполняет без каких-либо проблем, и база данных MySQL сбрасывается в целевой каталог (/MNT/акции/flexshares/резервного копирования/MySQL).

Что мне не хватает или что я включил в сценарий, из-за которого он не запускался? Вот мой сценарий оболочки («backup-mysql.sh»):

#!/bin/bash 
# FULL BACKUP OF MySQL DATABASE 
mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql 

Я очень благодарен за любую помощь я могу получить, спасибо.

v/г

Kismet

+0

Где вы ищете ваш сбрасываемый файл?Они должны сохранять в/mnt/share/flexshares/backup/MySQL/mysql-backup-'date +% Y-% m-% d-% H-% M'.sql –

+0

Одна возможность (?) Q: Является ли "/mnt/shares/flexshares/backup "в локальной файловой системе, есть ли это на автоматической установке удаленной файловой системы? Если это не локальный, то, возможно, это недоступно в то время, когда cron запускает скрипт (?). Если бы это был я, я бы проверил это и запустил тест, который пишет в известную файловую систему с правами на запись: '/ tmp' – spencer7593

+0

@rakib Я редактировал вопрос, чтобы показать правильный целевой каталог. –

ответ

2

Я чувствую, что нет никаких проблем со сценарием.

Проверьте, предоставлены ли вам достаточное разрешение на выполнение, и ваша запись cron является правильной.

Попробуйте выполнить скрипт самостоятельно и посмотреть, генерирует ли файл DB или нет.

+0

Если я выполню вручную, файл DB будет сгенерирован правильно. –

+0

в этом случае виновник shd должен быть знаком cron точно – Narayan

3

Я думаю, что ваши команды не выполнены должным образом из сценария. Вы можете попробовать следующее -

  #!/bin/sh 
     DUMPFILE=mysql-backup-`date +%Y-%m-%d-%H-%M`.sql 
     `mysqldump -u root -pMYPASSWORD --all-databases > $DUMPFILE` 
+0

Я пробовал то, что вы предложили, но не повезло. Предполагая, конечно, что я не копировал и не вставлял неправильно. Предполагалось, что вся команда должна быть на одной линии? Потому что так я и побежал. –

+0

Есть две разные линии. Первая строка - это настройка переменной DUMPFILE. Следующая строка выполняет команду. –

+0

Спасибо, это сработало. Я ценю это. К сожалению, это не сработало из cron, поэтому я решил проверить права доступа к файлу, и он не был установлен в исполняемый файл. Поэтому я изменил его, и работает cron. Огромное спасибо. –

0

Я очень ценю помощь. На основании комментарий @Narayan, что проблема может быть в задании cron - я провела еще некоторое тестирование с заданием cron, чтобы узнать, где моя проблема. Ну, это было незадолго до того, как я получил отказ в доступе, когда я попытался запустить скрипт непосредственно из CLI, выполнив ./backup-mysql.sh.

Это побудило меня проверить разрешения файла сценария, иронично, что он не был выполнен. Я считаю, что именно поэтому сценарий не работал из задания cron. Я изменил разрешения и протестировал, и все работает нормально.

Я думаю, мой урок дня в мире Linux, ПРОВЕРЬТЕ РАЗРЕШЕНИЯ ВСЕГДА! В любом случае, спасибо за вашу помощь, я очень ценю это.

Смежные вопросы