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.
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.
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.
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.
Rimuove tutti i risultati delle query dalla cache delle query (se abilitata):
Nota: la cache delle query è deprecata e rimossa in MySQL 8.0.
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à
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
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.
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;
Ricarica i file delle chiavi DES usati nelle vecchie DES_ENCRYPT()/DES_DECRYPT() (legacy).
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.
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.
La maggior parte delle operazioni di FLUSH richiede:
PrivilegioRELOAD
SUPER o SYSTEM_VARIABLES_ADMIN (per le operazioni sensibili in MySQL 8)
Esempio:
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.