« LINUX:MariaDB/Galera - Solution d'automatisation de démarrage » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
Ligne 8 : Ligne 8 :


=MariaDB=
=MariaDB=
Le programme est écrit script "bash" et en LUA. Il sera actif sur toutes les machines du cluster MariaDB: "sv1.home.dom", "sv2.home.dom", "sv3.home.dom" et "sv4.home.dom".
Le programme est écrit en script "bash" et LUA. Il sera actif sur toutes les machines du cluster MariaDB: "sv1.home.dom", "sv2.home.dom", "sv3.home.dom" et "sv4.home.dom".




Ligne 226 : Ligne 226 :
On y voit l'utilisation du fichier "hosts.txt" et celle des services Rsyncd. Le fichier journal "mariadb.log" affiche l'état de la procédure.
On y voit l'utilisation du fichier "hosts.txt" et celle des services Rsyncd. Le fichier journal "mariadb.log" affiche l'état de la procédure.


Remarquons que, pour s'exécuter, on doit se trouver dans le répertoire où ce script est localisé; c'est le service qui le précisera.
Remarquons que, pour s'exécuter, on doit se trouver dans le répertoire où ce script est localisé (variable "CHEMIN"); c'est le service qui le précisera.


Il faut faire attention au chemin (variable "CHEMIN") où se trouve la base de données MariaDB; il faut adapter en conséquence la variable "CHEMINDB". Dans notre cas, elle se trouve dans le répertoire voisin "/produc/mysql". Si cette procédure devait être utilisée par le système Cron, il faudrait faudrait les spécifier en absolu et non en relatif.
Il faut faire attention au chemin (variable "CHEMINDB") où se trouve la base de données MariaDB; il faut adapter en conséquence la variable "CHEMINDB". Dans notre cas, elle se trouve dans le répertoire voisin "/produc/mysql". Si cette procédure devait être utilisée par le système Cron, il faudrait faudrait les spécifier en absolu et non en relatif.




Ligne 274 : Ligne 274 :




=Garb=
Il reste à régler le cas du service Garb qui tourne sur la machine "sv0.home.dom". Le programme est écrit en script "bash" et LUA.
==Principe==
La seule contrainte est que ce service doive démarrer après qu'au moins une instance de MariaDB s'exécute sur une des machines du cluster si ce n'est pas le cas, il ne doit pas s'exécuter. Il va donc repérer s'il y a au moins une machine du cluster où s'exécute le service MariaDB grâce au scrip LUA "mariadb.lua".
==Localisation des scripts==
Comme précédemment, nous avions placé la base de données dans le répertoire "/produc/mysql". Et nous plaçons les scripts dans le répertoire "/produc/mysql.bat".
==Fichier "hosts.txt"==
Nous utiliserons le même fichier comme décrit ci-dessus.
==Script LUA==
Nous utiliserons également le même script LUA "mariadb.lua" que ci-dessus. Ce logiciel nécessite les mêmes paquets.
==Script Bash==
Voici le script principal écrit en langage Bash. Nous avons nommé ce script "/produc/mysql.bat/checkgarb.bat":
----
#!/bin/bash
 
CHEMIN="./"
cd $CHEMIN
 
/usr/bin/lua mariadb.lua
TAILLE=`/usr/bin/wc -c mariadb.txt | /usr/bin/awk '{printf("%s",$1)}' `
PS=`/usr/bin/ps ax | /usr/bin/grep garbd | /usr/bin/grep -v grep`
 
if [ "$PS" != "" ]
then
  if [ "$TAILLE" != "0" ]
  then
  echo "Garbd en activité" > mariadb.log
  exit 0
  else
  /usr/bin/echo "Arret de Garbd" > mariadb.log
  /usr/bin/systemctl stop garbd.service
  fi
else
  if [ "$TAILLE" != "0" ]
  then
  /usr/bin/echo "Lancement de Garbd" > mariadb.log
  /usr/bin/systemctl start garbd.service
  exit 0
  fi
fi
----
Le fichier journal "mariadb.log" affiche l'état de la procédure.
Remarquons que, pour s'exécuter, on doit se trouver dans le répertoire où ce script est localisé (variable "CHEMIN"); c'est le service qui le précisera.
==Services==
Les procédures ci-dessus seront lancées à intervalles réguliers par Systemd. Mais on pourrait utiliser à sa place le système Cron.
En premier, on crée le service "checkgarb.service" dans le répertoire de Systemd "/usr/lib/systemd/system" dont voici le contenu:
----
[Unit]
Description=Check Garbd
After=network.target
 
[Service]
Type=simple
WorkingDirectory=/produc/mysql.bat
ExecStart=/produc/mysql.bat/checkgarb.bat
 
[Install]
WantedBy=multi-user.target
----
Adaptez le répertoire où se trouve les procédures selon votre situation.
Comme cette procédure s'exécute et s'arrête rapidement, il faut la relancer à intervalle régulier. On crée un autre service de type "Timer". On nomme ce fichier sur la même base "checkgarb.timer" dans le même répertoire de Systemd "/usr/lib/systemd/system" dont voici le contenu:
----
[Unit]
Description=Timer for the checkgarb service
[Timer]
OnBootSec=4min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target
----
Le service ne s'activera que 4 minutes après le démarrage de la machine et s'exécutera toutes les 5 minutes. Ces temps sont indicatifs.
Comme le paramétrage de Systemd a été modifié, il faut le recharger:
systemctl daemon-reload
On active et lance le service:
systemctl enable checkgarb.timer
systemctl start checkgarb.timer