pgpool 복사 와 부하 균형 작업

간단 한 소개
pgpool-II 는 postgresql 데이터베이스 와 클 라 이언 트 사이 에 있 는 중간 부품 으로 몇 가지 기능 을 제공 할 수 있 습 니 다.
1.연결 풀
pgpool-II 는 postgresql 데이터베이스 에 연 결 된 연결 을 유지 하고 같은 매개 변 수 를 사용 하여 연결 할 때 다시 사용 하여 연결 비용 을 줄 이 고 시스템 의 전체 스루풋 을 증가 합 니 다.
2.복사
pgpool-II 는 여러 개의 postgresql 데이터 베 이 스 를 관리 하고 복사 기능 을 활성화 하 며 2 대 또는 여러 대의 postgresql 노드 에 실시 간 백업 을 만 드 는 것 을 가능 하 다 고 합 니 다.그러면 그 중의 한 노드 가 효력 을 잃 으 면 서 비 스 는 터미널 에서 계속 실행 되 지 않 을 수 있 습 니 다.
3.부하 균형
데이터 베 이 스 를 복사 하면 모든 서버 에서 select 조 회 를 실행 하면 같은 결 과 를 되 돌려 줍 니 다.pgpool-II 는 모든 postgresql 서버 의 부 하 를 낮 추기 위해 복사 기능 을 사용 합 니 다.이 는 배포 select 를 통 해 사용 가능 한 모든 서버 에 조회 하여 시스템 의 전체 스루풋 을 증가 시 켰 다.이상 적 인 상황 에서 읽 기 성능 은 postgresql 수량 과 정비례 해 야 합 니 다.부하 균형 기능 은 대량의 사용자 가 동시에 많은 읽 기 조 회 를 실행 하 는 장면 에서 작업 효과 가 가장 좋다.
4.한도 초과 접속 제한
postgresql 은 현재 최대 연결 수 를 제한 합 니 다.이 수량 에 도 착 했 을 때 새로운 연결 이 거 부 됩 니 다.이 연결 수 를 늘 리 면 자원 소 모 를 증가 시 키 고 시스템 의 전체적인 성능 에 어느 정도 부정적인 영향 을 줄 수 있다.pgpool-II 도 최대 연결 수 를 제한 하 는 것 을 지원 하지만,연결 을 대기 열 에 넣 는 것 이지,바로 오 류 를 되 돌려 주 는 것 이 아 닙 니 다.
또한 pgpool-II 도 병행 조 회 를 지원 하고 데이터 가 여러 서버 로 분할 되 기 때문에 하나의 조 회 는 여러 서버 에서 동시에 실행 되 어 전체 실행 시간 을 줄 일 수 있 습 니 다.병렬 조 회 는 대규모 데 이 터 를 조회 할 때 매우 효과 가 있다.
테스트 환경
IP
활용 단어 참조
판본
10.10.10.56
postgresql
9.2.15
10.10.10.57
postgresql
9.2.15
10.10.10.56
pgpool-II
3.5
환경 설명:두 대의 postgresql,pgpool 과 그 중의 한 대의 postgresql 은 한 대의 서버 에 있 습 니 다.
테스트 수요:pgpool 테스트 postgresql 의 복사 와 부하 균형 실현
pgpool 설치
1.소스 코드 설치

wget http://www.pgpool.net/download.php?f=pgpool-II-3.5.3.tar.gz
tar -zxvf pgpool-II-3.5.3.tar.gz 
cd pgpool-II-3.5.3
./configure --prefix=/usr/local/pgpool --with-openssl
#  configure: error: libpq is not installed or libpq is old
#   yum install postgresql-devel  
make && make install
2.pgpool-regclass 설치
PostgreSQL 8.0~PostgreSQL 9.3 을 사용 하여 방문 해 야 할 PostgreSQL 에 pgpool 을 설치 하 는 것 을 강력 히 추천 합 니 다.regclass 함 수 는 pgpool-II 내부 에서 사용 되 기 때 문 입 니 다.이렇게 하지 않 으 면 서로 다른 schema 에서 같은 표 이름 을 처리 하 는 데 문제 가 발생 할 수 있 습 니 다(임시 표 는 문제 가 되 지 않 습 니 다).PostgreSQL 9.4 이상 버 전 은 필요 없습니다.

cd pgpool-II-3.5.3/src/sql/pgpool-regclass
make && make install

-bash-4.2$ psql -f pgpool-regclass.sql template1
 
