Postgresql 및 Pgpool II 설치가 처음입니다. Pgpool과 Repmgr을 사용하여 PostgreSQL HA /로드 밸런싱을 구성했습니다.실패한 postgresql 마스터 노드의 자동 복구가 pgpool II에서 작동하지 않습니다.
The setup consist of 3 nodes and verison of Application and OS is as mentioned below:
**Pgpool node** => 192.168.0.4, **Postgresql Nodes** => 192.168.0.6, 192.168.0.7
**OS version** => CentOS 6.8 (On all the 3 nodes)
**Pgpool II version** => pgpool-II version 3.5.0 (ekieboshi).
**Postgresql Version** => PostgreSQL 9.4.8
**Repmgr Version** => repmgr 3.1.3 (PostgreSQL 9.4.8)
나는 설정을 수행 할 link을 따랐다.
마스터 노드를 종료하면 장애 조치가 성공적으로 수행되고 슬레이브 노드가 새 마스터 노드로 사용됩니다.
장애 조치 후에 장애가 발생한 노드를 수동으로 복구하고 새 마스터 노드와 동기화해야합니다.
복구 프로세스를 자동화하고 싶습니다.
pgpool 노드에 pgpool.conf 파일 매개 변수 가을 recovery_1st_stage_command이 포함되어 있습니다. 소스를 온라인으로 검색 한 결과, "recovery_1st_stage_command"을 Pgpool 노드의 pgpool.conf 파일에 설정해야합니다.
recovery_1st_stage_command = 'basebackup.sh'을 설정했습니다. 내가 데이터 디렉토리 '/var/lib/pgsql/9.4/data'에서 PostgreSQL의 노드 모두에서 스크립트 'basebackup.sh' 파일에 놓여있다.
또한 에 'pgpool_remote_start'스크립트를 데이터베이스 노드 '/var/lib/pgsql/9.4/data'아래에 두었습니다.
또한 데이터베이스 노드 모두에서 pgpool 확장자 pgpool_recovery와 pgpool_adm을 만들었습니다.
마스터 노드가 중지되면 장애 조치가 발생하지만 'basebackup.sh'복구 스크립트가 실행되지 않습니다.
pgpool 로그를 확인하고 디버그 수준을 활성화했습니다. 여전히 스크립트가 실행되었는지 여부를 찾을 수 없습니다.
실패한 노드의 자동 온라인 복구를 도와주세요. 나와 사용하는 스크립트를 찾으십시오.
basebackup.sh
#!/bin/bash
# first stage recovery
# $1 datadir
# $2 desthost
# $3 destdir
#as I'm using repmgr it's not necessary for me to know datadir(master) $1
RECOVERY_NODE=$2
CLUSTER_PATH=$3
#repmgr needs to know the master's ip
MASTERNODE=`/sbin/ifconfig eth0 | grep inet | awk '{print $2}' | sed 's/addr://'`
cmd1=`ssh [email protected]$RECOVERY_NODE "repmgr -D $CLUSTER_PATH --force standby clone $MASTERNODE"`
echo $cmd1
pgpool_remote_start 스크립트.
#! /bin/sh
if [ $# -ne 2 ]
then
echo "pgpool_remote_start remote_host remote_datadir"
exit 1
fi
DEST=$1
DESTDIR=$2
PGCTL=/usr/pgsql-9.4/bin/pg_ctl
ssh -T $DEST $PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null < /dev/null &
감사합니다.
나는 장애 조치 후, 대기 노드가 성공적으로 새 마스터 서버로 승격되는 것을 발견했다 (컴퓨터가 응답하지 않는 같은) 마스터와 진짜 문제가있는 경우입니다. 그리고 지금, 나는 ** Pgpool ** 노드에서 수동으로 ** pcp_recovery_node ** 명령을 실행해야합니다. 이 명령은 새 마스터 서버의 ** basebackup.sh ** 스크립트를 실행하고 성공적으로 실패한 노드를 복구하고 클러스터에 노드를 결합한다. **이 pcp_recovery_node 명령 execuiton **을 자동화하려고합니다. – yravi104