Redémarrer automatiquement MySQL avec Monit
Sans vouloir être plus mauvaise langue que d'habitude, inviter WordPress sur son serveur l'expose à un tas de problèmes, qu'ils soient liés ou non à des attaques extérieures. Passer de zéro plantages à un par semaine laisse pour le moins perplexe.
Quelle que soit la cause, au final, on peut vouloir faire surveiller son MySQL par un superviseur indépendant, lequel le relancera si besoin; différentes solutions existent, je décrirai ici l'utilisation de monit, qui a largement fait ses preuves.
L'installation est on ne peut plus classique:
apt-get install monit
Monit bénéficie d'une interface web intégrée mais laissons-la de côté pour le moment, on veut d'abord pouvoir communiquer avec monit via la ligne de commande; il se trouve que pour ça il va falloir de toutes manières activer l'interface http, le client monit l'utilise pour dialoguer avec le démon.
Dans le fichier '/etc/monit/monitrc', décommentez les deux lignes suivantes:
# set httpd port 2812 and
#	allow localhost
Puis appliquez les modifications avec la commande suivante:
monit reload
Vous pouvez maintenant utiliser la ligne de commande suivante:
monit status
Vous obtiendrez un résultat de ce style:
The Monit daemon 5.9 uptime: 0m

System 'lorien.riffzone.net'
  status                            Running
  monitoring status                 Monitored
  load average                      [0.00] [0.01] [0.05]
  cpu                               0.1%us 0.1%sy 0.0%wa
  memory usage                      243.5 MB [49.2%]
  swap usage                        0.0 B [0.0%]
  data collected                    Mon, 01 Jan 2018 16:11:56
Maintenant que monit est opérationnel, apprenons-lui à surveiller MySQL. Il se trouve qu'un superviseur MySQL fait déjà partie du package monit, voici le détail du fichier de configuration monit correspondant:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
   group database
   group mysql
   start program = "/etc/init.d/mysql start"
   stop  program = "/etc/init.d/mysql stop"
   if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart
   if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart
   if 5 restarts with 5 cycles then timeout
   depend mysql_bin
   depend mysql_rc

 check file mysql_bin with path /usr/sbin/mysqld
   group mysql
   include /etc/monit/templates/rootbin

 check file mysql_rc with path /etc/init.d/mysql
   group mysql
   include /etc/monit/templates/rootbin
Pour l'activer, il suffit de créer un lien symbolique vers ce fichier de configuration, que l'on placera dans '/etc/monit/conf.d', puis de valider les modifications comme précédemment:
ln -s /etc/monit/monitrc.d/mysql /etc/monit/conf.d/mysql
monit reload
Relancez la commande 'monit status' et examinez les nouveaux résultats, MySQL est maintenant monitoré comme voulu.
Les automatismes c'est bien, être notifié c'est mieux. Dans le fichier '/etc/monit/monitrc', ajoutez la ligne suivante:
set alert admin@monsite.com
en remplaçant bien sûr 'admin@monsite.com' par votre propre adresse mail. Validez comme d'habitude les changements par la commande 'monit reload' et c'est fait, vous serez notifié à chaque alerte.