Haute disponibilité ThingWorx > Exemple de déploiement d'une architecture HA PostgreSQL avec Pgpool-II > 5. Configuration de la base de données pour la réplication en streaming en tant que node1
5. Configuration de la base de données pour la réplication en streaming en tant que node1
Assurez-vous que les dossiers /db/node0archive, /db/node1archive et /db/node2archive ont été créés et partagés sur trois noeuds.
Etape 1
Créez un réplicateur d'utilisateurs (mêmes actions que pour node0).
Etape 2
Modifiez postgres.conf sur node1 pour utiliser les mêmes paramètres postgres.conf pour node0, à l'exception de la ligne 10, qui doit avoir la valeur suivante :
Ligne
Paramètre
Valeur
Noeud
10
synchronous_standby_names
'node0,node2'
Etape 3
node1 doit utiliser le même script start_replication.sh que node0.
Le script start_replication.sh permet de lancer le processus de réplication sur node1 et node2.
* 
Exécutez le script start_replication.sh à partir de node1 et node2, uniquement
Etape 4
Reciblez le script Master.sh pour node1.
Créez le script retargetMaster.sh :
vim /db/bin/retargetMaster.sh
avec le contenu suivant (qui est légèrement différent de la version node0) :
#!/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
Rendez ensuite les scripts exécutables :
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Etape 5
Mettez à jour le paramètre pg_hba (mêmes actions que pour node0).
Est-ce que cela a été utile ?