Polecenia FLUSH MySQL

W świecie hostingu, MySQL pozostaje jednym z najważniejszych komponentów do zasilania dynamicznych stron internetowych, sklepów e-commerce, systemów zarządzania treścią (CMS) oraz platform SaaS. Niezależnie od tego, czy zarządzasz klastrem hostingu współdzielonego, infrastrukturą VPS, czy serwerami dedykowanymi dla klientów korporacyjnych, kontrola nad wewnętrznymi operacjami MySQL jest niezbędna.

Jednym z często pomijanych, ale potężnych narzędzi jest polecenie FLUSH — zbiór administracyjnych instrukcji SQL, które pozwalają na przeładowanie uprawnień, czyszczenie logów, resetowanie stanów i zapewnienie spójności bez ponownego uruchamiania serwera.

Czym jest FLUSH w MySQL?

Instrukcja FLUSH jest używana do:

  • Czyszczenia wewnętrznych pamięci podręcznych

  • Przeładowania plików konfiguracyjnych (jak tabele uprawnień)

  • Resetowania informacji o stanie

  • Wymuszenia, aby MySQL zapisał buforowane dane na dysku

Tylko użytkownicy z uprawnieniem RELOAD (lub wyższym, jak SUPER) mogą wykonywać większość operacji FLUSH.

Typowe polecenia FLUSH

1. 🔐 FLUSH PRIVILEGES

Przeładowuje uprawnienia użytkowników z tabel uprawnień w bazie danych mysql:

FLUSH PRIVILEGES;

Kiedy używać:

  • Po ręcznej edycji mysql.user lub innych tabel uprawnień.

  • Gdy zmieniasz dostęp użytkownika za pomocą bezpośrednich instrukcji UPDATE zamiast GRANT.

2.  FLUSH TABLES

Zamyka wszystkie otwarte tabele i wymusza ich ponowne otwarcie. Przydatne w konserwacji systemu plików lub kopiach zapasowych.

FLUSH TABLES;

Możesz również wyczyścić konkretne tabele:

FLUSH TABLES table_name [, table_name] ...;

Kiedy używać:

  • Przed wykonaniem kopii zapasowych za pomocą zewnętrznych narzędzi (np. mysqldump –single-transaction).

  • Po dużych zapisach, które mogą przeciążyć pamięć podręczną tabeli.

3.  FLUSH QUERY CACHE

Usuwa wszystkie wyniki zapytań z pamięci podręcznej zapytań (jeśli jest włączona):

FLUSH QUERY CACHE;

Uwaga: Pamięć podręczna zapytań jest przestarzała i usunięta w MySQL 8.0.

4.  FLUSH LOGS

Zamyka i ponownie otwiera wszystkie pliki dziennika (dziennik ogólny, dziennik błędów, dziennik binarny, dziennik relay).

FLUSH LOGS;

Lub wyczyść konkretny typ:

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

Kiedy używać:

  • Po rotacji logów

  • Gdy logi są przenoszone lub archiwizowane

  • Aby zresetować logi do debugowania lub zgodności

5. FLUSH HOSTS

Resetuje pamięć podręczną hostów nieudanych połączeń klientów.

FLUSH HOSTS;

Kiedy używać:

  • Gdy otrzymujesz błąd:
    Host 'xxx' is blocked because of many connection errors

6. FLUSH STATUS

Resetuje większość zmiennych stanu do zera (nie wpływa na globalne liczniki, takie jak Uptime).

FLUSH STATUS;

Kiedy używać:

  • Przed testowaniem wydajności lub benchmarkingiem.

  • Aby uzyskać czyste metryki z SHOW STATUS.

7. FLUSH TABLES WITH READ LOCK

Wyczyści i zablokuje wszystkie tabele, uniemożliwiając zapisy z innych sesji.

FLUSH TABLES WITH READ LOCK;

Kiedy używać:

  • Do tworzenia spójnych kopii zapasowych (np. z narzędziami LVM lub kopiującymi pliki).

  • Ważne: Zawsze odblokuj ręcznie za pomocą UNLOCK TABLES;

8. FLUSH DES_KEY_FILE

Przeładowuje pliki kluczy DES używane w starych DES_ENCRYPT()/DES_DECRYPT() (legacy).

FLUSH DES_KEY_FILE;

9.  FLUSH USER_RESOURCES

Resetuje limity zasobów dla użytkowników (jak liczniki MAX_QUERIES_PER_HOUR).

FLUSH USER_RESOURCES;

Kiedy używać:

  • Reset w połowie cyklu dla użytkowników z ograniczonymi zasobami.

Przestarzałe/usunięte polecenia

  • FLUSH QUERY CACHE jest usunięte w MySQL 8.0.

  • FLUSH DES_KEY_FILE jest przestarzałe.

  • Rozważ nowsze alternatywy w MySQL 8.0, takie jak RESET PERSIST.

Wymagane uprawnienia

Większość operacji FLUSH wymaga:

  • RELOAD uprawnienia

  • SUPER lub SYSTEM_VARIABLES_ADMIN (dla wrażliwych operacji w MySQL 8+)

Przykład:

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

Podsumowanie

Rodzina poleceń FLUSH jest niezbędna do administracyjnej kontroli w MySQL. Niezależnie od tego, czy zarządzasz uprawnieniami, logami, czy stanami pamięci podręcznej, zrozumienie, jak i kiedy używać FLUSH, pomaga utrzymać optymalną wydajność i niezawodność serwera bez konieczności ponownego uruchamiania. Używaj go mądrze z odpowiednimi uprawnieniami, szczególnie w środowiskach produkcyjnych.