2016-09-07 2 views
0

Ich bin neu in Postgresql und Pgpool II Setup. Ich habe den Postgresql HA/Lastausgleich mit Pgpool und Repmgr konfiguriert.Automatische Wiederherstellung des fehlgeschlagenen postgresql Master-Knotens funktioniert nicht mit pgpool II

The setup consist of 3 nodes and verison of Application and OS is as mentioned below: 
**Pgpool node** => 192.168.0.4, **Postgresql Nodes** => 192.168.0.6, 192.168.0.7 
**OS version** => CentOS 6.8 (On all the 3 nodes) 
**Pgpool II version** => pgpool-II version 3.5.0 (ekieboshi). 
**Postgresql Version** => PostgreSQL 9.4.8 
**Repmgr Version** => repmgr 3.1.3 (PostgreSQL 9.4.8) 

habe ich die link folgte dem Setup zu tun.

Wenn ich den Master-Knoten herunterbringe, wird der Failover erfolgreich ausgeführt und der Slave-Knoten übernimmt den neuen Master-Knoten.
Nach dem Failover muss ich den ausgefallenen Knoten manuell wiederherstellen und mit dem neuen Master-Knoten synchronisieren.

Ich möchte den Wiederherstellungsprozess automatisieren.

Die pgpool.conf Datei auf dem pgpool Knoten enthält Parameter recovery_1st_stage_command. Ich habe die Quellen online gesucht und festgestellt, dass der Parameter "recovery_1st_stage_command" in der Konfigurationsdatei pgpool.conf auf dem Pgpool-Knoten festgelegt werden sollte.

Ich habe den Parameter recovery_1st_stage_command = 'basebackup.sh' gesetzt. Ich habe das Skript ‚basebackup.sh‘ platziert Datei auf sowohl der Postgresql Knoten im Datenverzeichnis ‚/var/lib/pgsql/9.4/data‘.

Auch ich habe das Skript 'pgpool_remote_start' unter sowohl den Datenbankknoten im Verzeichnis '/var/lib/pgsql/9.4/data' platziert.

Auch die pgpool-Erweiterung pgpool_recovery und pgpool_adm auf dem Datenbankknoten erstellt.

Wenn der Master-Knoten gestoppt wird, wird das Failover ausgeführt, aber das Wiederherstellungsscript 'basebackup.sh' wird nicht ausgeführt.
Ich habe die pgpool-Protokolle überprüft und Debug-Ebene aktiviert. Kann immer noch nicht finden, ob das Skript ausgeführt wurde oder nicht.

Bitte helfen Sie mir mit der automatischen Online-Wiederherstellung des ausgefallenen Knotens. Finde die von mir verwendeten Skripte.

basebackup.sh

#!/bin/bash 
 
# first stage recovery 
 
# $1 datadir 
 
# $2 desthost 
 
# $3 destdir 
 

 
#as I'm using repmgr it's not necessary for me to know datadir(master) $1 
 
RECOVERY_NODE=$2 
 
CLUSTER_PATH=$3 
 
#repmgr needs to know the master's ip 
 
MASTERNODE=`/sbin/ifconfig eth0 | grep inet | awk '{print $2}' | sed 's/addr://'` 
 

 
cmd1=`ssh [email protected]$RECOVERY_NODE "repmgr -D $CLUSTER_PATH --force standby clone $MASTERNODE"` 
 
echo $cmd1

pgpool_remote_start Skript.

#! /bin/sh 
 

 
if [ $# -ne 2 ] 
 
then 
 
    echo "pgpool_remote_start remote_host remote_datadir" 
 
    exit 1 
 
fi 
 

 
DEST=$1 
 
DESTDIR=$2 
 
PGCTL=/usr/pgsql-9.4/bin/pg_ctl 
 

 
ssh -T $DEST $PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null < /dev/null &

Dank.

+0

Ich habe festgestellt, dass nach dem Failover, der Standby-Knoten als neuer Master-Server erfolgreich gefördert wird. Und jetzt muss ich den Befehl ** pcp_recovery_node ** manuell auf dem Knoten ** Pgpool ** ausführen. Dieser Befehl führt das Skript ** basebackup.sh ** auf dem neuen Master-Server aus und stellt den ausgefallenen Knoten erfolgreich wieder her und verbindet den Knoten mit dem Cluster. ** Ich möchte diesen pcp_recovery_node Befehl execuiton ** automatisieren. – yravi104

Antwort

0

Ich denke, das ist wie geplant. Wenn ein Master ausfällt, gibt es ein Failover und der Slave wird befördert. Aber der alte Master wird nicht automatisch als Slave wiederhergestellt.Am Gegenteil wird in der Regel der Failover-Skript zum Herunterfahren versuchen, den ausgefallenen Master für eine guten und deaktivieren Sie es neu startet (wenn möglich, vielleicht der Knoten nach unten ist und es ist nicht möglich, eine Verbindung), das eine Split-Brain zu vermeiden.

Wenn Sie wirklich wollen, dass dann Sie die Failover-Skript so ändern könnte, dass es auf dem alten Master den pcp_recovery Betrieb tun, nachdem der Slave gefördert wird. Aber was Sie gerade tun, ist eine Umschaltung ... Dies sollte als eine Reihe von Schritten geschrieben werden. Ein Failover ist für, wenn es ein echtes Problem mit dem Master (wie Maschine reagiert nicht)

Verwandte Themen