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:
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.
È anche possibile eseguire il flush di tabelle specifiche:
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):
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è).
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.
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à).
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.
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).
9. FLUSH USER_RESOURCES
Azzera i contatori dei limiti delle risorse per utente (come MAX_QUERIES_PER_HOUR).
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:
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.


