Spec-Zone.ru › MySQL 9.2

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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/unix-signal-response.html

Spec-Zone.ru

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