Enviando email após o mysqldump bem-sucedido

1

Eu tenho um script que fará o backup do mysql db através do mysqldump. Gostaria de adicionar outra opção neste script para enviar um email automático se o despejo for bem-sucedido ou falhar.

Aqui está o script:

#!/bin/sh
BACKUP=/data/backup/sql2/new_backup/daily
cd $BACKUP
mkdir 'date '+%d-%m-%Y''
NOW=$(date +"%d-%m-%Y")

MUSER="root"
MPASS="mypass"
MHOST="sql4"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
 FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE
done

Como posso fazer isso?

    
por Saif 22.04.2011 / 10:27

2 respostas

4

mysqldump terminará com o código de saída 0 se tudo correr bem. Você pode usar isso:

#!/bin/sh
BACKUP=/data/backup/sql2/new_backup/daily
cd $BACKUP
mkdir 'date '+%d-%m-%Y''
NOW=$(date +"%d-%m-%Y")

MUSER="root"
MPASS="mypass"
MHOST="sql4"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
MAIL="[email protected]"
MAILER="$(which mail)"
STATUSFILE="/tmp/statusfile.$NOW"


echo "Backup report from $NOW" > $STATUSFILE
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
 FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE
 if [ "$?" -eq "0" ] then; 
   echo "$db backup is OK" >> $STATUSFILE
  else 
   echo "##### WARNING: #####  $db backup failed" >> $STATUSFILE
  fi
done
$MAILER -s "Backup report for $NOW" -- $MAIL < $STATUSFILE
rm $STATUSFILE

Eu não testei isso, mas essa é a maneira geral de fazer isso.

    
por 22.04.2011 / 11:15
0
#!/bin/bash 

TO="[email protected]" 
SUBJECT="testmail"      
MSG="bla bla bla"

/usr/sbin/sendmail -t <<EOF
to:$TO
subject:$SUBJECT
$MSG
EOF

Você também pode adicionar o campo "de", se necessário.

    
por 22.04.2011 / 11:38