Linux

將sql轉儲錯誤保存在文件中

  • March 31, 2022

如果出現錯誤,我想保存error到文件中。但錯誤未重定向到文件中。

我得到以下錯誤並且它沒有重定向到文件中。

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)

我的嘗試

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

您正在從 重定向錯誤gzip,而不是從mysqldupmp

將重定向放在管道之前,如下所示:

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

您似乎試圖重定向標準輸出 (">") 兩次,這是行不通的。

也許你想要這個:

    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 

引用自:https://serverfault.com/questions/1030870