feb
2009
23
Backup automatico dei database MySql
lunedì, 23 febbraio 2009 at 15:16 - Pubblicato da: in Informatica, ScriptingUno dei principali tool messi a disposizione all’amministratore di MySQL per effettuare il backup dei dati è mysqldump.
mysqldump è molto versatile, permette di effettuare backup in formato ASCII contenenti le istruzioni SQL dal quale è possibile ripristinare il database da zero oppure, apportandone semplici modifiche, ripristinare la singola tabella.
Un altro vantaggio dei backup creati con mysqldump è rappresentato dal fatto che possono essere ripristinati su piattaforme diverse dall’originale.
Di seguito ecco illustrato uno script per effettuare il backup di tutti i database MySql del vostro server Linux.
#!/bin/bash
ADMINUSER="backup"
ADMINPASS="password"
SERVERNAME=`uname -n`
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
MUTT="$(which mutt)"
GZIP="$(which gzip)"
NOW=`date +%Y%m%d%H%M`
DUMPDIR=/opt/dumpdb
MAILINGLIST=mysql@vostrodominio.it
RETVAL=0
# SKIPPED BACKUP LIST
SKIP=""
[ ! -d $DUMPDIR ] && mkdir -p $DUMPDIR || :
$CHOWN root.root -R $DUMPDIR
$CHMOD 0600 $DUMPDIR
DBLIST="$($MYSQL -u $ADMINUSER -h $SERVERNAME -p$ADMINPASS
-Bse 'show databases')"
for db in $DBLIST
do
skipdb=-1
if [ "$SKIP" != "" ]
then
for i in $SKIP
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ]
then
FILE="$DUMPDIR/$db.sql.$SERVERNAME.$NOW.gz"
$MYSQLDUMP -u $ADMINUSER -h $SERVERNAME
-p$ADMINPASS $db | $GZIP -9 > $FILE
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
# Cancella i file con data superiore a 7 GG
find $DUMPDIR -name $db.sql.$SERVERNAME.*
-mtime +7 \! -type d -exec rm -f {} \;
$MUTT -s "Dump database $db on
$SERVERNAME --> OK" -a $FILE $MAILINGLIST < /dev/null
else
$MUTT -s "Dump database $db on
$SERVERNAME --> FALLITO" $MAILINGLIST < /dev/null
fi
fi
done
|





