PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Réplication » Adresse IP virtuelle avec repmgr » Hier 12:35:08

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?

#2 Re : Général » pgBackRest » 18/10/2024 17:47:11

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.

#4 Re : Réplication » Adresse IP virtuelle avec repmgr » 18/10/2024 14:19:02

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";

#5 Re : Réplication » Adresse IP virtuelle avec repmgr » 18/10/2024 11:33:54

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.

Pied de page des forums

Propulsé par FluxBB