psql template1
=# CREATE EXTENSION pgpool_regclass;
pgpool-II 를 통 해 방문 한 데이터베이스 마다 pgpool-regclass.sql 또는 CREATE EXTENSION 을 실행 해 야 합 니 다."psql-f pgpool-regclass.sql template 1"이나 CREATE EXTENSION 을 실행 한 후 만 든 데이터베이스 에서 이렇게 할 필요 가 없습니다.이 템 플 릿 데이터 베 이 스 는 새 데이터베이스 로 복 제 됩 니 다.
3.insert 구축자물쇠 시계
복사 모드 에서 insert 를 사용 했다 면lock,pgpool 구축 을 강력 추천 합 니 다.catalog.insert_lock 표,상호 배척 에 사용 합 니 다.지금까지 insertlock 은 일 도 할 수 있어 요.그러나 이 경우 pgpool-II 는 삽 입 된 목표 표를 잠 가 야 합 니 다.이런 행 위 는 pgpool-II 2.2 와 2.3 시리즈 와 유사 하 다.시계 잠 금 이 VACUUM 과 충돌 하기 때문에 INSERT 작업 이 가능 하기 때문에 오래 기다 릴 수 있 습 니 다.

cd pgpool-II-3.5.3/src/sql/
psql -f insert_lock.sql tempalte1
pgpool-II 를 통 해 방문 하 는 데이터베이스 마다 insert 를 실행 해 야 합 니 다.lock.sql。 "psql-f insert"를 실행 할 필요 가 없습니다.lock.sql template 1"이후 만들어 진 데이터베이스 에서 이렇게 합 니 다.이 템 플 릿 데이터 베 이 스 는 새 데이터베이스 로 복 제 됩 니 다.
4.pgpool 설치recovery
온라인 답장 을 사용 하려 면 다음 과 같은 함수 가 필요 합 니 다:pgpoolrecovery, pgpool_remote_start, pgpool_switch_xlog。
또한,추가 도구 pgpoolAdmin 제어 pgpool-II 시작 과 백 엔 드 의 PostgreSQL 노드 를 다시 연결 하려 면 함수 pgpool 이 필요 합 니 다.pgctl;그리고 pgpoolAdmin 은 함수 pgpool 이 필요 합 니 다.pgctl 은 PostgreSQL 에 매개 변 수 를 정지/재 부팅/다시 불 러 옵 니 다.
pgpool 사용 및 설치 가능regclass 와 같은 방법 으로 네 개의 함수 가 설치 되 어 있 습 니 다.하지만 pgpoolregclass 와 달리 template 1 데이터베이스 에 이 함수 만 설치 해 야 합 니 다.

cd pgpool-II-3.5.3/src/sql/pgpool-recovery
make && make install
psql -f pgpool-recovery.sql template1
 
psql template1
=# CREATE EXTENSION pgpool_recovery
pgpool 설정
1.pcp.conf 설정
pgpool 은 pcp 인 터 페 이 스 를 제공 합 니 다.pgpool 의 상 태 를 보고 관리 할 수 있 으 며,pgpool,pcp.conf 를 원 격 으로 조작 하여 pcp 관련 명령 인증 파일 을 사용 할 수 있 습 니 다.

cd /usr/local/pgpool
cp etc/pcp.conf.sample etc/pcp.conf
bin/pg_md5 -m -u pgpool -p
     pool_passwd
postgres:md533c14731dfdfsdfsdf91e8d10c4bff5
cat etc/pcp.conf
pgpool:md533c14731dfdfsdfsdf91e8d10c4bff5
2.pool 설정hba.conf
pool 통과 하기hba.conf 는 postgresql 과 유사 한 pg 권한 설정 을 할 수 있 습 니 다.hba.conf

cd /usr/local/pgpool
cp etc/pool_hba.conf.sample etc/pool_hba.conf
bin/pg_md5 -m -u postgres -p
     pool_passwd
postgres:md533c14731dfdfsdfsdf91e8d10c4bff5
**주의:
1.pool_hba.conf 의 암호 화 방식 은 pghba.conf 의 암호 화 방식 과 마찬가지 로 mds,trust 또는 다른 방식 입 니 다.다 르 면 잘못 을 고 할 수 있다.
2.pool_hba.conf 의 사용 자 는 postgresql 데이터베이스 에 존재 해 야 합 니 다.
**
3.pgpool.conf 설정

cd /usr/local/pgpool
cp etc/pgpool.conf.sample etc/pgpool.conf
#      
mkdir -p /var/run/pgpool
mkdir -p /usr/local/pgpool/logs
vim etc/pgpool.conf
listen_addresses = '*'
port = 9999
socket_dir = '/tmp'
listen_backlog_multiplier = 2
serialize_accept = off
pcp_listen_addresses = '*'
pcp_port = 9898
pcp_socket_dir = '/tmp'
backend_hostname0 = '10.10.10.56'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/data/pgsql/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = '10.10.10.57'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/data/pgsql/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'
enable_pool_hba = on
pool_passwd = 'pool_passwd'
debug_level = 0
pid_file_name = '/var/run/pgpool/pgpool.pid'
logdir = '/usr/local/pgpool/logs'
replication_mode = on
load_balance_mode = on
master_slave_mode = off
그 중:
replication_mode=on 복사 모드 가 열 리 면 postgresql 데이터베이스 두 대 에서 실시 간 으로 백업 할 수 있 습 니 다.
load_balance_mode=on 부하 균형 모드 오픈,부하 균형 실현
3.pgpool 시작

