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 тоже нужно будет перезапустить).

Комментарии

0 комментариев Написать что-нибудь
Или войдите, чтобы не заполнять форму:
Адрес электронной почты нигде не отображается, необходим только для обратной связи.
Напрограммировано на Go 1.23.2, версия движка 7738e0f