Spec-Zone.ru › MariaDB

FLUSH

Синтаксис

FLUSH [NO_WRITE_TO_BINLOG | LOCAL]
    flush_option [, flush_option] ...

или при сбросе таблиц:

FLUSH [NO_WRITE_TO_BINLOG | LOCAL] TABLES [table_list]  [table_flush_option]

где table_list — список таблиц, разделённых , (запятыми).

Описание

Команда FLUSH очищает или перезагружает различные внутренние кэши, используемые MariaDB. Для выполнения FLUSH, необходимо иметь привилегию RELOAD. См. GRANT.

Команда RESET похожа на FLUSH. См. RESET.

Вы не можете выполнить команду FLUSH внутри сохранённой функции или триггера. Это разрешено внутри хранимой процедуры, если её не вызывает сохранённая функция или триггер. См. Ограничения на хранимые процедуры, Ограничения на хранимые функции и Ограничения на триггеры.

Если перечисленные таблицы являются представлением, будет выдано сообщение об ошибке, подобное следующему:

ERROR 1347 (HY000): 'test.v' is not BASE TABLE

По умолчанию команды FLUSH записываются в бинарный лог и будут реплицированы. Ключевое слово NO_WRITE_TO_BINLOG (LOCAL — псевдоним) гарантирует, что команда не будет записана в бинарный лог.



Различные варианты сброса:


