Linux → Запуск MySQL-сервера после падений
Так уж вышло, что на одном из подконтрольных мне серверов, то ли от нехватки памяти, то ли от всплесков нагрузки, то ли от того и другого сразу, регулярно падает сервер БД MySQL. Где-то раз в неделю или две. Особенно нехорошо, когда владелец сайтов, размещённых на этом сервере, звонит в связи с этим рано утром или ночью, так что доктор прописал процесс подъема БД автоматизировать.
Первое решение нарисовалось при переписке с известным крутокодером. И имя этого решения monit, однако картина с ним принципиально не поменялась, периодические падения не закончились. Может быть чего-то в доках не дочитал, может руками кривыми конфиги редактировал, но не срослось. Причём в тестовых остановках мускула монит отрабатывал отлично, а в реальности, видимо, не всегда.
Недолго думая, было принято решение написать простой bash-скрипт и дёргать его кроном каждую минуту. Вот такой, собственно:
1 2 3 4 5 6 7 8 9 10 | #!/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 от рута.
1 2 3 4 5 6 7 | chmod a+x /path/to/mysql_restarter
sudo crontab -e
# и добавить такую строку
* * * * * /path/to/mysql_restarter
|
И готово (ну и сервис cron тоже нужно будет перезапустить).
Комментарии