Mysqldump возвращает статус?


14

Я создаю сценарий, который выполняет резервное копирование базы данных mysql с помощью утилиты mysqldump. Я пишу этот скрипт в оболочке "ш". Я хотел бы зафиксировать состояние вывода mysqldump в сценарии (то есть, если команда mysqldump завершилась неудачно или успешно), чтобы я мог сообщить, был ли сценарий успешным или нет.

  • Mysqldump возвращает состояние вывода?

  • Может кто-нибудь, пожалуйста, дайте мне инструкции о том, как это сделать?


Вы можете просто проверить, что файл был создан и последняя строка содержит что-то вроде: -- Dump completed on ...- Если возникла проблема, то это не так.
Эван Хеминг,

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

Ответы:


14

MySQL возвращается

0 for Success
1 for Warning
2 for Not Found

Он также печатает расширенное сообщение об ошибке в stderr, например

mysqldump: Got error: 1049: Unknown database 'dbname' when selecting the database

Вы можете проверить возвращаемое значение так

mysqldump -u DBuser -pDBpassword database >database.sql 2>database.err 
if [ "$?" -eq 0 ]
then
    echo "Success"
else
    echo "Mysqldump encountered a problem look in database.err for information"
fi

я не могу вернуть сообщение об ошибке «Успешный отказ» на мою электронную почту? Пожалуйста, помогите, сэр ...
sqlchild

1

После завершения дампа чек $? переменная оболочки Если 0 - все прошло нормально. Остальное - ошибка.

# mysqldump -u aaa -d msf>/dev/null
mysqldump: Got error: 1045: Access denied for user 'aaa'@'localhost' (using password: YES) when trying to connect
# echo $?
2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.