Dump di database MySQL, uno per file

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

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Un pensiero riguardo “Dump di database MySQL, uno per file”

Spazio per un commento