5. Configurare il database per la replica di streaming come node1
Verificare che le cartelle /db/node0archive, /db/node1archive e /db/node2archive siano state create e condivise tra i tre nodi.
Passo 1
Creare il replicator utente (stesse azioni eseguite per node0).
Passo 2
Modificare
postgres.conf su node1 in modo che utilizzi gli stessi
parametri postgres.conf per node0, ad eccezione della riga n.10, che deve invece avere il valore seguente:
Riga
|
Parametro
|
Valore
|
Nodo
|
10
|
synchronous_standby_names
|
"node0,node2"
|
|
Passo 3
node1 deve avere lo stesso script
start_replication.sh di node0.
Lo script start_replication.sh viene utilizzato per iniziare il processo di replica su node1 e node2.
|
Eseguire lo script start_replication.sh solo da node1 e node2
|
Passo 4
Specificare una nuova destinazione per lo script Master.sh per node1.
Creare lo script retargetMaster.sh:
vim /db/bin/retargetMaster.sh
con il contenuto seguente (leggermente diverso dalla versione di 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
Quindi rendere gli script eseguibili:
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Passo 5
Aggiornare il file pg_hba.conf (stesse azioni eseguite per node0).