ThingWorx 고가용성 > Pgpool-II와 함께 PostgreSQL HA 배포 예제 > 4. node0으로 스트리밍 복제를 위해 데이터베이스 구성
4. node0으로 스트리밍 복제를 위해 데이터베이스 구성
모범 사례는 복제 액세스를 위한 전용 사용자를 두는 것입니다.
단계 1
사용자 복제기를 만듭니다.
psql
CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 5
PASSWORD 'trUf6yuz2?_Gub';
\q
단계 2
복제를 지원하기 위해 postgresql.conf를 수정합니다.
vim /db/postgres/postgresql.conf
다음 매개 변수를 구성합니다.
node0에 대한 postgres.conf 매개 변수
매개 변수
노드
1
listen_addresses
*
* 모든 주소를 포함합니다. 보안 요구사항에 따라 이 값을 수정합니다.
2
port
5432
3
max_connections
150
4
archive_mode
on
5
wal_level
replica
6
Fsync
on
7
synchronous_commit
on
8
wal_sync_method
open_sync
9
max_wal_sendors
10
10
synchronous_standby_names
'node1,node2'
11
hot_standby
on
12
hot_standby_feedback
on
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
단계 3
start_replication.sh 스크립트는 node1 및 node2에서 복제 프로세스를 시작하는 데 사용됩니다.
* 
node1 및 node2에서만 start_replication.sh 스크립트를 실행합니다.
vim /db/bin/start_replication.sh
다음 콘텐츠를 사용합니다.
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
단계 4
node0에 대해 retargetMaster.sh 스크립트를 실행합니다.
script retargetMaster.sh를 만듭니다.
vim /db/bin/retargetMaster.sh
다음 콘텐츠를 사용합니다.
#!/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
그런 다음 스크립트 실행 파일을 만듭니다.
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
단계 5
pg_hba 설정을 업데이트합니다.
vim /db/postgres/pg_hba.conf
다음 줄을 업데이트합니다.
host all all 10.10.0.0/16 trust
host replicator replicator 10.10.0.0/16 trust
위의 호스트 설정은 보안 요구사항에 따라 다를 수 있습니다. 예를 들어, md5가 신뢰 대신 인증에 사용될 수 있습니다.
도움이 되셨나요?