Nel corso dell'articolo Database MySQL backup: esempi e guida rapida completa a mysqldump abbiamo visto come impiegare mysqldump per realizzare il backup dei database di MySQL e comprimere i file generati. Questa semplice operazione richiede però almeno due comandi (dump e compressione) ricchi di molteplici parametri, preferibilmente da ripetersi per ogni singolo DB di cui vogliamo creare un backup. Non sarebbe infinitamente più comodo fare tutto impartendo una sola istruzione? Ebbene: presentiamo zzmysqldump, un semplice script che svolge esattamente questo compito: creare backup compressi dei database MySQL, ognuno all'interno di un file distinto, tramite una singola istruzione da terminale

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump spotlight

Presentiamo zzmysqldump

zzmysqldump è uno script Bash (file .sh) per Ubuntu e CentOS.

Una volta installato tramite la procedura automatica (v. seguito), rende disponibile globalmente il comando da terminale zzmysqldump che, quando lanciato, svolge le seguenti operazioni:

  • backup (dump) di ogni database MySQL in un singolo file distinto (storico conservato: una settimana)
  • inserimento nel dump di istruzioni aggiuntive per l'ottimizzazione delle performance di ripristino (SET AUTOCOMMIT = 0; COMMIT;)
  • compressione del dump in formato 7z
  • rimozione del dump non-compresso

I vari parametri (username e password MySQL, opzioni, filtri includi/escludi DB, percorso di output ecc.) devono essere salvati in uno o più file di configurazione. In questo modo, la generazione dei dump MySQL si avvia tramite il solo comando zzmysqldump: senza quindi dover specificare ogni volta le opzioni, le credenziali ed i percorsi esatti.

Sono supportati i "profili": specificando il nome di un profilo subito dopo il comando (ad es.: zzmysqldump solo_db_importanti) vengono usate le opzioni specificate nel determinato file di configurazione del profilo.

Passo 1: Installazione/aggiornamento

Apriamo innanzitutto il Terminale. Per installare zzmysqldump e le sue dipendenze sul sistema, impartire questo comando:

curl -s https://raw.githubusercontent.com/TurboLabIt/zzmysqldump/master/setup.sh | sudo sh

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump_setup

Successivamente, impartendo di nuovo lo stesso comando, lo script sì aggiornerà all'ultima versione disponibile.

Passo 2: Configurazione

Completata l'installazione, dobbiamo copiare il file di configurazione in uno fra due percorsi a scelta. Quello raccomandato è la cartella dedicata sotto /etc/:

sudo cp /usr/local/turbolab.it/zzmysqldump/zzmysqldump.default.conf /etc/turbolab.it/zzmysqldump.conf

Apriamo ora il nuovo file di configurazione:

sudo nano /etc/turbolab.it/zzmysqldump.conf

» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

Per procedere rapidamente:

  1. individuiamo la riga MYSQL_PASSWORD
  2. valorizziamola con la password abbinata all'utente root di MySQL
  3. eliminiamo tutto il resto
  4. In sequenza, premiamo le combinazioni da tastiera Ctrl+O, Invio, Ctrl+X

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump_config_nano

Passo 3: Eseguire il backup

Ora è tutto pronto: impartiamo il comando zzmysqldump per lanciare lo script

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script)

Con questa configurazione verrà svolto il backup di tutti i database presenti sul server MySQL locale. I dump, compressi in formato 7z, saranno salvati in ${HOME}/backup/mysql/ (sottocartella della "Home" dell'utente corrente)

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump_backup_folder

Per copiare questi backup fra più sistemi o ricaricarli:

» Leggi: Database MySQL backup: esempi e guida rapida completa a mysqldump

Opzionale: personalizzazione avanzata

Chi volesse personalizzare ulteriormente il funzionamento del programma deve valorizzare opportunamente anche gli altri valori del file zzmysqldump.conf. In particolare:

  • MYSQL_USER: indica il nome utente per l'accesso a MySQL
  • MYSQL_PASSWORD: password associata al nome utente specificato per l'accesso a MySQL
  • MYSQL_HOST: hostname o indirizzo IP del server MySQL da backuppare
  • MYSQL_DB_EXCLUDE: se vogliamo esplicitamente escludere dal backup alcuni database, indichiamoli qui (separati dal carattere |)
  • MYSQL_DB_INCLUDE: se vogliamo realizzare i dump di alcuni, specifici database, indichiamoli qui (separati dal carattere |)
  • MYSQLDUMP_OPTIONS: opzioni specifiche del comando mysqldump
  • MYSQL_BACKUP_DIR: percorso completo nel quale scrivere i file di backup
  • SEVENZIP_COMPRESS_OPTIONS: opzioni specifiche del comando 7z

Per maggiori informazioni, si veda l'articolo Database MySQL backup: esempi e guida rapida completa a mysqldump.

È utile ricordare che, rimuovendo completamente un parametro dal file di configurazione, verrà usato il valore di default dello script.

Lavorare con i profili

In alcune circostanze potremmo voler generare un backup con impostazioni diverse da quelle configurate nel file di configurazione principale. Allo scopo, creiamo un "profilo", ovvero un file di configurazione dedicato.

Immaginando di voler creare il profilo solo_db_importanti, iniziamo copiando di nuovo il file di configurazione di default:

sudo cp /usr/local/turbolab.it/zzmysqldump/zzmysqldump.default.conf /etc/turbolab.it/zzmysqldump.profile.solo_db_importanti.conf

Si noti il nome del file di destinazione: sostituiamo la stringa solo_db_importanti con il nome del nostro profilo, lasciando inalterato il resto.

Ora apriamolo e modifichiamo i parametri come visto in precedenza. Nell'esempio seguente, ad esempio, ho incluso solamente alcuni database (quelli di questo sito) ed ho specificato un percorso di salvataggio dei backup differente

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump_profile

Dopo aver salvato le modifiche al profilo, potremo lanciare l'esecuzione con zzmysqldump solo_db_importanti

MySQL/mysqldump: creare file distinto/singolo ogni database zzmysqldump (script) - zzmysqldump_profile

Possiamo naturalmente creare molteplici profili, uno per ogni situazione.

File di configurazione: percorsi

Oltre al già citato percorso /etc/turbolab.it/zzmysqldump.conf, lo script legge la configurazione e i profili anche dalla cartella del programma stesso: /usr/local/turbolab.it/zzmysqldump.conf.

Se presenti, le configurazioni vengono caricate in quest'ordine:

  1. /etc/turbolab.it/zzmysqldump.default.conf
  2. /etc/turbolab.it/zzmysqldump.conf
  3. /usr/local/turbolab.it/zzmysqldump.conf
  4. /etc/turbolab.it/zzmysqldump.profile.nome_mio_profilo.conf (solo se specificato il profilo)
  5. /usr/local/turbolab.it/zzmysqldump.profile.nome_mio_profilo.conf (solo se specificato il profilo)

I parametri eventualmente presenti nei file "successivi" hanno la priorità. Se invece non sono ridichiarati, rimangono in vigore i valori presenti nei file "precedenti".