Чо, пацаны, DevOps? Как вы заметили, в последнее время, я пытаюсь навести порядок с нашим железом. Есть, значит, у нас ряд серверов, где изредка бывает нехилая такая нагрузка, вешающая в этот момент базу данных напрочь. Естественно, после спада нагрузки БД самостоятельно не поднимается (и почему ни, ISP System, ни Hestia не предусмотрели подобный мониторинг в своих панелях?). Особенно неприятно бывает ночью, когда просо некому перезагрузить сервер / службу. И всё как-то руки не доходили разобраться с этой проблемой. А теперь дошли – держите скрипт вотчдога для MySQL, который будет самостоятельно запускать службу, если она вдруг сдохла
1. Создаём в директории /home/ файлик mysql-restart.sh со следующим содержимым:
#!/bin/bash if ! systemctl status mysql.service | grep 'running' > /dev/null 2>&1 then systemctl start mysql.service; echo "$(date +"%Y-%m-%d %H:%M:%S") MySQL restart event" >> /home/mysql-restart.log fi
2. Делаем файл исполняемым:
chmod 755 /home/mysql-restart.sh
3. Открываем планировщик заданий:
crontab -e
4. Добавляем в него строчку:
* * * * * /home/mysql-restart.sh >/dev/null 2>&1
Всё готово. Теперь, если вдруг служба MySQL отвалится, она будет перезапущена автоматически в течении минуты. А в файле /home/mysql-restart.log можно посмотреть дату и время каждого подобного инцидента.