Il problema di mysqldump è che non ha un’opzione da utilizzare assieme a –all-databases per creare un file di dump per ogni database.
Avere un file di dump separato per ciascun database è utile sia per poter ripristinare velocemente un singolo database sia per non sovrascrivere i backup di eventuali database cancellati per errore.
Lo script che segue, molto banale e suscettibile di ogni tipo di miglioria, è un esempio di come sia possibile effettuare il backup di tutti i database di un server ciascuno in un singolo file compresso.
#!/bin/sh
# MySQL backup script
### Destinazione ###
BACKUPDIR=/backup/test
### MySQL ###
MYUSER="utente"
MYPASS="password"
MYHOST="localhost"
### Programmi ###
TAR="$(which tar)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
### Elenco dei database ###
DBS="$($MYSQL -u $MYUSER -h $MYHOST -p$MYPASS -Bse 'show databases')"
### dump ###
for db in $DBS
do
$MYSQLDUMP --hex-blob --routines --opt -u $MYUSER -h $MYHOST -p$MYPASS $db > /tmp/$db.sql
$TAR cvzf $BACKUPDIR/$db.tgz /tmp/$db.sql
rm -f /tmp/$db.sql
done
Lascia un commento