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.
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