Czy mysqldump zwraca status?

14

Tworzę skrypt, który tworzy kopię zapasową bazy danych mysql przy użyciu narzędzia mysqldump. Piszę ten skrypt w powłoce „sh”. Chciałbym uchwycić status skryptu mysqldump w skrypcie (tj. Jeśli polecenie mysqldump nie powiodło się lub zakończyło się powodzeniem), dzięki czemu mogę zgłosić, czy skrypt się powiódł, czy nie.

  • Czy mysqldump zwraca status wyjściowy?

  • Czy ktoś może podać mi instrukcje, jak to zrobić?

krunal shah
źródło
Możesz po prostu sprawdzić, czy plik został utworzony, a ostatni wiersz zawiera coś w rodzaju -- Dump completed on ...- Jeśli wystąpił problem, nie będzie tak.
Ewan Heming
Tworzę zrzut za pomocą skryptu powłoki, więc chcę uzyskać pomysł, aby zrzut został poprawnie utworzony lub nie przez jakiś status.
krunal shah

Odpowiedzi:

14

mysqldump zwraca

0 for Success
1 for Warning
2 for Not Found

Drukuje również rozszerzony komunikat o błędzie na stderr np

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

Możesz w ten sposób sprawdzić zwróconą wartość

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
użytkownik9517
źródło
nie mogę zwrócić komunikatu o błędzie „Powodzenie awarii” na mój e-mail? Proszę, proszę pana ...
sqlchild
Ciekawy problem w 2020 r., MySQL 5 lub 8 emituje jakiś kod wyjścia. bugs.mysql.com/bug.php?id=90538
joseluisq
1

Po zakończeniu zrzutu sprawdź $? zmienna powłoki. Jeśli jest 0 - wszystko poszło dobrze. W przeciwnym razie błąd.

# 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
Dmytro Leonenko
źródło