6.10 Обработка сигналов Unix в MySQL
В системах Unix и подобных ей, процесс может получать сигналы, отправленные ему системным пользователем или пользователем, которому принадлежит процесс. Сигналы могут быть отправлены с помощью команды kill. Некоторые интерпретаторы команд связывают определённые последовательности клавиш со сигналами, такие как Control+C для отправки сигнала SIGINT. В этом разделе описывается, как сервер MySQL и клиентские программы реагируют на сигналы.
Ответ сервера на сигналы
mysqld реагирует на сигналы следующим образом:
SIGTERMприводит к завершению работы сервера. Это аналогично выполнению инструкцииSHUTDOWN, без необходимости подключения к серверу (для завершения требуется учётная запись с правомSHUTDOWN).-
SIGHUPприводит к перезагрузке таблиц привилегий и очистке таблиц, логов, кэша потоков и кэша хостов. Эти действия аналогичны различным формам инструкцииFLUSH. Отправка сигнала позволяет выполнить операции очистки без подключения к серверу, что требует учётной записи MySQL с достаточными правами для этих операций.Это поведение устарело в MySQL 9.2.0 и более поздних версиях и может быть удалено в будущих версиях MySQL.
-
SIGUSR1приводит к очистке логов ошибок, общего запросов и логов медленных запросов. Одним из примененийSIGUSR1является реализация вращения логов без подключения к серверу, что требует учётной записи MySQL с достаточными правами для этих операций. Подробнее о вращении логов см. Раздел 7.4.6, «Обслуживание логов сервера».Ответ сервера на
SIGUSR1является подмножеством ответа наSIGHUP, что позволяет использоватьSIGUSR1в качестве более “лёгкого” сигнала, который очищает определённые логи без других эффектовSIGHUP, таких как очистка кэша потоков и кэша хостов, и без записи отчёта о состоянии в лог ошибок. SIGINTобычно игнорируется сервером. Запуск сервера с параметром--gdbустанавливает обработчик прерывания дляSIGINTв целях отладки. См. Раздел 7.9.1.4, «Отладка mysqld с помощью gdb».
Ответ клиента на сигналы
Клиентские программы MySQL реагируют на сигналы следующим образом:
Клиент mysql интерпретирует
SIGINT(обычно результат нажатия Control+C) как команду прервать текущую инструкцию, если она есть, или отменить любую частично введённую строку в противном случае. Это поведение можно отключить, используя опцию--sigint-ignoreдля игнорирования сигналовSIGINT.-
Клиентские программы, использующие библиотеку MySQL клиента, по умолчанию блокируют сигналы
SIGPIPE. Возможны следующие варианты:Клиент может установить свой собственный обработчик
SIGPIPE, чтобы переопределить поведение по умолчанию. См. .Клиенты могут предотвратить установку обработчиков
SIGPIPE, указав опциюCLIENT_IGNORE_SIGPIPEпри подключении. См. .
© 2025 Oracle
Licensed under the GPLv2 License.