Si vous avez mis en place un système de haute disponibilité avec Heartbeat/Mon et réplication en temps réel d’une base mysql, le passage du maître->esclave ne se fera pas si la réplication ne fonctionne plus car Mon supervisera seulement si le proces mysql tourne.
Donc par défaut nous n’avons pas moyen de savoir si la replication fonctionne, pour palier à ce soucie nous allons créer un script bash qu’on placera dans le crontab pour l’exécuter périodiquement.
status=0 MasterHost=”192.168.0.1″ SlaveHost=”192.168.0.2″ emails=”administateur@domaine.com” ReplicationDownAlert=”Replication status – NOK” ReplicationGoodAlert=”Replication status – OK” ReplicationGoodMessage=”Etat de la réplication sur $SlaveHost est OK.\nBonne journée!\n\n” #On se connect à notre MySql et on récupère l'état de la variable si yes ou no de Slave_SQL_Running et Slave_IO_Running SQLresponse=`mysql -u root –password=xxxxxx test -e “show slave status \G” |grep -i “Slave_SQL_Running”|gawk ‘{print $2}’` IOresponse=`mysql -u root –password=xxxxx test -e “show slave status \G” |grep -i “Slave_IO_Running”|gawk ‘{print $2}’` if [ "$SQLresponse" = "No" ]; then error=”La réplication sur le serveur exclave($SlaveHost) n'est plus en fionctionnement.\nSlave_SQL_Running: No\n” status=1 fi if [ "$IOresponse" = "No" ]; then error=”La réplication sur le serveur exclave($SlaveHost) n'est plus en fionctionnement.\nSlave_IO_Running: No\n” status=1 fi # si la réplication n'est pas en fonction if [ $status = 1 ]; then for address in $emails; do echo -e $error | mail -s $ReplicationDownAlert $address echo “Replication NOK, envoie email à $address” done fi # si la réplication est OK if [ $status = 0 ]; then for address in $emails; do echo -e $ReplicationGoodMessage | mail -s $ReplicationGoodAlert $address echo “Replication est OK, envoie email à $address” done fi
Un commentaire