Accueil Astuces et Informations Comment redémarrer automatiquement le service MySQL avec crontab

Comment redémarrer automatiquement le service MySQL avec crontab

1
4
Brillian Solution

Comment redémarrer automatiquement le service Mysql avec crontab – Brilliansolution. MySQL peut planter lorsqu’il manque de mémoire ou pour un autre problème. Dans la plupart des cas, vous pouvez résoudre ce problème en redémarrant simplement le service MySQL.

Pour voir si MySQL est en cours d’exécution ou non, exécutez :

sudo service mysql status

Si MySQL est en panne, vous pouvez le redémarrer avec :

sudo service mysql restart

Mais que se passe-t-il si vous êtes en vacances pendant que le site Web de votre client tombe en panne ? Il existe sûrement un moyen d’automatiser tout ce processus sous Linux ?

Pourquoi, oui il y en a ! Cron est un planificateur de tâches basé sur le temps pour Linux qui peut exécuter des scripts en votre absence.

Créer un script pour redémarrer automatiquement MySQL

Vous pouvez configurer cron pour vérifier automatiquement l’état du serveur MySQL et le redémarrer s’il plante. Bien sûr, ce n’est pas une solution permanente pour votre serveur MySQL qui fuit, mais cela peut vous faire gagner du temps jusqu’à ce que vous puissiez approfondir vos recherches.

Nous devons d’abord créer un script BASH simple et le stocker dans le dossier personnel (ou n’importe où), puis demander à cron d’exécuter ce script BASH une fois par minute.

Vous pouvez placer ce script n’importe où, mais dans cet exemple, nous le placerons dans le dossier home.

Changez de répertoire pour le dossier de départ.

cd /home/

Créez ici un nouveau répertoire appelé scripts.

sudo mkdir scripts

Accédez à ce répertoire.

cd scripts

Créez un nouveau fichier dans ce répertoire appelé mysqlmon.sh en utilisant le nano éditeur de texte.

sudo nano mysqlmon.sh

Collez le script suivant.

/home/scripts/mysqlmon.sh

#!/bin/bash

# Check if MySQL is running
sudo service mysql status > /dev/null 2>&1

# Restart the MySQL service if it's not running.
if [ $? != 0 ]; then
    echo -e "MySQL Service was down. Restarting now...\n"
    sudo service mysql restart
else
    echo -e "MySQL Service is running already. Nothing to do here.\n"
fi

Enregistrez et quittez (appuyez sur CTRL + Xpresse Y puis appuyez sur ENTER)

Rendre le script exécutable.

sudo chmod +x mysqlmon.sh

Testez le script pour redémarrer automatiquement MySQL

Testez le script en exécutant :

sudo ./mysqlmon.sh

Si MySQL est opérationnel, vous devriez voir :

MySQL Service is running already. Nothing to do here.

Si vous voulez voir ce qui se passe lorsque le script détecte si MySQL est en panne, arrêtez le service MySQL, mais ne le faites que si votre serveur Web n’est pas actif ! Si votre serveur est actif mais pas occupé, l’arrêt et le démarrage du serveur MySQL ne devraient prendre que quelques secondes.

sudo service mysql stop

Maintenant, testez à nouveau le script en exécutant :

sudo ./mysqlmon.sh

Sortir:

MySQL Service was down. Restarting now..

Le service MySQL devrait être à nouveau opérationnel. Vous pouvez vérifier avec :

sudo service mysql status

Ajouter le script de redémarrage automatique MySQL à Crontab

En ajoutant ce script à crontab, le serveur vérifiera le service MySQL une fois par minute, et s’il ne s’exécute pas, il le redémarrera.

Ouvrez crontab (si vous êtes invité à sélectionner un éditeur de texte, choisissez nano).

sudo crontab -e

Dans crontab, ajoutez la ligne suivante au bas du fichier.

crontab

* * * * * /home/scripts/mysqlmon.sh > /dev/null 2>&1

Enregistrez et quittez (appuyez sur CTRL + Xpresse Y puis appuyez sur ENTER)

Tester le Crontab

Pour tester si crontab exécute le script une fois par minute, vous devrez arrêter temporairement le service MySQL.

sudo service mysql stop

Vous pouvez maintenant tester si MySQL est en cours d’exécution avec la commande suivante.

sudo service mysql status

Si MySQL est en panne, attendez au moins une minute jusqu’à ce que la crontab s’exécute. Si après deux minutes, le service MySQL est toujours en panne, quelque chose s’est mal passé avec votre script cron. Redémarrez MySQL avec sudo service mysql start.

Cet article a été mis à jour 2023-02-16 17:34:40