15.7.8.8 Заявление RESTART
RESTART
Это утверждение останавливает и перезапускает сервер MySQL. Оно требует привилегии SHUTDOWN.
Одно из применений RESTART — это случаи, когда нет возможности или неудобно получить доступ к командной строке сервера MySQL на хосте сервера для его перезапуска. Например, SET
PERSIST_ONLY может быть использован во время выполнения для внесения изменений в системные переменные, которые можно задать только при запуске сервера, но для вступления этих изменений в силу необходимо перезапустить сервер. Утверждение RESTART предоставляет способ сделать это внутри сессий клиентов, без необходимости доступа к командной строке на хосте сервера.
После выполнения утверждения RESTART клиент может ожидать потери текущего соединения. Если автоматическое переподключение включено, соединение восстанавливается после перезапуска сервера. В противном случае соединение необходимо восстановить вручную.
Успешная операция RESTART требует, чтобы mysqld выполнялся в среде, где доступен процесс мониторинга для обнаружения завершения работы сервера, произведённого в целях перезапуска:
Эти платформы предоставляют необходимую поддержку мониторинга для утверждения RESTART:
Windows, когда mysqld запускается как служба Windows или автономно. (mysqld выполняет форкинг, и один процесс действует как монитор для другого, который выступает в качестве сервера.)
Системы Unix и Unix-подобные системы, которые используют systemd или mysqld_safe для управления mysqld.
Для настройки среды мониторинга, в которой mysqld включает утверждение RESTART:
Установите переменную среды
MYSQLD_PARENT_PIDв значение идентификатора процесса (PID) процесса, который запускает mysqld, перед запуском mysqld.Когда mysqld выполняет завершение из-за использования утверждения
RESTART, он возвращает код выхода 16.Когда процесс мониторинга обнаруживает код выхода 16, он запускает mysqld снова. В противном случае он завершается.
Вот минимальный пример, реализованный в оболочке bash:
#!/bin/bash
export MYSQLD_PARENT_PID=$$
export MYSQLD_RESTART_EXIT=16
while true ; do
bin/mysqld mysqld options here
if [ $? -ne $MYSQLD_RESTART_EXIT ]; then
break
fi
done
В Windows, форкинг, используемый для реализации RESTART, затрудняет определение процесса сервера для подключения к нему для отладки. Чтобы устранить это, запуск сервера с --gdb подавляет форкинг, помимо других действий, выполняемых для настройки среды отладки. В неотладочных настройках --no-monitor может использоваться исключительно для подавления форкинга процесса монитора. Для сервера, запущенного с --gdb или --no-monitor, выполнение RESTART приводит к простому завершению сервера без перезапуска.
Переменная состояния Com_restart отслеживает количество утверждений RESTART. Поскольку переменные состояния инициализируются для каждого запуска сервера и не сохраняются при перезапуске, Com_restart обычно имеет значение ноль, но может быть отличным от нуля, если утверждения RESTART были выполнены, но завершились неудачей.
© 2025 Oracle
Licensed under the GPLv2 License.