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