Un dump è un file di testo con istruzioni SQL. Che si ripristini o no dipende da come è stato scritto, e i valori predefiniti non sono quelli giusti per un sito in produzione. Quasi tutti i fallimenti in importazione si decidono settimane prima, nel momento in cui si prende il dump.

Il comando

mysqldump \
  --single-transaction \
  --quick \
  --routines --triggers --events \
  --default-character-set=utf8mb4 \
  --set-gtid-purged=OFF \
  dbname | gzip > db-$(date +\%F).sql.gz

Cosa impedisce ciascuna

  • --single-transaction — un'istantanea coerente senza bloccare le tabelle. Senza, un sito trafficato resta congelato per tutta la durata del dump.
  • --quick — scorre riga per riga invece di caricare in memoria una tabella grande.
  • --routines --triggers --events — non sono comprese per impostazione predefinita. Un ripristino senza di esse sembra completo e perde in silenzio ogni procedura memorizzata e ogni evento pianificato.
  • --default-character-set=utf8mb4 — l'arabo e le emoji sopravvivono al viaggio di andata e ritorno.
--single-transaction è coerente solo per InnoDB. Una tabella MyISAM nello stesso database viene copiata senza quella garanzia: convertile, oppure accetta una copia incoerente di quelle tabelle.

Verifica il file, non il codice di uscita

gzip -t db-2026-09-05.sql.gz               # the archive is intact
zcat db-2026-09-05.sql.gz | tail -5       # ends with "Dump completed"
zcat db-2026-09-05.sql.gz | grep -c "CREATE TABLE"

Un dump troncato da un disco che si riempie resta un gzip valido per quasi tutta la sua lunghezza. La riga di chiusura in fondo è la prova che mysqldump è arrivato alla fine — e verificarla costa un comando.

Ripristinalo altrove, con regolarità

mysql -e "CREATE DATABASE restore_test CHARACTER SET utf8mb4"
zcat db-2026-09-05.sql.gz | mysql restore_test
mysql restore_test -e "SELECT COUNT(*) FROM orders"
Confronta quel conteggio di righe con la produzione. Un dump che si importa senza errori e arriva con metà delle righe è il guasto che nessuno intercetta, perché l'importazione non ha detto proprio nulla.