Vous n'êtes pas identifié(e).
Pages : 1
Je te remercie pour ton retour.
Effectivement tu as raison pour le format de retour du script.
J'utilise le tcp-check de haproxy pour rechercher le status du nœud disponible dans le output de mon script afin de pouvoir me connecter depuis l'adresse IP du serveur haproxy donc plus besoin de gérer la VIP. Mais la grande contrainte que j'ai :
1. une fois la bascule faite en cas d'incident, il faut rétablir le cluster manuellement.
2. l'autre remarque, la gestion des fichiers WAL parfois certains certains étaient illisible du coup postgres ne pouvaient pas restaurer la base base pour résoudre cela j'ai utilisé ses deux paramètres:
1. fsync
2. wal_sync_method
Ce qui force les données à être écrite sur le disque en cas d’écriture. Cela à réglé le problème. pensée-vous que cela est une bonne astuce?
Bonjour
@ruizsebastien même si ce paramètre est définie, pgbackrest effectue également un purge sur le stockage qui a été définie dans sa conf en respectant le délais que vous avez définie (en jour si vous avez spécifiez l'option time) du coup impossible de faire une restauration si le purge a été effectué. Mais si vous avez toujours cette sauvegarde, vous pouvez copier dans le répertoire de sauvegarde mais je doute que cela fonctionne car postgresql aurais déjà supprimer,archivé les fichiers WAl nécessaire à sa restauration.
Bonjour,
Quel est ton message d'erreur?
voici le script il doit être exécutable par le compte postgres
#!/bin/bash
#
# This script checks if a PostgreSQL server is healthy running on localhost. It will
# return:
# "HTTP/1.x 200 OKr" (if postgres is running smoothly)
# - OR -
# "HTTP/1.x 500 Internal Server Errorr" (else)
#
# The purpose of this script is make haproxy capable of monitoring PostgreSQL properly
#
FORCE_FAIL="/dev/shm/proxyoff"
SLAVE_CHECK="SELECT pg_is_in_recovery()"
WRITABLE_CHECK="SHOW transaction_read_only"
return_ok()
{
echo -e "HTTP/1.1 200 OK\r\n"
echo -e "Content-Type: text/html\r\n"
if [ "$1x" == "masterx" ]; then
echo -e "Content-Length: 56\r\n"
echo -e "\r\n"
echo -e "<html><body>PostgreSQL master is running.</body></html>\r\n"
elif [ "$1x" == "slavex" ]; then
echo -e "Content-Length: 55\r\n"
echo -e "\r\n"
echo -e "<html><body>PostgreSQL slave is running.</body></html>\r\n"
else
echo -e "Content-Length: 49\r\n"
echo -e "\r\n"
echo -e "<html><body>PostgreSQL is running.</body></html>\r\n"
fi
echo -e "\r\n"
exit 0
}
return_fail()
{
echo -e "HTTP/1.1 503 Service Unavailable\r\n"
echo -e "Content-Type: text/html\r\n"
echo -e "Content-Length: 48\r\n"
echo -e "\r\n"
echo -e "<html><body>PostgreSQL is *down*.Run script not running by $UID</body></html>\r\n"
echo -e "\r\n"
exit 1
}
if [ -f "$FORCE_FAIL" ]; then
return_fail;
fi
# check if in recovery mode (that means it is a 'slave')
SLAVE=$(psql -qt -c "$SLAVE_CHECK" 2>/dev/null)
if [ $? -ne 0 ]; then
return_fail;
elif echo $SLAVE | egrep -i "(t|true|on|1)" 2>/dev/null >/dev/null; then
return_ok "slave"
fi
# check if writable (then we consider it as a 'master')
READONLY=$(psql -qt -c "$WRITABLE_CHECK" 2>/dev/null)
if [ $? -ne 0 ]; then
return_fail;
elif echo $READONLY | egrep -i "(f|false|off|0)" 2>/dev/null >/dev/null; then
return_ok "master"
fi
return_ok "none";
Bonjour,
En ce qui concerne la gestion de la VIP avec repmgr, moi j'ai trouvé un script sur un internet que j'ai adapté à mon cas, qui vérifie le statut du nœud:
1. Soit le nœud est maître
2. Soit le nœud est slave
Mais il est possible d'ajouter une option qui vous configure la VIP si le neoud est master, sinon ne pas configurer la VIP.
Le script affiche son résultat au format HTML
J'ai même créer un socket réseau qui exécute mon script pour exposer le résultat sur un port TCP et un service systemd qui m'exécute cela.
Ca marche bien mais je n'ai pas ajouter l'option VIP car j'accède depuis un serveur HAproxy sur le port TCP que j'ai crée.
Pages : 1