OVH Cloud OVH Cloud

redémarrer automatique mysql

3 réponses
Avatar
kalooni
Bonjour,

Sur un serveur il m'arrive souvent que mysql et / ou apache tombe.
Je veux donc mettre dans la cron table un script qui se lance
r=E9guli=E8rement (toutes les minutes), dont le but est de v=E9rifier que
les d=E9mons mysql et apache sont bien lanc=E9, afin de les relancer si
ce n'est pas le cas.

Actuellement je fais quelque chose qui me semble pas tr=E8s propre (cron
m'envoyant par email toutes les minutes les erreurs), qui consiste =E0
d=E9marrer mysql et apache. En effet si ces derniers sont d=E9j=E0 lanc=E9,
il r=E9pondront qu'ils tournent d=E9j=E0 et qu'ils ne peuvent =EAtre
lanc=E9. Si ils ne sont plus lanc=E9, il red=E9marreront.

Je cherche donc une fa=E7on plus =E9l=E9gantes et propres pour effectuer
cela,

Merci de votre aide,
Kalooni

3 réponses

Avatar
Doug713705
Le Vendredi 3 Février 2006 20:47, kalooni s'est exprimé de la sorte sur
fr.comp.os.linux.configuration :

Sur un serveur il m'arrive souvent que mysql et / ou apache tombe.
Je veux donc mettre dans la cron table un script qui se lance
régulièrement (toutes les minutes), dont le but est de vérifier que
les démons mysql et apache sont bien lancé, afin de les relancer si
ce n'est pas le cas.


Pourquoi ne pas chercher à savoir pourquoi apache et/ou mysql "tombent" et
résoudre le problème ?

Ca serait plus simple non ?

Sinon, si les processus httpd et mysqld "tombent" proprement, il suffit de
vérifier la présence de
/var/run/mysql/mysql.pid pour mysql
et de
/var/run/httpd.pid pour httpd

S'ils ne sont pas présent, relancer les processus.

S'ils sont présent (cas où il ne "tomberaient" pas proprement, vérifier
l'existence du processus dont l'id est contenu dans le fichier
correspondant (un cat /var/run/httpd.pid renverra l'id du processus httpd)

en gros et sans trop réfléchir :

-----------------------------------------------------------------------------
#!/bin/bash
HTTPD=/var/run/httpd.pid
MYSQLD=/var/run/mysql/mysql.pid

function restart(){
case $1 in
$HTTPD)
# On relance le processus par le script d'init
/etc/rc.d/rc.httpd restart
;;
$MYSQLD)
# On relance le processus par le script d'init
/etc/rc.d/rc.mysqld restart
;;
*)
# Cas d'erreur théoriquement impossible
echo "Gniii ???"
;;
esac
}

# Pour tous les processus
for PROCESSUS in $HTTPD $MYSQLD
do
# On teste la présence du fichier PID
if [ -f $PROCESSUS ]
then
# On récupère le PID
PID=`cat $PROCESSUS`
# On teste la présence du processus
if [ `ps -e | grep $PID | wc -l` -ne 1 ]
then
# Le processus n'existe pas, on le redémarre
restart $PROCESSUS
fi
else
# Le fichier PID n'existe pas, on relance le processus
restart $PROCESSUS
fi
done
-----------------------------------------------------------------------------

Bien évidement :
- L'appel des scripts d'init des processus et l'emplacement des des fichiers
PID sont à adapter en fonction des distribs/système (ici Slackware
standard)
- Ce script est à executer en tant que root
- Dans le cas d'un script lancer par cron, mettre les chemins complet des
programmes cat et ps.

Ce script est très certainement améliorable !

J'ai testé chez moi, ça fonctionne mais ça ne résoud pas le problème de fond
qui est "Pourquoi les processus tombent ?"

--
@+
Doug [Linux user #307925] - Slackware RuleZ ;-)
[Pourquoi t'es qui, qu'est ce que tu fais par où ?]
-- Pour me contacter enlever no-spam (2X) --

Avatar
Jacques Lav!gnotte (Drop Dr NO)
Bonjour,

Sur un serveur il m'arrive souvent que mysql et / ou apache tombe.
[...]


Je cherche donc une façon plus élégantes et propres pour effectuer
cela,


Ne vaut-il pas mieux chercher pourquoi mysql et/ou apache tombent ? Ce
n'est pas normal du tout.

Rien dans les logs ?


Merci de votre aide,
Kalooni
Jacques


Avatar
kalooni
Merci pour vos réponses messieurs.

En effet on cherche pourquoi apache et mysql tombe. On a également en
projet de faire tourner mysql sur un serveur dédié, assez puissant.

Le problème semble venir d'apache, qui mange trop de mémoire, ce qui
entraîne un plantage de mysql apparemment, mais je ne suis pas admin
sys ... donc ... je recherchai un script le plus propre possible pour
éviter que les sites de nos clients ne tombe le week end ou la nuit :)
En attendant mieux côté serveur ;)

Merci encore, très instructif.