Команди FLUSH для MySQL

У світі хостингу MySQL залишається одним із найважливіших компонентів для роботи динамічних веб-сайтів, інтернет-магазинів, систем керування вмістом (CMS) і платформ SaaS. Незалежно від того, чи керуєте ви кластером віртуального хостингу, інфраструктурою VPS або виділеними серверами для корпоративних клієнтів, контроль над внутрішніми операціями MySQL є надзвичайно важливим.

Одним з часто забутих, але потужних інструментів є команда FLUSH – набір адміністративних SQL-запитів, які дозволяють перезавантажувати привілеї, очищати журнали, скидати стани і забезпечувати узгодженість без перезапуску сервера.

Що таке FLUSH в MySQL?

Оператор FLUSH використовується для:

  • Очищення внутрішнього кешу

  • Перезавантаження конфігураційних файлів (наприклад, таблиць привілеїв)

  • Скидання інформації про стан

  • Змусити MySQL записати буферизовані дані на диск

Тільки користувачі з привілеєм RELOAD (або вищим, наприклад, SUPER) можуть виконувати більшість операцій FLUSH.

Загальні команди FLUSH

1. 🔐 FLUSH ПРИВІЛЕЇ

Перезавантажує привілеї користувача з таблиць привілеїв у базі даних mysql:

FLUSH PRIVILEGES;

Коли використовувати:

  • Після ручного редагування mysql.user або інших таблиць привілеїв.

  • Коли ви змінюєте доступ користувача за допомогою прямих операторів UPDATE замість GRANT.

2. FLUSH TABLES

Закриває всі відкриті таблиці і змушує відкрити їх заново. Корисно для обслуговування файлової системи або створення резервних копій.

FLUSH TABLES;

Ви також можете очистити певні таблиці:

FLUSH TABLES назва_таблиці [, назва_таблиці] ...;

Коли використовувати:

  • Перед виконанням резервного копіювання зовнішніми інструментами (наприклад, mysqldump –single-transaction).

  • Після великих за обсягом записів, які можуть перевантажити кеш таблиць.

3. FLUSH QUERY CACHE

Видаляє всі результати запитів з кешу запитів (якщо увімкнено):

FLUSH QUERY CACHE;

Примітка: кеш запитів застарілий і видалений в MySQL 8.0.

4. ЗМИТИ БАЛАНСИ

Закриває і знову відкриває всі файли журналів (загальний журнал, журнал помилок, бінарний журнал, журнал реле).

FLUSH LOGS;

Змиває певний тип журналів:

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

Коли використовувати:

  • Після ротації колод

  • Коли журнали переміщуються або архівуються

  • Для скидання журналів для налагодження або відповідності вимогам

5. FLUSH HOSTS

Скидає кеш хоста невдалих клієнтських з’єднань.

FLUSH HOSTS;

Коли використовувати:

  • При отриманні помилки:
    Host 'xxx' is blocked because of many connection errors

6. FLUSH STATUS

Обнуляє більшість змінних стану (не впливає на глобальні лічильники, такі як Uptime).

FLUSH STATUS;

Коли використовувати:

  • Перед бенчмаркінгом або тестуванням продуктивності.

  • Для отримання чистих показників за допомогою SHOW STATUS.

7. ОЧИСТИТИ ТАБЛИЦІ З БЛОКУВАННЯМ НА ЧИТАННЯ

Очищає і блокує всі таблиці, запобігаючи запису з інших сеансів.

ОЧИСТИТИ ТАБЛИЦІ З БЛОКУВАННЯМ НА ЧИТАННЯ;

Коли використовувати:

  • Для послідовного створення знімків (наприклад, за допомогою LVM або інструментів копіювання файлів).

  • Важливо: Завжди розблоковуйте вручну за допомогою UNLOCK TABLES;

8. FLUSH DES_KEY_FILE

Перезавантажує файли ключів DES, що використовуються у старих функціях DES_ENCRYPT()/DES_DECRYPT() (застарілі).

FLUSH DES_KEY_FILE;

9. FLUSH USER_RESOURCES

Скидає лічильники лімітів ресурсів на користувача (наприклад, MAX_QUERIES_PER_HOUR).

FLUSH USER_RESOURCES;

Коли використовувати:

  • Скидання в середині циклу для користувачів з обмеженими ресурсами.

Застарілі/видалені команди

  • FLUSH QUERY CACHE видалено в MySQL 8.0.

  • FLUSH DES_KEY_FILE є застарілою.

  • Розгляньте новіші альтернативи в MySQL 8.0, такі як RESET PERSIST.

Необхідні дозволи

Більшість операцій FLUSH вимагають:

  • Привілеї RELOAD

  • SUPER або SYSTEM_VARIABLES_ADMIN (для чутливих операцій в MySQL 8)

Приклад:

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

Висновок

Сімейство команд FLUSH має важливе значення для адміністративного контролю в MySQL. Незалежно від того, чи керуєте ви привілеями, журналами або станом кешу, розуміння того, як і коли використовувати FLUSH, допомагає підтримувати оптимальну продуктивність і надійність сервера без необхідності перезапуску. Використовуйте його з розумом і належними привілеями, особливо у виробничих середовищах.