У світі хостингу MySQL залишається одним із найважливіших компонентів для роботи динамічних веб-сайтів, інтернет-магазинів, систем керування вмістом (CMS) і платформ SaaS. Незалежно від того, чи керуєте ви кластером віртуального хостингу, інфраструктурою VPS або виділеними серверами для корпоративних клієнтів, контроль над внутрішніми операціями MySQL є надзвичайно важливим.
Одним з часто забутих, але потужних інструментів є команда FLUSH – набір адміністративних SQL-запитів, які дозволяють перезавантажувати привілеї, очищати журнали, скидати стани і забезпечувати узгодженість без перезапуску сервера.
Оператор FLUSH використовується для:
Очищення внутрішнього кешу
Перезавантаження конфігураційних файлів (наприклад, таблиць привілеїв)
Скидання інформації про стан
Змусити MySQL записати буферизовані дані на диск
Тільки користувачі з привілеєм RELOAD (або вищим, наприклад, SUPER) можуть виконувати більшість операцій FLUSH.
Перезавантажує привілеї користувача з таблиць привілеїв у базі даних mysql:
Коли використовувати:
Після ручного редагування mysql.user або інших таблиць привілеїв.
Коли ви змінюєте доступ користувача за допомогою прямих операторів UPDATE замість GRANT.
Закриває всі відкриті таблиці і змушує відкрити їх заново. Корисно для обслуговування файлової системи або створення резервних копій.
Ви також можете очистити певні таблиці:
Коли використовувати:
Перед виконанням резервного копіювання зовнішніми інструментами (наприклад, mysqldump –single-transaction).
Після великих за обсягом записів, які можуть перевантажити кеш таблиць.
Видаляє всі результати запитів з кешу запитів (якщо увімкнено):
Примітка: кеш запитів застарілий і видалений в MySQL 8.0.
Закриває і знову відкриває всі файли журналів (загальний журнал, журнал помилок, бінарний журнал, журнал реле).
Змиває певний тип журналів:
FLUSH BINARY LOGS;
FLUSH ERROR LOGS;
FLUSH ENGINE LOGS;
FLUSH SLOW LOGS;
Коли використовувати:
Після ротації колод
Коли журнали переміщуються або архівуються
Для скидання журналів для налагодження або відповідності вимогам
Скидає кеш хоста невдалих клієнтських з’єднань.
Коли використовувати:
При отриманні помилки:Host 'xxx' is blocked because of many connection errors
Обнуляє більшість змінних стану (не впливає на глобальні лічильники, такі як Uptime).
Коли використовувати:
Перед бенчмаркінгом або тестуванням продуктивності.
Для отримання чистих показників за допомогою SHOW STATUS.
Очищає і блокує всі таблиці, запобігаючи запису з інших сеансів.
Коли використовувати:
Для послідовного створення знімків (наприклад, за допомогою LVM або інструментів копіювання файлів).
Важливо: Завжди розблоковуйте вручну за допомогою UNLOCK TABLES;
Перезавантажує файли ключів DES, що використовуються у старих функціях DES_ENCRYPT()/DES_DECRYPT() (застарілі).
Скидає лічильники лімітів ресурсів на користувача (наприклад, MAX_QUERIES_PER_HOUR).
Коли використовувати:
Скидання в середині циклу для користувачів з обмеженими ресурсами.
FLUSH QUERY CACHE видалено в MySQL 8.0.
FLUSH DES_KEY_FILE є застарілою.
Розгляньте новіші альтернативи в MySQL 8.0, такі як RESET PERSIST.
Більшість операцій FLUSH вимагають:
Привілеї RELOAD
SUPER або SYSTEM_VARIABLES_ADMIN (для чутливих операцій в MySQL 8)
Приклад:
Сімейство команд FLUSH має важливе значення для адміністративного контролю в MySQL. Незалежно від того, чи керуєте ви привілеями, журналами або станом кешу, розуміння того, як і коли використовувати FLUSH, допомагає підтримувати оптимальну продуктивність і надійність сервера без необхідності перезапуску. Використовуйте його з розумом і належними привілеями, особливо у виробничих середовищах.