В мире хостинга 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() (legacy).
Сбрасывает счетчики ограничений ресурсов для каждого пользователя (например, 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, помогает поддерживать оптимальную производительность и надежность сервера, не требуя его перезапуска. Используйте ее с умом и соответствующими привилегиями, особенно в производственных средах.