MySQL da Riga di Comando — Tutorial 7: Esportazione, Backup e Ripristino con mysqldump

Tutorial mysql da riga di comando by Antonio Parisi

In questo settimo tutorial della serie su MySQL da riga di comando, mettiamo momentaneamente in pausa le query sui dati per affrontare un argomento critico: la sicurezza e il backup. Impareremo a esportare le nostre tabelle e a ripristinarle utilizzando la potente utility mysqldump.

1. Attenzione: mysqldump si usa dal terminale di sistema

Il primo concetto fondamentale è che mysqldump non è un comando SQL. Non funziona all’interno del prompt di MySQL (quello che inizia con mysql>). È un programma separato che va eseguito direttamente dal terminale del tuo sistema operativo.
Se sei attualmente dentro MySQL, devi prima uscire digitando:

SQL

exit;

Output previsto

Bye
Ora che sei tornato al terminale standard, le operazioni si dividono in base al tuo sistema operativo.

2. Differenze operative: Windows vs Mac/Linux

Per eseguire il programma, il sistema operativo deve sapere dove si trova l’eseguibile.
Se usi Mac o Linux (o se hai configurato le Variabili di Ambiente su Windows):
Puoi digitare il comando da qualsiasi cartella del terminale. Il sistema lo riconoscerà automaticamente.
Se usi Windows (con XAMPP):
Di default, il Prompt dei Comandi (CMD) di Windows ti restituirà un errore dicendo che mysqldump non è riconosciuto come comando interno o esterno. Per usarlo, devi prima spostarti fisicamente nella cartella in cui si trovano gli eseguibili di MySQL usando il comando cd (Change Directory).
Apri il CMD di Windows e digita:

DOS

cd C:\xampp\mysql\bin
Ora sei pronto per lanciare i comandi che vedremo di seguito.

3. Esportare (Backup) un intero database

Per creare un file di backup che includa sia la struttura (le tabelle) che i dati, il comando di base è:
Su Mac / Linux:

Bash

mysqldump -u root -p negozio_db > backup_negozio.sql
Questo genererà il file backup_negozio.sql nella cartella in cui ti trovi attualmente.
Su Windows (CMD con XAMPP):
Se lanciassi il comando base da dentro la cartella bin, il backup verrebbe salvato lì. È una cattiva pratica. È meglio fornire al sistema un percorso per salvare il file comodamente sul Desktop usando la variabile %USERPROFILE%:

DOS

mysqldump -u root -p negozio_db > "%USERPROFILE%\Desktop\backup_negozio.sql"
Analizziamo il comando:
  • mysqldump: chiama il programma di esportazione.
  • -u root: specifica il nome utente.
  • -p: indica al sistema di richiedere la password al momento dell’invio.
  • negozio_db: è il database che stiamo esportando.
  • >: è il simbolo di reindirizzamento. Dice: “Prendi l’output e scrivilo in questo file”.

4. Esportare una singola tabella

Se hai bisogno di fare il backup solo della tabella clienti prima di una modifica massiva, basta aggiungere il nome della tabella dopo il nome del database.
Esempio Universale:

Bash

mysqldump -u root -p negozio_db clienti > backup_clienti.sql
(Ricorda: su Windows, se non specifichi il percorso, il file andrà nella cartella in cui ti trovi).

5. Ripristinare un backup da riga di comando

Se devi ripristinare i dati dopo un errore, o spostare il database dal tuo computer locale al server, userai il comando mysql standard (non mysqldump), invertendo la direzione della freccia di reindirizzamento (<).
Il database di destinazione deve già esistere. Se non c’è, crealo prima accedendo a MySQL (CREATE DATABASE nuovo_db;) e poi esci di nuovo al terminale.
Su Mac / Linux:

Bash

mysql -u root -p nuovo_db < backup_negozio.sql
Su Windows (CMD con XAMPP):
Sempre dalla cartella C:\xampp\mysql\bin, di’ al comando di andare a leggere il file posizionato sul tuo Desktop:

DOS

mysql -u root -p nuovo_db < "%USERPROFILE%\Desktop\backup_negozio.sql"
In questo caso, il simbolo < (minore) dice: “Prendi il contenuto di questo file .sql e invialo dentro MySQL, eseguendolo sul database nuovo_db“.
Nel prossimo Tutorial 8, torneremo nel prompt di MySQL per esplorare la Gestione degli Utenti e dei Privilegi (GRANT e REVOKE).
Antonio Parisi

Antonio Parisi

Cloud Solution Architect



Torna in alto