Hochverfügbarkeit mit ThingWorx > Beispiel für die Bereitstellung von PostgreSQL HA mit pgpool-II > 6. Datenbank für Streaming-Replikation als node2 konfigurieren
6. Datenbank für Streaming-Replikation als node2 konfigurieren
Stellen Sie sicher, dass die Ordner /db/node0archive, /db/node1archive und /db/node2archive erstellt wurden und auf drei Knoten gemeinsam benutzt werden.
Schritt 1
Erstellen Sie einen Benutzer-Replikator (selbe Aktionen wie für node0).
Schritt 2
Bearbeiten Sie postgres.conf auf node1, um dieselben postgres.conf-Parameter wie für node0 zu verwenden, mit Ausnahme von Zeile Nr.10, die stattdessen den folgenden Wert hat:
Zeile
Parameter
Wert
Knoten
10
synchronous_standby_names
'node0,node1'
Schritt 3
node1 muss dasselbe start_replication.sh-Skript wie node0 haben.
Das Skript start_replication.sh wird verwendet, um den Replikationsprozess auf node1 und node2 zu initiieren.
* 
Führen Sie das Skript start_replication.sh nur von node1 und node2 aus.
Schritt 4
Weisen Sie das Master.sh-Skript für node2 neu zu.
Erstellen Sie Skript retargetMaster.sh:
vim /db/bin/retargetMaster.sh
mit folgendem Inhalt (der sich etwas von der node0-Version unterscheidet):
#!/bin/bash -x
NEW_MASTER_HOSTNAME=$1
NEW_ARCHIVE_FOLDER=$2
if grep -q "$1" /db/postgres/recovery.conf
then
echo $1 is current target,server does not need a restart, done!
else
#service postgresql stop
/usr/pgsql-10.x/bin/pg_ctl -D /db/postgres stop -m fast
#/db/bin/start_replication.sh $NEW_MASTER_HOSTNAME
# Write out new recovery.conf file
rm /db/postgres/recovery.conf
echo "standby_mode = 'on'" >> /db/postgres/recovery.conf
echo "primary_conninfo = 'port=5432 host=$NEW_MASTER_HOSTNAME user=replicator password=trUf6yuz2?_Gub sslmode=disable sslcompression=1 application_name=node1'" >> /db/postgres/recovery.conf
echo "trigger_file='/db/trigger'" >> /db/postgres/recovery.conf
echo "restore_command = 'cp -f $NEW_ARCHIVE_FOLDER/%f %p>/db/postgres/recovery.conf
echo "archive_cleanup_command = '/usr/bin/pg_archivecleanup $NEW_ARCHIVE_FOLDER %r>/db/postgres/recovery.conf
echo "recovery_target_timeline = 'latest'" >> /db/postgres/recovery.conf
/usr/pgsql-10.x/bin/pg_ctl -D /db/postgres -l /db/postgres.log start
echo target is $1 now
fi
Machen Sie die Skripts anschließend ausführbar:
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Schritt 5
Aktualisieren Sie pg_hba.conf (selbe Aktionen wie für node0).
War dies hilfreich?