Alta disponibilidad de ThingWorx > Ejemplo de implementación de alta disponibilidad de PostgreSQL con Pgpool-II > 4. Configurar la base de datos para la replicación en flujo como node0
4. Configurar la base de datos para la replicación en flujo como node0
La práctica recomendada es tener un usuario dedicado para el acceso a la replicación.
Paso 1
Cree el replicador de usuarios.
psql
CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 5
PASSWORD 'trUf6yuz2?_Gub';
\q
Paso 2
Modifique postgresql.conf para soportar la replicación.
vim /db/postgres/postgresql.conf
Configure los siguientes parámetros:
parámetros postgres. conf para node0
fila
Parámetro
Valor
Nodo
1
listen_addresses
*
* se incluyen todas las direcciones. Modifique este valor según el requisito de seguridad.
2
port
5432
3
max_connections
150
4
archive_mode
el
5
wal_level
replica
6
Fsync
el
7
synchronous_commit
el
8
wal_sync_method
open_sync
9
max_wal_sendors
10
10
synchronous_standby_names
'node1,node2'
11
hot_standby
el
12
hot_standby_feedback
el
13
wal_keep_segments
500
14
max_replication_slots
10
15
archive_command
'cp -f %p /db/node0archive/%f</dev/null'
16
checkpoint_segments
3
Paso 3
El script start_replication.sh se utiliza para iniciar el proceso de replicación en node1 y node2.
* 
Permite ejecutar el script start_replication.sh solo desde el node1 y el node2.
vim /db/bin/start_replication.sh
con el siguiente contenido:
cp /db/postgres/postgresql.conf /db/bin/postgresql.conf
cp /db/postgres/pg_hba.conf /db/bin/pg_hba.conf
rm -rf /db/postgres
rm -rf /db/thingworx/*
pg_basebackup -h $1 -D /db/postgres -U replicator --xlog-method=stream
-v -P
cp /db/bin/postgresql.conf /db/postgres/postgresql.conf
cp /db/bin/pg_hba.conf /db/postgres/pg_hba.conf
Paso 4
Ejecute el script retargetMaster.sh para node0.
Cree el script retargetMaster.sh:
vim /db/bin/retargetMaster.sh
con el siguiente contenido:
#!/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=node0'" >> /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
A continuación, convierta los scripts en ejecutables:
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Paso 5
Actualice la configuración de pg_hba.
vim /db/postgres/pg_hba.conf
y actualice las siguientes líneas:
host all all 10.10.0.0/16 trust
host replicator replicator 10.10.0.0/16 trust
Las opciones de configuración del host anteriores pueden variar en función del requisito de seguridad. Por ejemplo, md5 se puede utilizar para la autenticación en lugar de trust.
¿Fue esto útil?