In questo articolo scopriamo come eseguire il backup e il ripristino di un database MySQL o MariaDB grazie all’utility a riga di comando mysqldump.
Il file di backup ottenuto usando l’utility mysqldump è praticamente un insieme di SQL statements che possono essere usati per ricreare un database identico all’originale, quindi ripristinandone la struttura. Come nota a margine è inoltre utile sapere che mysqldump può anche generare file CSV o XML utili per esportare i dati contenuti nel database.
Sintassi di mysqldump
Iniziamo la scoperta di mysqldump analizzando la sua sintassi di base. Un espressione mysqldump segue la seguente sintassi:
mysqldump [options] > file.sql
options – Sono le opzioni che mysqldump ci mette a disposizione
file.sql – Il nome del file di dump (backup)
Ricordiamo che mysqldump necessita che il server MySQL sia “up and running” affinchè possa funzionare.
Backup di un singolo database
database_name
usando l’utente root
e salvarlo in un file denominato database_name.sql
, il comando da eseguire è il seguente:
mysqldump -u root -p database_name > database_name.sql
Backup di una serie di database
--database
seguita dalla lista dei database oggetto del backup. Ogni database deve essere separato da spazio.
mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql
Backup di tutti i database
In questo caso è sufficiente utilizzare l’opzione –all-databases e tutti i database ospitati sul server MySQL saranno oggetto di backup. Il comando è il seguente:
mysqldump -u root -p --all-databases > all_databases.sql
Backup di tutti i database su file separati
Purtroppo l’utility mysqldump non fornisce un’opzione per eseguire il backup di tutti i database archiviando ogni database su un file dedicato. Tuttavia questo può facilmente essere raggiunto con un semplice script bash:
for DB in $(mysql -e 'show databases' -s --skip-column-names); do
mysqldump $DB > "$DB.sql";
done
Il comando qui sopra creerà un file di dump per ogni singolo database usando come filename il nome del database stesso.
Creare un backup compresso
Se la dimensione del database oggetto di backup è molto grande è una buona idea comprimere l’output. Per realizzare questo è sufficiente eseguire una pipe dell’output verso l’utility gzip e infine ridirezionare il tutto verso un file. Il comando è il seguente:
mysqldump database_name | gzip > database_name.sql.gz
Eseguire il restore di un MySQL dump
Per eseguire il restore di un file di dump di MySQL possiamo utilizzare direttamente la command line utility mysql. Prima di eseguire il restore è necessario creare il database.
mysql -u root -p -e "CREATE DATABASE database_name";
mysql -u root -p database_name < database_name.sql
Eseguire il restore di un singolo database da un Full MySQL Dump
Per ripristinare un singolo database da un file di dump che contiene il backup di molteplici database (per esempio un file ottenuto con l’opzione –all-databases) possiamo utilizzare il seguente comando:
mysql --one-database database_name < all_databases.sql