Назад | Перейти на главную страницу

Как отслеживать и автоматически перезапускать mysql?

Я запускаю mysql на Debian.

Есть ли способ контролировать mysql и автоматически перезапускать его, если он зависает? Например, иногда сервер начинает использовать 100% процессора и начинает работать очень медленно. Если я перезапускаю mysql, все проясняется, и сервер начинает работать нормально, но я не всегда присутствую, чтобы перезапустить его вручную.

Есть ли способ контролировать MySQL, и если загрузка ЦП выше 95% в течение более 10 минут подряд, MySQL будет автоматически перезапущен

Вы можете сделать это с помощью контролировать. Например, чтобы предупредить и перезапустить mysql, предполагая, что вы запускаете monit в 60-секундном цикле:

check process mysqld
  with pidfile /var/run/mysqld.pid
if cpu usage > 99% for 10 cycles then alert
if cpu usage > 99% for 10 cycles then restart

monit очень гибок и может выполнять практически любой вид мониторинга процессов, памяти и т. д., о котором вы только можете подумать.

Вероятно, это можно было бы сделать с пс-наблюдатель тоже, но трудно заставить ps-watcher запоминать такое состояние и действовать в соответствии с ним. monit - правильный инструмент.

Попутно Франциско, я бы посоветовал не к перезапустите MySQL таким образом. Так как:

  1. Всплеск ЦП указывает на активность, а это означает, что его перезапуск в значительной степени повлияет на любую операцию, выполняемую БД.
  2. Использование ЦП до 100% - неплохая вещь, для этого и нужна его вычислительная мощность :-) Фактически, вы могли бы скорее смотреть на загрузку сервера, чем на использование ЦП в%, которое не давать какие-либо указания о том, что что-то идет не так.
  3. В зависимости от того, какой движок вы используете, неудачная транзакция может не воспроизводиться при перезапуске, что означает, что вы потеряете некоторые из них.

С учетом сказанного, вы можете искать:

  1. "Хорошо" ли настроен MySQL для сервера; например, достаточно ли места для размера базы данных и выполняемых операций?
  2. Существуют ли другие службы, вызывающие эту нагрузку, и если да, то почему?
  3. Наконец, если это «замедляет» работу других служб на сервере, вам следует подумать о перебалансировке ресурсов для каждой службы, чтобы вычислительная мощность сервера распределялась между всеми службами.

Я считаю, что ты ищешь и Auto Nice Daemon.