Comandi MySQL FLUSH

Nel mondo dell’hosting, MySQL rimane uno dei componenti più critici per l’alimentazione di siti web dinamici, negozi di e-commerce, sistemi di gestione dei contenuti (CMS) e piattaforme SaaS. Sia che si gestisca un cluster di hosting condiviso, un’infrastruttura VPS o server dedicati per clienti aziendali, avere il controllo sulle operazioni interne di MySQL è essenziale.

Uno strumento spesso trascurato ma potente è il comando FLUSH, un insieme di istruzioni SQL amministrative che consentono di ricaricare i privilegi, cancellare i log, ripristinare gli stati e garantire la coerenza senza riavviare il server.

Che cos’è FLUSH in MySQL?

L’istruzione FLUSH viene utilizzata per:

  • Cancellare le cache interne

  • Ricaricare i file di configurazione (come le tabelle dei privilegi)

  • Ripristinare le informazioni di stato

  • Forzare MySQL a scrivere i dati del buffer su disco

Solo gli utenti con il privilegio RELOAD (o superiore, come SUPER) possono eseguire la maggior parte delle operazioni FLUSH.

Comandi FLUSH comuni

1. 🔐 LAVAGGIO DEI PRIVILEGI

Ricarica i privilegi degli utenti dalle tabelle dei privilegi nel database mysql:

FLUSH PRIVILEGES;

Quando usarlo:

  • Dopo aver modificato manualmente mysql.user o altre tabelle dei privilegi.

  • Quando si modifica l’accesso dell’utente tramite istruzioni UPDATE dirette anziché GRANT.

2. FLUSH TABELLE

Chiude tutte le tabelle aperte e ne impone la riapertura. Utile nella manutenzione del file system o nei backup.

FLUSH TABLES;

È anche possibile eseguire il flush di tabelle specifiche:

FLUSH TABLES nome_tabella [, nome_tabella] ...;

Quando si usa:

  • Prima di eseguire backup con strumenti esterni (ad esempio, mysqldump –single-transaction).

  • Dopo scritture su larga scala che possono sovraccaricare la cache delle tabelle.

3. SCARICA LA CACHE DELLE QUERY

Rimuove tutti i risultati delle query dalla cache delle query (se abilitata):

FLUSH QUERY CACHE;

Nota: la cache delle query è deprecata e rimossa in MySQL 8.0.

4. LAVAGGIO DEI REGISTRI

Chiude e riapre tutti i file di log (log generale, log degli errori, log binario, log dei relè).

FLUSH LOGS;

Oppure esegue il flush di un tipo specifico:

Quando si usa:

  • Dopo la rotazione dei registri

  • Quando i registri vengono spostati o archiviati

  • Per ripristinare i log per il debug o la conformità

5. FLUSH HOSTS

Azzera la cache degli host per le connessioni client fallite.

FLUSH HOSTS;

Quando si usa:

  • Quando si riceve l’errore:

    Host 'xxx' is blocked because of many connection errors

6. AZZERARE LO STATO

Azzera la maggior parte delle variabili di stato (non influisce sui contatori globali come il tempo di attività).

FLUSH STATUS;

Quando usarlo:

  • Prima del benchmarking o del test delle prestazioni.

  • Per ottenere metriche pulite con SHOW STATUS.

7. FLUSH TABELLE CON BLOCCO IN LETTURA

Esegue il flush e blocca tutte le tabelle, impedendo la scrittura da parte di altre sessioni.

FLUSH TABLES WITH READ LOCK;

Quando usarlo:

  • Per backup consistenti di istantanee (ad esempio, con LVM o strumenti di copia di file).

  • Importante: sbloccare sempre manualmente con UNLOCK TABLES;

8. FLUSH DES_KEY_FILE

Ricarica i file delle chiavi DES usati nelle vecchie DES_ENCRYPT()/DES_DECRYPT() (legacy).

FLUSH DES_KEY_FILE;

9. FLUSH USER_RESOURCES

Azzera i contatori dei limiti delle risorse per utente (come MAX_QUERIES_PER_HOUR).

FLUSH USER_RESOURCES;

Quando usarlo:

  • Azzeramento a metà ciclo per gli utenti con risorse limitate.

Comandi deprecati/rimossi

  • FLUSH QUERY CACHE è stato rimosso in MySQL 8.0.

  • FLUSH DES_KEY_FILE è obsoleto.

  • Considerate le alternative più recenti di MySQL 8.0, come RESET PERSIST.

Permessi richiesti

La maggior parte delle operazioni di FLUSH richiede:

  • PrivilegioRELOAD

  • SUPER o SYSTEM_VARIABLES_ADMIN (per le operazioni sensibili in MySQL 8)

Esempio:

GRANT RELOAD ON *.* TO 'admin'@'localhost';

Conclusione

La famiglia di comandi FLUSH è essenziale per il controllo amministrativo di MySQL. Sia che si tratti di gestire i privilegi, i log o gli stati della cache, capire come e quando usare FLUSH aiuta a mantenere prestazioni e affidabilità ottimali del server senza richiedere un riavvio. Utilizzatelo con saggezza e con i giusti privilegi, soprattutto negli ambienti di produzione.