Ich möchte error
bei einem Fehler in einer Datei speichern. Der Fehler führt jedoch nicht zur Weiterleitung in die Datei.
Ich erhalte den folgenden Fehler und es erfolgt keine Weiterleitung in die Datei.
mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_comloc`': View 'nextgendev_new.v_comloc' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
Mein Versuch
HOST="localhost"
PASS="aaaaa"
LOCAL_DIR="/userBackupDrive/backupDatabases/" #Modified local directory
DAY="`date +%a`"
DATE="`date +%F`"
USER="root"
for db in `mysql -h $HOST -u $USER -p$PASS -e "show databases"`
do
mysqldump --opt --routines --single-transaction -p$PASS -u $USER -h $HOST --databases $db | gzip -9 > $LOCAL_DIR$db.$DAY.sql.gz 2>>/var/log/failedJobs/mysqlCronJob.log
RESULT=$?
if [ $RESULT -eq 0 ] ; then
echo
else
echo "$DATE__ $db backup not successful" >> /var/log/failedJobs/dbError.log
fi
done
Antwort1
Sie haben Fehler von umgeleitet gzip
, nicht von mysqldupmp
.
Setzen Sie die Umleitung vor die Pipe, etwa so:
mysqldump --opt --routines --single-transaction -p$PASS -u $USER -h $HOST \
--databases $db 2>>/var/log/failedJobs/mysqlCronJob.log \
| gzip -9 > $LOCAL_DIR$db.$DAY.sql.gz
Antwort2
Sie versuchen anscheinend, die Standardausgabe („>“) zweimal umzuleiten, was nicht funktioniert.
Vielleicht möchten Sie dies:
mysqldump --opt --routines --single-transaction -p$PASS -u $USER -h $HOST --databases $db 2>/var/log/failedJobs/mysqlCronJob.log | gzip -9 > $LOCAL_DIR$db.$DAY.sql.gz