/usr/local/pgpool/bin/pgpool
4.pgpool 연결

psql -U postgres -p 9999 -h 10.10.10.56
Password for user postgres: 
psql (9.2.15)
Type "help" for help.
postgres=#
테스트
1.bench 만 들 기복제 데이터베이스

psql -U postgres -p 9999 -h 10.10.10.56
Password for user postgres: 
psql (9.2.15)
Type "help" for help.
postgres=#create database bench_replication;
우 리 는 각각 56,57 상의 postgresql 에 로그 인하 여 볼 수 있다.

psql -U postgres -p 5432 -h 10.10.10.56
Password for user postgres: 
psql (9.2.15)
Type "help" for help.

postgres=# \list
          List of databases
  Name  | Owner | Encoding | Collate | Ctype | Access privileges 
-------------------+----------+----------+-------------+-------------+-----------------------
 bench_replication | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
 postgres   | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
 template0   | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/postgres   +
     |   |   |    |    | postgres=CTc/postgres
 template1   | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/postgres   +
     |   |   |    |    | postgres=CTc/postgres
(4 rows)
두 대의 postgresql 이 모두 bench 를 만 든 것 을 볼 수 있 습 니 다.replication 데이터베이스,따라서 pgpool 의 복 제 는 성공 적 입 니 다.
2.pgbench 테스트

#  pgbench
yum install postgresql-contrib
pgbench -i -h 10.10.10.56 -U postgres -p 9999 bench_replication
모든 pgsql 노드 에서 아래 에 열 거 된 표 와 데 이 터 는 복사 가 정상적으로 작 동 하 는 것 을 설명 합 니 다.
시계
행수
branches
1
tellers
10
accounts
100000
history
0
총결산
이상 은 pgpool-II 의 복사 와 부하 균형 을 간단하게 소개 하 였 을 뿐 아직 소개 되 지 않 은 기능 이 많 으 므 로 계속 탐색 해 야 합 니 다.
추가:pgpool 사용 중 만난 구덩이 정리
1.복사 모드 의 신뢰성 이 낮 음
최초 로 복사 모드 를 사 용 했 습 니 다.데이터 가 pgpool 에 도착 한 후에 pgpool 은 각각 n 개의 postgres 를 기록 합 니 다.데이터 가 일치 하지 않 는 문제 가 자주 발생 하여 최종 적 으로 하나의 데이터 베 이 스 를 사용 할 수 있 습 니 다.
2,online recovery
PIRT 기반 온라인 recovery 설정 복잡
3.스 트림 기반 복사 메 인 모드
이것 은 postgres 9 의 새로운 기능 을 사용 합 니 다.초기 설정 테스트 는 모두 easy 이 고 failover 도 좋 습 니 다.그러나 서비스 가 pgpool 에 연결 되 었 을 때 사 무 는 postgres error:failed to read kind from backend 를 잘못 보고 합 니 다.이것 은 제 가 이전 글 에서 언급 한 바 와 같이 지금까지 해결 할 수 없습니다.
4,연결 수의 어려움
num_init_children 은 원래 하나의 풀 크기 로 이해 되 었 습 니 다.초과 하면 자동 으로 증가 하지만 실제 적 으로 부족 합 니 다.정확히 말 하면 이 값 도 pgpool-II 가 지원 하 는 클 라 이언 트 에서 시작 하 는 최대 병렬 연결 수 입 니 다.
따라서 이 값 을 최대한 크게 맞 추고 이 값 의 변경 은 pgpool 을 다시 시작 해 야 합 니 다.
5,client_idle_limit 설정 하지 마 세 요
클 라 이언 트 가 마지막 조 회 를 실행 한 후에 clientidle_limit 초,이 클 라 이언 트 로 의 연결 이 끊 깁 니 다.연결 은 pgpool 로 하여 금 끊 게 해 서 는 안 됩 니 다.주동 적 으로 끊 어야 합 니 다.pgpool 을 끊 으 면 클 라 이언 트 가 사용 할 수 없습니다.
물론 pgpool 도 연결 애플 리 케 이 션 을 빠르게 찾 을 수 있 는 장점 이 있 습 니 다.모든 연결 은 단독 프로 세 스 이기 때문에 시작 하면 numinit_children 프로 세 스 가 연결 을 받 아들 일 수 있 습 니 다.
사용\#ps-ef|grep pgpool 에서 볼 수 있 습 니 다.
pgpool:wait for connection request 의 프로 세 스 는 빈 프로 세 스 입 니 다.연결 을 기다 리 고 있 습 니 다.
pgpool:postgres dbtest 10.11.53.167(51883)idle 이 프로 세 스 들 은 사용 중인 프로 세 스 이 며,어떤 기계,어떤 사용자,어떤 데이터 베 이 스 를 연결 하 는 지 볼 수 있 습 니 다.
물론 select*from pgstat_activity 에서 도 연결 상황 을 찾 을 수 있 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기