ThingWorx высокой доступности > Пример развертывания PostgreSQL высокой доступности с Pgpool-II > 5. Конфигурирование базы данных для потоковой репликации как node1
5. Конфигурирование базы данных для потоковой репликации как node1
Убедитесь, что папки /db/node0archive, /db/node1archive и /db/node2archive созданы и открыты для общего доступа в трех узлах.
Шаг 1
Создайте репликатор пользователя (те же действия, что и для node0).
Шаг 2
Измените postgres.conf в node1, чтобы использовать те же параметры postgres.conf для node0, за исключением строки #10, которая должна иметь следующее значение:
Строка
Параметр
Значение
Узел
10
synchronous_standby_names
"node0,node2"
Шаг 3
Для узла node1 должен использоваться тот же сценарий start_replication.sh, что и для node0.
Сценарий start_replication.sh используется для инициирования процесса репликации в узлах node1 и node2.
* 
Выполнить сценарий start_replication.sh только из узлов node1 и node2
Шаг 4
Перенацельте сценарий Master.sh на node1.
Создайте сценарий retargetMaster.sh:
vim /db/bin/retargetMaster.sh
со следующим содержимым (которое слегка отличается от версии для 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
Затем создайте исполняемый файл сценариев:
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Шаг 5
Обновите pg_hba.conf (те же действия, что и для node0).
Было ли это полезно?