Гайды

Боремся с зависающим MySQL

Чо, пацаны, 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 можно посмотреть дату и время каждого подобного инцидента.

Может заинтересовать

Популярное