일반적으로 백엔드 서버에는 Pgpool을 설치하지 않습니다. 당신이 당신의 사진에서 보는 것은 가장 일반적인 구성입니다. Pgpool은 기본적으로 데이터베이스 앞에있는 독립형 서버입니다. 두 Postgres 서버는 종종 스트리밍 복제로 구성됩니다. 하나는 마스터이고 다른 하나는 노예입니다.
이를 통해 Pgpool은 두 개 이상의 데이터베이스간에 모든 읽기 쿼리를로드 밸런싱 할 수 있습니다. 쓰기와 관련된 모든 쿼리는 마스터 서버로 라우팅되고 마스터 서버는 슬레이브로 복제됩니다.
으로 @Neil 맥기는 말했다 , 당신은 또한 더 높은 가용성을 달성하기 위해 여러 Pgpool 서버를 가질 수 있습니다. 기술적으로이 구성에서 데이터베이스 서버에 Pgpool을 설치할 수 있지만 이는 나쁜 습관입니다. 여러 개의 Pgpool 서버를 실행하는 것은 훨씬 더 복잡한 구성입니다. Pgpool을 처음 사용하는 경우 하나의 Pgpool 서버부터 시작하여 두 대의 서버를 작동시킵니다.
어느 구성에서나 응용 프로그램 서버는 단일 Postgres 데이터베이스에 연결되어 있다고 생각합니다.
에 대해 pgpool_regclass
, 별도의 질문이어야합니다. 이것은 Pgpool FAQ에서 온 것입니다 .
PostgreSQL 8.0 이상을 사용하는 경우 pgpool-II에서 내부적으로 사용되므로 pgpool-II에서 액세스 할 모든 PostgreSQL에 pgpool_regclass 함수를 설치하는 것이 좋습니다. 이를 사용하지 않으면 다른 스키마에서 중복 테이블 이름을 처리하면 문제가 발생할 수 있습니다 (임시 테이블은 문제가되지 않음).
PostgreSQL 9.4.0 이상 및 pgpool-II 3.3.4 이상, 3.4.0 이상을 사용하는 경우 PostgreSQL 9.4에는 "to_regclass"함수와 같은 내장 pgpool_regclass가 있으므로 pgpool_regclass를 설치할 필요가 없습니다.
필요한 경우 Postgres 마스터 서버에서 일부 SQL 코드를 실행하여 Pgpool이 사용하는 기능을 추가하십시오.
regclass를 사용하면 추가 단계가 필요합니다 (insert_lock을 생각하고있었습니다). 소스에서 컴파일하는 경우 (일반적으로 대부분의 배포판에는 실제로 오래된 버전의 Pgpool이 있음) Postgres 라이브러리도 컴파일해야합니다.
소스에서 컴파일 한 경우 .../pgpool-II-3.X.X/src/sql/pgpool-regclass
폴더 로 이동하여을 수행해야합니다 ./configure; make
.
pgpool-regclass.so 파일을 Postgres 확장 디렉토리에 복사하십시오. 우분투 14.04 서버 (Postgres 9.3 패키지 설치 사용)에서 다음 위치에 있습니다 /usr/lib/postgresql/9.3/lib
. 모든 Postgres 서버 에서이 작업을 수행해야 합니다.
완료되면 pgpool-regclass.sql
마스터에서 실행할 수 있습니다 . 이것은 pgpool_regclass
함수를 복사 한 라이브러리에 매핑합니다 .