Linux → Запуск MySQL-сервера после падений
Так уж вышло, что на одном из подконтрольных мне серверов, то ли от нехватки памяти, то ли от всплесков нагрузки, то ли от того и другого сразу, регулярно падает сервер БД MySQL. Где-то раз в неделю или две. Особенно нехорошо, когда владелец сайтов, размещённых на этом сервере, звонит в связи с этим рано утром или ночью, так что доктор прописал процесс подъема БД автоматизировать.
Первое решение нарисовалось при переписке с известным крутокодером. И имя этого решения monit, однако картина с ним принципиально не поменялась, периодические падения не закончились. Может быть чего-то в доках не дочитал, может руками кривыми конфиги редактировал, но не срослось. Причём в тестовых остановках мускула монит отрабатывал отлично, а в реальности, видимо, не всегда.
Недолго думая, было принято решение написать простой bash-скрипт и дёргать его кроном каждую минуту. Вот такой, собственно:
#!/bin/bash LOG=/var/log/mysql_restarter.log MYSQL_STATUS="$(sudo /usr/sbin/service mysql status | grep running)" if [ -z "$MYSQL_STATUS" ] then echo "$(date -R) :(" >> $LOG sudo /usr/sbin/service mysql start fi
После чего необходимо сделать файл со скриптом доступным на запуск и записать его выполнение в crontab от рута.
chmod a+x /path/to/mysql_restarter sudo crontab -e # и добавить такую строку * * * * * /path/to/mysql_restarter
И готово (ну и сервис cron тоже нужно будет перезапустить).
Комментарии