Автоматический перезапуск mysql и apache при падении

02 июня 2017

Иногда из-за нестабильности работы MySQL по тем или иным причинам, работа сайта может подвергаться опасности. Это неприятно сказывается на посещаемости, индексации поисковыми система и доставляет неудобство посетителям. Постоянно отслеживать работу сервиса вручную — задача трудоемкая и даже невыполнимая. Если такое происходит с вашим сервером может помочь автоматическая проверка и рестарт MySQL и Apache.

Создадим файл dbmonitor.sh с таким содержимым:

#!/bin/bash
# APACHE SECTION
RESTART="/etc/init.d/apache2 restart"
PGREP="/usr/bin/pgrep"
HTTPD="apache"
$PGREP ${HTTPD}
if [ $? -ne 0 ]; then
$RESTART
fi
# MYSQL SECTION
RESTARTM="/etc/init.d/mysql restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if [ $? -ne 0 ]; then
$RESTART
$RESTARTM
fi

Скрипт проверяет работоспособность сервисов, и в случае их падения инициирует перезапуск.

Даем скрипту права на выполнение:

chmod +x dbmonitor.sh

Теперь поставим скрипт на автоматическое выполнение в cron. Для этого, в файле /etc/crontab

nano /etc/crontab

в конец добавим строку:

*/1 * * * * /bin/sh /file_catalog/dbmonitor.sh

где file_catalog — каталог, в котором находится файл dbmonitor.sh
и сохраним файл.

Теперь каждую минуту на сервере будет запускаться скрипт, проверять работу сервисов, и автоматически их перезапускать при необходимости.

Конечно, решение не самое лучшее, и при любых неполадках лучше разобраться в их причине и наладить бесперебойную работу. Но во многих случаях такой подход может оказаться очень полезным.

Что бы узнать полный путь от корня, используем:

pwd

Подсмотрено на сайте: http://ablex.ru. Спасибо!