Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何记录mysqldump错误&;要存档的警告?_Mysql_Linux_Bash_Shell_Mysql Backup - Fatal编程技术网

如何记录mysqldump错误&;要存档的警告?

如何记录mysqldump错误&;要存档的警告?,mysql,linux,bash,shell,mysql-backup,Mysql,Linux,Bash,Shell,Mysql Backup,我有一个mysqlbackup脚本,我希望它: -单独备份所有数据库 -将所有错误记录到文件中 -通过电子邮件发送该文件 我现在得到的是: \#!/bin/sh TIMESTAMP=$(date +"%F-%H-%M") BACKUP_DIR="/mnt/usb/mysql/" MYSQL_USER="backup" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="*****" MYSQLDUMP=/usr/bin/mysqldump EMAIL=***** RETE

我有一个mysqlbackup脚本,我希望它: -单独备份所有数据库 -将所有错误记录到文件中 -通过电子邮件发送该文件

我现在得到的是:

\#!/bin/sh

TIMESTAMP=$(date +"%F-%H-%M")
BACKUP_DIR="/mnt/usb/mysql/"
MYSQL_USER="backup"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="*****"
MYSQLDUMP=/usr/bin/mysqldump
EMAIL=*****
RETENTION="+14"
MSG=/tmp/mysqlbackup.messages

echo "Date: $(date)">$MSG
echo "Hostname: $(hostname)" >>$MSG
echo "Backup script has run. [don't worry, it won't get far!]" >>$MSG
echo " ----- ----- ----- " >> $MSG
echo " " >> $MSG
echo " " >> $MSG

mkdir -p "$BACKUP_DIR/$TIMESTAMP"

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`

for db in $databases; do
        $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
        echo "Backing up: $db" >> $MSG
done

echo " " >> $MSG
echo " " >> $MSG
echo " ----- ----- ----- " >> $MSG
echo " " >> $MSG
echo " " >> $MSG

find $BACKUP_DIR* -mtime $RETENTION -exec rm {} \;  >> $MSG 2>&1

mail  -s "MySQL Backup script has run" "$EMAIL" <$MSG
rm -f $MSG

我如何将它们记录到$MSG文件以获得电子邮件?更好的是,如果发现错误,是否可以更改电子邮件主题[因此不会被忽略]

@BroSlow,如果我尝试将$MSG>>2>&1之类的内容添加到实际转储和压缩dbs的行末尾,那么它会尝试将zip转储到$MSG正文中。例如
$MYSQLDUMP--force--opt--user=$MYSQL_user-p$MYSQL_PASSWORD--databases$db 2>$MSG |…
?或者您正在尝试这样做,以便以后可以追加?这也解决了您的上一个问题,因为您可以检查变量是否有赋值
[[-n$varable]]&&dowhatever
好的-谢谢,我让2>$MSG工作了,问题是我把它放在了行的末尾,而不是mysqldump的末尾。fraid我不理解变量位,我需要将错误记录到电子邮件[done-works now],如果发生错误,更改主题行会很好。使用参数
[root@linux scripts]# ./mysqldump-all-databases.sh
mysqldump: Error 1194: Table 'XXXXX' is marked as crashed and should be repaired when dumping table `XXXXX` at row: 81052
mysqldump: Error 1194: Table 'XXXXX' is marked as crashed and should be repaired when dumping table `XXXXX` at row: 68532
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.