15.7.8.3 Операция FLUSH
FLUSH [NO_WRITE_TO_BINLOG | LOCAL] {
flush_option [, flush_option] ...
| tables_option
}
flush_option: {
BINARY LOGS
| ENGINE LOGS
| ERROR LOGS
| GENERAL LOGS
| LOGS
| PRIVILEGES
| OPTIMIZER_COSTS
| RELAY LOGS [FOR CHANNEL channel]
| SLOW LOGS
| STATUS
| USER_RESOURCES
}
tables_option: {
table_synonym
| table_synonym tbl_name [, tbl_name] ...
| table_synonym WITH READ LOCK
| table_synonym tbl_name [, tbl_name] ... WITH READ LOCK
| table_synonym tbl_name [, tbl_name] ... FOR EXPORT
}
table_synonym: {
TABLE
| TABLES
}
Операция FLUSH имеет несколько вариантов, которые очищают или перезагружают различные внутренние кэши, сбрасывают таблицы или приобретают блокировки. Для каждой операции FLUSH требуются привилегии, указанные в её описании.
Невозможно выполнить операцию FLUSH внутри хранимых функций или триггеров. Однако, вы можете использовать FLUSH в хранимых процедурах, если они не вызываются из хранимых функций или триггеров. См. Раздел 27.8, «Ограничения на хранимые программы».
По умолчанию сервер записывает операцию FLUSH в двоичный журнал, чтобы она реплицировалась на реплики. Для подавления записи в журнал укажите необязательное ключевое слово NO_WRITE_TO_BINLOG или его псевдоним LOCAL.
FLUSH LOGS, FLUSH BINARY LOGS, FLUSH TABLES WITH READ LOCK (с перечнем таблиц или без него) и FLUSH
TABLES в любом случае не записываются в двоичный журнал, потому что их репликация на реплику может вызвать проблемы.tbl_name ... FOR
EXPORT
Операция FLUSH вызывает неявное подтверждение. См. Раздел 15.3.3, «Операции, вызывающие неявное подтверждение».
Утилита mysqladmin предоставляет интерфейс командной строки для некоторых операций flush, используя команды, такие как flush-logs, flush-privileges, flush-status и flush-tables. См. Раздел 6.5.2, «mysqladmin — Программа администрирования MySQL-сервера».
Отправка сигнала SIGHUP или SIGUSR1 на сервер вызывает несколько операций сброса, аналогичных различным формам операции FLUSH. Сигналы могут быть отправлены учетной записью системы root или учетной записью системы, владеющей процессом сервера. Это позволяет выполнять операции flush без подключения к серверу, что требует учетной записи MySQL с привилегиями, достаточными для этих операций. См. Раздел 6.10, «Обработка Unix-сигналов в MySQL».
Операция RESET аналогична операции FLUSH. См. Раздел 15.7.8.6, «Операция RESET», для получения информации об использовании RESET с репликацией.
В следующем списке описаны допустимые значения оператора FLUSH flush_option. Для получения описаний допустимых значений tables_option см. Синтаксис FLUSH TABLES.
-
Закрывает и вновь открывает любой файл бинарного журнала, в который сервер записывает данные. Если включена запись в бинарный журнал, порядковый номер файла бинарного журнала увеличивается на единицу по отношению к предыдущему файлу.
Для выполнения этой операции требуется привилегия
RELOAD. -
Закрывает и вновь открывает любые очищаемые журналы установленных движков хранения. Это приводит к тому, что
InnoDBочищает свои журналы на диске.Для выполнения этой операции требуется привилегия
RELOAD. -
Закрывает и вновь открывает любой файл журнала ошибок, в который сервер записывает данные.
Для выполнения этой операции требуется привилегия
RELOAD. -
Закрывает и вновь открывает любой файл журнала общих запросов, в который сервер записывает данные.
Для выполнения этой операции требуется привилегия
RELOAD.Эта операция не влияет на таблицы, используемые для журнала общих запросов (см. Раздел 7.4.1, «Выбор мест вывода журнала общих запросов и журнала медленных запросов»).
-
Закрывает и вновь открывает любой файл журнала, в который сервер записывает данные.
Для выполнения этой операции требуется привилегия
RELOAD.Эффект этой операции эквивалентен комбинированному эффекту этих операций:
FLUSH BINARY LOGS FLUSH ENGINE LOGS FLUSH ERROR LOGS FLUSH GENERAL LOGS FLUSH RELAY LOGS FLUSH SLOW LOGS
-
Перечитывает таблицы модели затрат, чтобы оптимизатор начал использовать текущие оценки затрат, хранящиеся в них.
Для выполнения этой операции требуется привилегия
FLUSH_OPTIMIZER_COSTSилиRELOAD.Сервер записывает предупреждение в журнал ошибок для любых нераспознанных записей таблицы модели затрат. Подробности о этих таблицах см. в разделе 10.9.5, «Модель затрат оптимизатора». Эта операция затрагивает только сеансы, которые начинаются после сброса. Существующие сеансы продолжают использовать оценки затрат, актуальные на момент их начала.
-
Перечитывает привилегии из таблиц предоставления в схеме системы
mysql. В рамках этой операции сервер читает таблицуglobal_grants, содержащую динамические назначения привилегий, и регистрирует любые не зарегистрированные привилегии, найденные в ней.Перезагрузка таблиц предоставления необходима для активации обновлений привилегий MySQL и пользователей только в том случае, если вы вносите такие изменения непосредственно в таблицы предоставления; она не требуется для операций управления учетными записями, таких как
GRANTилиREVOKE, которые вступают в силу немедленно. Более подробную информацию см. в разделе 8.2.13, «Когда изменения привилегий вступают в силу».Для выполнения этой операции требуется привилегия
RELOADилиFLUSH_PRIVILEGES.Если параметр
--skip-grant-tablesбыл указан при запуске сервера для отключения системы привилегий MySQL,FLUSH PRIVILEGESпредоставляет способ включить систему привилегий во время выполнения.Сбрасывает отслеживание неудачных попыток входа (или включает его, если сервер был запущен с
--skip-grant-tables) и разблокирует любые временно заблокированные учетные записи. См. раздел 8.2.15, «Управление паролями».Освобождает кэш памяти, кэшированный сервером в результате выполнения
GRANT,CREATE USER,CREATE SERVERиINSTALL PLUGINкоманд. Эта память не освобождается соответствующимиREVOKE,DROP USER,DROP SERVERиUNINSTALL PLUGINкомандами, поэтому для сервера, выполняющего многочисленные экземпляры команд, вызывающих кэширование, наблюдается увеличение использования кэшированной памяти, если оно не освобождается с помощьюFLUSH PRIVILEGES.Очищает кэш в оперативной памяти, используемый плагином аутентификации
caching_sha2_password. См. Операция кэширования для плагина аутентификации SHA-2. -
FLUSH RELAY LOGS [FOR CHANNELchannel]Закрывает и вновь открывает любой файл релейного журнала, в который сервер записывает данные. Если включена репликация, порядковый номер файла релейного журнала увеличивается на единицу по отношению к предыдущему файлу.
Для выполнения этой операции требуется привилегия
RELOAD.Оператор
FOR CHANNELпозволяет указать, к какому каналу репликации применяется операция. ВыполнитеchannelFLUSH RELAY LOGS FOR CHANNEL, чтобы очистить релейный журнал для определенного канала репликации. Если канал не указан и дополнительных каналов репликации нет, операция применяется к стандартному каналу. Если канал не указан и существуют несколько каналов репликации, операция применяется ко всем каналам репликации. Для получения дополнительной информации см. раздел 19.2.2, «Каналы репликации».channel -
Закрывает и вновь открывает любой файл журнала медленных запросов, в который сервер записывает данные.
Для выполнения этой операции требуется привилегия
RELOAD.Эта операция не влияет на таблицы, используемые для журнала медленных запросов (см. раздел 7.4.1, «Выбор мест вывода журнала общих запросов и журнала медленных запросов»).
-
Очищает индикаторы состояния.
Эта операция добавляет значения переменных состояния сеанса текущей нити к глобальным значениям и сбрасывает значения сеанса до нуля. Некоторые глобальные переменные также могут быть сброшены до нуля. Она также сбрасывает счетчики кэшей ключей (по умолчанию и именованные) до нуля и устанавливает
Max_used_connectionsв текущее количество открытых подключений. Эта информация может быть полезна при отладке запроса. См. раздел 1.6, «Как сообщать об ошибках или проблемах».FLUSH STATUSне зависит отread_onlyилиsuper_read_onlyи всегда записывается в бинарный журнал.Для выполнения этой операции требуется привилегия
FLUSH_STATUSилиRELOAD. -
Сбрасывает все показатели ресурсов пользователей за час до нуля.
Для выполнения этой операции требуется привилегия
FLUSH_USER_RESOURCESилиRELOAD.Сброс показателей ресурсов позволяет клиентам, которые достигли своих часовых лимитов подключений, запросов или обновлений, сразу же возобновить работу.
FLUSH USER_RESOURCESне применяется к ограничению максимального одновременного количества подключений, которое контролируется системной переменнойmax_user_connections. См. раздел 8.2.21, «Установка лимитов ресурсов учетной записи».
Синтаксис FLUSH TABLES
FLUSH TABLES очищает таблицы и, в зависимости от используемого варианта, получает блокировки. Любой TABLES вариант, используемый в операторе FLUSH, должен быть единственным использованным вариантом. FLUSH
TABLE является синонимом для FLUSH
TABLES.
Описания здесь, указывающие на очистку таблиц закрытием, применяются по-разному для InnoDB, которая очищает содержимое таблиц на диске, но оставляет их открытыми. Это по-прежнему позволяет копировать файлы таблиц, пока таблицы открыты, при условии, что другие действия не изменяют их.
-
Закрывает все открытые таблицы, принудительно закрывает все используемые таблицы и очищает кэш подготовленных запросов.
Для выполнения этой операции требуется привилегия
FLUSH_TABLESилиRELOAD.Сведения о кэшировании подготовленных запросов см. в разделе 10.10.3, «Кэширование подготовленных запросов и хранимых процедур».
Операция
FLUSH TABLESзапрещена при активномLOCK TABLES ... READ. Для сброса и блокировки таблиц используйтеFLUSH TABLESвместо этого.tbl_name... WITH READ LOCK -
FLUSH TABLEStbl_name[,tbl_name] ...При указании одного или нескольких имен таблиц, разделенных запятыми, эта операция подобна
FLUSH TABLES, за исключением того, что сервер очищает только указанные таблицы. Если указанной таблицы не существует, ошибка не возникает.Для выполнения этой операции требуется привилегия
FLUSH_TABLESилиRELOAD. -
Закрывает все открытые таблицы и блокирует все таблицы всех баз данных глобальной блокировкой для чтения.
Для выполнения этой операции требуется привилегия
FLUSH_TABLESилиRELOAD.Эта операция является очень удобным способом создания резервных копий, если у вас есть файловая система, такая как Veritas или ZFS, которая может создавать моментальные снимки во времени. Используйте
UNLOCK TABLESдля снятия блокировки.FLUSH TABLES WITH READ LOCKприобретает глобальную блокировку для чтения, а не блокировку таблиц, поэтому она не подчиняется поведениюLOCK TABLESиUNLOCK TABLESотносительно блокировки таблиц и неявных подтверждений:UNLOCK TABLESнеявным образом подтверждает любой активный транзакцию только если какие-либо таблицы в данный момент заблокированы с помощьюLOCK TABLES. Подтверждение не происходит дляUNLOCK TABLESпослеFLUSH TABLES WITH READ LOCK, поскольку последнее утверждение не приобретает блокировки таблиц.Начатая транзакция приводит к освобождению блокировок таблиц, полученных с помощью
LOCK TABLES, как если бы вы выполнилиUNLOCK TABLES. Начало транзакции не освобождает глобальную блокировку для чтения, приобретенную с помощьюFLUSH TABLES WITH READ LOCK.
FLUSH TABLES WITH READ LOCKне препятствует серверу вставке строк в таблицы журнала (см. раздел 7.4.1, «Выбор назначения вывода журнала запросов и журнала медленных запросов»). -
FLUSH TABLEStbl_name[,tbl_name] ... WITH READ LOCKОчищает и приобретает блокировки для чтения для указанных таблиц.
Для выполнения этой операции требуется привилегия
FLUSH_TABLESилиRELOAD. Поскольку она приобретает блокировки таблиц, она также требует привилегииLOCK TABLESдля каждой таблицы.Операция сначала приобретает эксклюзивные метаданные блокировки для таблиц, поэтому она ожидает завершения транзакций, которые имеют эти таблицы открытыми. Затем операция очищает таблицы из кэша таблиц, повторно открывает таблицы, приобретает блокировки таблиц (как
LOCK TABLES ... READ), и сменяет эксклюзивные метаданные блокировки на совместные. После того, как операция приобретает блокировки и сменяет метаданные блокировки на совместные, другие сеансы могут читать, но не изменять таблицы.Эта операция применима только к существующим базовым (не-
TEMPORARY)) таблицам. Если имя относится к базовой таблице, эта таблица используется. Если оно относится кTEMPORARYтаблице, она игнорируется. Если имя относится к представлению, возникает ошибка. В противном случае возникает ошибка.Используйте
UNLOCK TABLESдля снятия блокировок,LOCK TABLESдля снятия блокировок и приобретения других блокировок илиSTART TRANSACTIONдля снятия блокировок и начала новой транзакции.Этот вариант
FLUSH TABLESпозволяет очищать и блокировать таблицы в одной операции. Это обходное решение ограничения, чтоFLUSH TABLESне допускается при активномLOCK TABLES ... READ.Эта операция не выполняет неявное
UNLOCK TABLES, поэтому возникает ошибка, если вы выполните операцию, когда есть какие-либо активныеLOCK TABLESили используете ее второй раз, не сняв предварительно приобретенные блокировки.Если очищенная таблица была открыта с помощью
HANDLER, обработчик неявным образом очищается и теряет свою позицию.
-
FLUSH TABLEStbl_name[,tbl_name] ... FOR EXPORTЭтот
FLUSH TABLESвариант применяется кInnoDBтаблицам. Он гарантирует, что изменения в именованных таблицах были сохранены на диске, чтобы можно было создать двоичные копии таблиц во время работы сервера.Для выполнения этой операции требуется
FLUSH_TABLESилиRELOADпривилегия. Поскольку она приобретает блокировки таблиц в подготовке к экспорту, она также требуетLOCK TABLESиSELECTпривилегий для каждой таблицы.Операция работает следующим образом:
Она приобретает общие метаданные блокировки для именованных таблиц. Операция блокируется до тех пор, пока другие сессии имеют активные транзакции, которые изменили эти таблицы или удерживают блокировки на них. Когда блокировки приобретены, операция блокирует транзакции, которые пытаются обновить таблицы, но разрешает продолжать чтение.
Она проверяет, поддерживают ли все движки хранения для таблиц
FOR EXPORT. Если нет, возникает ошибка, и операция завершается неудачно.Операция уведомляет движок хранения для каждой таблицы, чтобы сделать таблицу готовой к экспорту. Движок хранения должен гарантировать, что все ожидающие изменения запишутся на диск.
Операция переводит сеанс в режим блокировки таблиц, чтобы ранее приобретенные блокировки метаданных не были освобождены при завершении операции
FOR EXPORT.
Эта операция применяется только к существующим базовым (не-
TEMPORARY) таблицам. Если имя относится к базовой таблице, эта таблица используется. Если имя относится кTEMPORARYтаблице, она игнорируется. Если имя относится к представлению, возникает ошибка. В противном случае возникает ошибка.InnoDBподдерживаетFOR EXPORTдля таблиц, у которых есть свой файл (то есть, таблиц, созданных с включенным параметромinnodb_file_per_table).InnoDBгарантирует, что при уведомлении от операцииFOR EXPORTвсе изменения записаны на диск. Это позволяет создать двоичную копию содержимого таблицы, пока операцияFOR EXPORTактивна, поскольку файл.ibdсогласован с транзакциями и может быть скопирован во время работы сервера.FOR EXPORTне применяется кInnoDBфайлам системного табличного пространства или кInnoDBтаблицам сFULLTEXTиндексами.FLUSH TABLES ...FOR EXPORTподдерживается для разбиениыхInnoDBтаблиц.При уведомлении от операции
FOR EXPORT,InnoDBзаписывает на диск определенные виды данных, которые обычно хранятся в памяти или в отдельных буферах на диске за пределами файлов табличного пространства. Для каждой таблицыInnoDBтакже создает файл с именемв той же директории базы данных, что и таблица. Файлtable_name.cfg.cfgсодержит метаданные, необходимые для повторного импорта файлов табличного пространства позже, на том же или другом сервере.Когда операция
FOR EXPORTзавершается,InnoDBзаписала все данные в файлы таблицы. Все записи объединяются перед записью. В этот момент таблицы заблокированы и неактивны: таблицы находятся в согласованном с транзакциями состоянии на диске, и вы можете скопировать файлы табличного пространства.ibdвместе с соответствующими файлами.cfg, чтобы получить согласованный снимок этих таблиц.Для процедуры повторного импорта скопированных данных таблиц в экземпляр MySQL см. Раздел 17.6.1.3, «Импорт таблиц InnoDB».
После завершения работы с таблицами используйте
UNLOCK TABLESдля освобождения блокировок,LOCK TABLESдля освобождения блокировок и приобретения других блокировок илиSTART TRANSACTIONдля освобождения блокировок и начала новой транзакции.Пока любой из этих операторов активен в сеансе, попытки использовать
FLUSH TABLES ... FOR EXPORTприведут к ошибке:FLUSH TABLES ... WITH READ LOCK FLUSH TABLES ... FOR EXPORT LOCK TABLES ... READ LOCK TABLES ... WRITE
Пока
FLUSH TABLES ... FOR EXPORTактивна в сеансе, попытки использовать любой из этих операторов приведут к ошибке:FLUSH TABLES WITH READ LOCK FLUSH TABLES ... WITH READ LOCK FLUSH TABLES ... FOR EXPORT
© 2025 Oracle
Licensed under the GPLv2 License.