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 commento su “Dump di database MySQL, uno per file”

Spazio per un commento

This site uses Akismet to reduce spam. Learn how your comment data is processed.