6.10 Обработка сигналов Unix в MySQL
В системах Unix и подобных ей, процесс может получать сигналы, отправленные ему системным аккаунтом или аккаунтом, владеющим процессом. Сигналы могут быть отправлены с помощью команды kill. Некоторые интерпретаторы команд связывают определённые последовательности клавиш с сигналами, такие как Control+C для отправки сигнала SIGINT. Этот раздел описывает, как сервер MySQL и клиентские программы реагируют на сигналы.
Ответ сервера на сигналы
mysqld отвечает на сигналы следующим образом:
SIGTERMприводит к завершению работы сервера. Это подобно выполнению оператораSHUTDOWNбез подключения к серверу (для чего требуется учётная запись с правомSHUTDOWN).SIGHUPприводит к перезагрузке таблиц разрешений и очистке таблиц, логов, кэша потоков и кэша хостов. Эти действия аналогичны различным формам оператораFLUSH. Отправка сигнала позволяет выполнить эти операции без подключения к серверу, что требует 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.