MySQL FLUSH-Befehle

In der Welt des Hostings ist MySQL nach wie vor eine der wichtigsten Komponenten für den Betrieb von dynamischen Websites, E-Commerce-Shops, Content-Management-Systemen (CMS) und SaaS-Plattformen. Ganz gleich, ob Sie einen Shared-Hosting-Cluster, eine VPS-Infrastruktur oder dedizierte Server für Unternehmenskunden verwalten, die Kontrolle über die internen Abläufe von MySQL ist unerlässlich.

Ein oft übersehenes, aber mächtiges Werkzeug ist der FLUSH-Befehl – eine Sammlung administrativer SQL-Anweisungen, mit denen Sie Berechtigungen neu laden, Protokolle löschen, Zustände zurücksetzen und Konsistenz sicherstellen können, ohne den Server neu zu starten.

Was ist FLUSH in MySQL?

Die FLUSH-Anweisung wird verwendet, um:

  • Interne Caches zu löschen

  • Konfigurationsdateien (wie Berechtigungstabellen) neu zu laden

  • Statusinformationen zurückzusetzen

  • MySQL zu zwingen, gepufferte Daten auf die Festplatte zu schreiben

Nur Benutzer mit dem RELOAD-Recht (oder höher, wie SUPER) können die meisten FLUSH-Operationen ausführen.

Allgemeine FLUSH-Befehle

1. 🔐 PRIVILEGIEN FLUSHEN

Lädt Benutzerprivilegien aus den Berechtigungstabellen in der mysql-Datenbank zurück:

FLUSH PRIVILEGES;

Wann zu benutzen:

  • Nach dem manuellen Bearbeiten von mysql.user oder anderen Berechtigungstabellen.

  • Wenn Sie den Benutzerzugriff über direkte UPDATE-Anweisungen anstelle von GRANT ändern.

2. TABELLEN FLUSHEN

Schließt alle geöffneten Tabellen und zwingt sie, neu geöffnet zu werden. Nützlich bei der Wartung des Dateisystems oder bei Backups.

FLUSH TABLES;

Sie können auch bestimmte Tabellen flushen:

FLUSH TABLES table_name [, table_name] ...;

Wann zu benutzen:

  • Vor der Durchführung von Backups mit externen Tools (z.B. mysqldump –single-transaction).

  • Nach umfangreichen Schreibvorgängen, die den Tabellen-Cache überlasten können.

3. ABFRAGE-CACHE LEEREN

Entfernt alle Abfrageergebnisse aus dem Abfrage-Cache (falls aktiviert):

FLUSH QUERY CACHE;

Hinweis: Der Abfrage-Cache ist veraltet und wurde in MySQL 8.0 entfernt.

4. LOGS FLUSHEN

Schließt und öffnet alle Protokolldateien (allgemeines Protokoll, Fehlerprotokoll, binäres Protokoll, Relaisprotokoll).

FLUSH LOGS;

Oder flush einen bestimmten Typ:

FLUSH BINARY LOGS;
FLUSH ERROR LOGS;
FLUSH ENGINE LOGS;
FLUSH SLOW LOGS;

Wann zu verwenden:

  • Nach der Protokollrotation

  • Wenn Protokolle verschoben oder archiviert werden

  • Zum Zurücksetzen von Protokollen für Debugging oder Compliance

5. HOSTS FLUSHEN

Setzt den Host-Cache für fehlgeschlagene Client-Verbindungen zurück.

FLUSH HOSTS;

Wann zu verwenden:

  • Wenn Sie die Fehlermeldung erhalten:

    Host 'xxx' is blocked because of many connection errors

6. STATUS FLUSHEN

Setzt die meisten Statusvariablen auf Null zurück (hat keine Auswirkungen auf globale Zähler wie Uptime).

FLUSH STATUS;

Wann zu verwenden:

  • Vor einem Benchmarking oder Leistungstest.

  • Um saubere Metriken mit SHOW STATUSzu erhalten.

7. FLUSH TABLES WITH READ LOCK

Flusht und sperrt alle Tabellen und verhindert Schreibzugriffe von anderen Sitzungen.

FLUSH TABLES WITH READ LOCK;

Wann zu verwenden:

  • Für konsistente Snapshot-Backups (z.B. mit LVM oder Dateikopierwerkzeugen).

  • Wichtig: Heben Sie die Sperre immer manuell mit UNLOCK TABLES auf ;

8. FLUSH DES_KEY_FILE

Lädt die DES-Schlüsseldateien, die in den alten DES_ENCRYPT()/DES_DECRYPT() (Legacy) verwendet wurden, erneut.

FLUSH DES_KEY_FILE;

9. FLUSH USER_RESOURCES

Setzt die Zähler für die Ressourcenbeschränkungen pro Benutzer (wie MAX_QUERIES_PER_HOUR) zurück.

FLUSH USER_RESOURCES;

Wann zu verwenden:

  • Zurücksetzen in der Mitte des Zyklus für ressourcenbeschränkte Benutzer.

Veraltete/entfernte Befehle

  • FLUSH QUERY CACHE wurde in MySQL 8.0 entfernt.

  • FLUSH DES_KEY_FILE ist veraltet.

  • Ziehen Sie neuere Alternativen in MySQL 8.0 wie RESET PERSIST in Betracht.

Erforderliche Berechtigungen

Die meisten FLUSH-Operationen erfordern:

  • RELOAD-Berechtigung

  • SUPER oder SYSTEM_VARIABLES_ADMIN (für sensible Operationen in MySQL 8 )

Beispiel:

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

Schlussfolgerung

Die FLUSH-Befehlsfamilie ist für die administrative Kontrolle in MySQL unerlässlich. Ganz gleich, ob Sie Privilegien, Protokolle oder Cache-Zustände verwalten – wenn Sie wissen, wie und wann Sie FLUSH verwenden, können Sie eine optimale Serverleistung und -zuverlässigkeit aufrechterhalten, ohne einen Neustart durchführen zu müssen. Verwenden Sie den Befehl mit Bedacht und den richtigen Berechtigungen, insbesondere in Produktionsumgebungen.