Вариант Описание
CHANGED_PAGE_BITMAPS Только для XtraDB. Внутренняя команда, используемая для целей резервного копирования. См. таблицу Information Schema CHANGED_PAGE_BITMAPS.
CLIENT_STATISTICS Сброс статистики клиентов (см. SHOW CLIENT_STATISTICS).
DES_KEY_FILE Перезагружает файл ключа DES (указан с помощью опции запуска --des-key-file).
HOSTS Сброс кэша имён хостов (используется для преобразования ip в имена хостов и для разблокировки заблокированных хостов. См. max_connect_errors и performance_schema.host_cache
INDEX_STATISTICS Сброс статистики индексов (см. SHOW INDEX_STATISTICS).
[ERROR | ENGINE | GENERAL | SLOW | BINARY | RELAY] LOGS Закрывает и переоткрывает указанный тип лога или все типы логов, если не указано ничего. FLUSH RELAY LOGS [connection-name] можно использовать для сброса релейных логов для определенного подключения. В команде FLUSH может быть указано только одно подключение. См. Многоисточная репликация. FLUSH ENGINE LOGS удалит все ненужные Aria журналы переигрывания. FLUSH BINARY LOGS DELETE_DOMAIN_ID=(list-of-domains) можно использовать для удаления устаревших областей GTID из состояния бинарного лога сервера. Для этого ни одна группа событий из перечисленных областей GTID не может присутствовать в существующих файлах бинарного лога. Если некоторые все же существуют, то их необходимо удалить до выполнения этой команды. При успешном завершении команды также происходит перенос бинарного лога.
MASTER Устаревшая опция, используйте RESET MASTER вместо неё.
PRIVILEGES Перезагружает все привилегии из таблиц привилегий в базе данных mysql. Если сервер запущен с опцией --skip-grant-table, это снова активирует таблицы привилегий.
QUERY CACHE Дефрагментирует кэш запросов для лучшего использования памяти. Если вы хотите сбросить кэш запросов, можете сделать это с помощью RESET QUERY CACHE.
QUERY_RESPONSE_TIME См. плагин QUERY_RESPONSE_TIME.
SLAVE Устаревшая опция, используйте RESET REPLICA или RESET SLAVE вместо неё.
SSL Используется для динамической повторной инициализации контекста TLS сервера путём перезагрузки файлов, определённых несколькими переменными системы TLS. Дополнительную информацию см. в FLUSH SSL.
STATUS Сбрасывает все переменные состояния сервера, которые можно сбросить до 0. Не все переменные состояния глобального уровня поддерживают это, поэтому не все глобальные значения сбрасываются. Дополнительную информацию см. в FLUSH STATUS.
TABLE Закрывает указанные в качестве опций таблицы или все открытые таблицы, если список таблиц не был использован. Начиная с MariaDB 10.4.1, использование без списка таблиц закроет только неиспользуемые таблицы и таблицы, не заблокированные подключением FLUSH TABLES. Если нет заблокированных таблиц, FLUSH TABLES выполнится мгновенно и не вызовет ожиданий, так как он больше не ждёт использования таблиц. При предоставлении списка таблиц, начиная с MariaDB 10.4.1, сервер будет ждать окончания любых транзакций, использующих эти таблицы. Раньше FLUSH TABLES ожидал завершения только операторов.
TABLES То же, что и FLUSH TABLE.
TABLES ... FOR EXPORT Для таблиц InnoDB, сбрасывает изменения таблиц на диск, чтобы разрешить создание двоичных копий таблиц во время работы сервера. См. FLUSH TABLES ... FOR EXPORT для получения дополнительной информации.
TABLES WITH READ LOCK Закрывает все открытые таблицы. Новые таблицы могут быть открыты только с правами чтения до тех пор, пока не будет получено UNLOCK TABLES.
TABLES WITH READ LOCK AND DISABLE CHECKPOINT Как TABLES WITH READ LOCK, но также отключает все записи контрольных точек движками транзакционных таблиц. Это полезно при создании снимков всех таблиц на диске.
TABLE_STATISTICS Сброс статистики таблиц (см. SHOW TABLE_STATISTICS).
USER_RESOURCES Сбрасывает все ресурсы пользователей на час (см. настройки ресурсов на счёт пользователя). Это позволяет клиентам, которые исчерпали свои ресурсы, повторно подключаться.
USER_STATISTICS Сброс статистики пользователей (см. SHOW USER_STATISTICS).
USER_VARIABLES Сброс переменных пользователя (см. Пользовательские переменные).

Вы также можете использовать клиента mariadb-admin для сброса настроек. Используйте mariadb-admin --help для проверки поддерживаемых команд сброса.

FLUSH RELAY LOGS

FLUSH RELAY LOGS 'connection_name';

Совместимость с MySQL

MariaDB начиная с 10.7.0

Ключевое слово FOR CHANNEL было добавлено для совместимости с MySQL. Это идентично прямому использованию имени канала после FLUSH command.

Например, теперь можно использовать:

FLUSH RELAY LOGS FOR CHANNEL 'connection_name';

FLUSH STATUS

Переменные состояния сервера могут быть сброшены путём выполнения следующего:

FLUSH STATUS;

Глобальные переменные состояния, которые поддерживают FLUSH STATUS

Не все глобальные переменные состояния поддерживают сброс с помощью FLUSH STATUS. В настоящее время с помощью FLUSH STATUS сбрасываются следующие переменные состояния:

  • Прерванные клиенты
  • Прерванные соединения
  • Использование кэша бинарного лога на диске
  • Использование кэша бинарного лога
  • Использование кэша бинарного лога инструкций на диске
  • Использование кэша бинарного лога инструкций
  • Ошибки соединения при приёме
  • Внутренние ошибки соединения
  • Ошибки соединения из-за максимального количества подключений
  • Ошибки соединения по адресу клиента
  • Ошибки соединения при выборе
  • Ошибки соединения TCPWRAP
  • Созданные временные файлы
  • Ошибки обработки отложенных задач
  • Задержки записи
  • Проверка ограничений
  • Задержка записи ключей
  • Максимальное количество используемых подключений
  • Открытые библиотеки плагинов
  • Потерянные учётные записи Performance Schema
  • Потерянные экземпляры условий Performance Schema
  • Потерянные дайджесты Performance Schema
  • Потерянные дескрипторы файлов Performance Schema
  • Потерянные экземпляры файлов Performance Schema
  • Потерянные хосты Performance Schema
  • Потерянные блокировщики Performance Schema
  • Потерянные экземпляры мьютексов Performance Schema
  • Потерянные экземпляры блокировок чтения/записи Performance Schema
  • Потерянные атрибуты подключения сессии Performance Schema
  • Потерянные экземпляры сокетов Performance Schema
  • Потерянные классы стадий Performance Schema
  • Потерянные классы инструкций Performance Schema
  • Потерянные дескрипторы таблиц Performance Schema
  • Потерянные экземпляры таблиц Performance Schema
  • Потерянные экземпляры потоков Performance Schema
  • Потерянные пользователи Performance Schema
  • Попадания в кэш запросов
  • Добавления в кэш запросов
  • Удаления из кэша запросов из-за нехватки памяти
  • Не попавшие в кэш запросы
  • Мастер полусинхронной репликации: без времени
  • Мастер полусинхронной репликации: без транзакций
  • Мастер полусинхронной репликации: неудачи функций времени
  • Мастер полусинхронной репликации: ожидание позиции назад
  • Мастер полусинхронной репликации: с транзакциями
  • Транзакции, использующие несколько движков
  • Неудачные записи в журнал аудита сервера
  • Перезапрошенные транзакции Slave
  • Подозрительно долгие потоки запуска
  • SSL повторные переговоры при приёме
  • SSL приёмы
  • Попадания в кэш SSL обратного вызова
  • Подключения SSL клиентов
  • SSL повторные переговоры при подключении
  • Глубина проверки SSL контекста
  • Режим проверки SSL контекста
  • Завершённые SSL приёмы
  • Завершённые SSL подключения
  • Попадания в кэш SSL сессии
  • Промахи в кэше SSL сессии
  • Переполнения кэша SSL сессии
  • Размер кэша SSL сессий
  • Таймауты кэша SSL сессий
  • Повторно использованные SSL сессии
  • Использованные записи кэша SSL сессий
  • Попадания в кэш подзапросов
  • Промахи в кэше подзапросов
  • Немедленные блокировки таблиц
  • Ожидаемые блокировки таблиц
  • Максимальное использование страниц журнала TC
  • Ожидание страниц журнала TC
  • Транзакции внешнего движка GTID
  • Транзакции с несколькими движками

Различные применения команды FLUSH TABLES

Цель команды FLUSH TABLES

Команда FLUSH TABLES предназначена для очистки кэша открытых таблиц и кэша определений таблиц для неиспользуемых таблиц. Это освобождает память и дескрипторы файлов. Обычно это не требуется, так как кэши работают по принципу FIFO, но может быть полезно, если сервер по какой-то причине использует слишком много памяти.

Цель команды FLUSH TABLES с блокировкой чтения

Команда FLUSH TABLES с блокировкой чтения полезна, если требуется создать резервную копию некоторых таблиц. После выполнения этой команды все записи в таблицы блокируются, и все таблицы помечаются как «правильно закрытые» на диске. Таблицы по-прежнему могут использоваться для операций чтения.

Цель команды FLUSH TABLES table_list

Команда FLUSH TABLES table_list полезна, если требуется скопировать объект/файлы таблицы на сервер или с сервера. Данная команда блокирует новые подключения к таблице и ждёт, пока все пользователи перестанут использовать таблицу. Затем таблица удаляется из кэша определений и кэша таблиц.

Обратите внимание, что пользователю необходимо убедиться, что никто не обращается к таблице между выполнением команды и копированием таблицы на или с сервера. Это можно обеспечить с помощью команды LOCK TABLES.

Если в момент выполнения команды FLUSH TABLES какие-либо таблицы заблокированы текущим подключением, все заблокированные таблицы будут закрыты, затем переоткрыты и заблокированы заново до завершения выполнения FLUSH TABLES. Это позволяет копировать таблицу после завершения FLUSH TABLES, не выполняя записи в таблицу. В настоящее время это работает со большинством таблиц, за исключением InnoDB, так как InnoDB может выполнять фоновые очистки таблицы даже при блокировке записи.

Цель команды FLUSH TABLES table_list с блокировкой чтения

Команда FLUSH TABLES table_list с блокировкой чтения должна работать так же, как и предыдущая, но только перечисленные таблицы будут корректно закрыты. Однако на практике она работает аналогично команде FLUSH TABLES без блокировки чтения, поскольку команда FLUSH TABLES с блокировкой чтения всегда ждёт завершения всех операций записи из-за глобальной блокировки чтения. В будущем стоит рассмотреть возможность исправления этого, используя блокировки метаданных вместо глобальной блокировки чтения.

Реализация команд FLUSH TABLES в MariaDB 10.4.8 и выше

Реализация команды FLUSH TABLES

  • Освобождение памяти и дескрипторов файлов, которые не используются

Реализация команды FLUSH TABLES с блокировкой чтения

  • Заблокировать все таблицы для чтения только для простого резервного копирования старого стиля.
  • Все фоновые записи приостановлены, и таблицы помечены как закрытые.
  • Любое утверждение, требующее изменений в таблицах, не разрешено ни одному пользователю до UNLOCK TABLES.

Вместо использования FLUSH TABLE WITH READ LOCK в большинстве случаев следует использовать BACKUP STAGE BLOCK_COMMIT.

Реализация FLUSH TABLES table_list

  • Освободить память и дескрипторы файлов для таблиц, не используемых из списка таблиц.
  • Заблокировать указанные таблицы для чтения.
  • Подождать, пока не завершатся все трансляции, использующие какие-либо из указанных таблиц.
  • Подождать, пока все фоновые записи не будут приостановлены, а таблицы не будут помечены как закрытые.

Реализация FLUSH TABLES table_list FOR EXPORT

  • Освободить память и дескрипторы файлов для таблиц, не используемых из списка таблиц.
  • Заблокировать указанные таблицы для чтения.
  • Подождать, пока все фоновые записи не будут приостановлены, а таблицы не будут помечены как закрытые.
  • Проверить, поддерживают ли все таблицы FOR EXPORT
  • Изменения в этих таблицах не допускаются до UNLOCK TABLES

Это по существу такое же поведение, как и в старых версиях MariaDB, если сначала заблокировать таблицы, а затем выполнить FLUSH TABLES. Таблицы будут доступны для копирования до UNLOCK TABLES.

FLUSH SSL

MariaDB начиная с 10.4

Команда FLUSH SSL была впервые добавлена в MariaDB 10.4.

В MariaDB 10.4 и более поздних версиях команда FLUSH SSL может использоваться для динамической повторной инициализации контекста TLS сервера. Это наиболее полезно, если вам нужно заменить сертификат, который скоро истечёт, не перезапуская сервер.

Эта операция выполняется путем перезагрузки файлов, определенных следующими переменными системы TLS:

  • ssl_cert
  • ssl_key
  • ssl_ca
  • ssl_capath
  • ssl_crl
  • ssl_crlpath

Эти переменные системы TLS не являются динамическими, поэтому их значения нельзя изменить без перезапуска сервера.

Если вы хотите динамически повторно инициализировать контекст TLS сервера, вам необходимо изменить файлы сертификата и ключа в соответствующих путях, определённых этими переменными системы TLS, не изменяя сами значения переменных. См. MDEV-19341 для получения дополнительной информации.

Сокращение использования памяти

Для сброса некоторых глобальных кэшей, занимающих память, можно выполнить следующую команду:

FLUSH LOCAL HOSTS,
   QUERY CACHE, 
   TABLE_STATISTICS, 
   INDEX_STATISTICS, 
   USER_STATISTICS;
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/flush/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API