db1~5 5대에서 cascading replication, pgpool 실습
- 환경:
- PostgreSQL 9.3
- pgpool 3.4
$ sudo -u postgres -i
$ nohup pgpool --config-file=$PGPOOL_BASE/conf/pgpool.conf --pcp-file=$PGPOOL_BASE/conf/pcp.conf --hba-file=$PGPOOL_BASE/conf/pool_hba.conf --dont-detach > $PGPOOL_BASE/logs/pgpool-$(date +%Y%m%d_%H%M%S).log &
$ pgpool --config-file=$PGPOOL_BASE/conf/pgpool.conf --pcp-file=$PGPOOL_BASE/conf/pcp.conf --hba-file=$PGPOOL_BASE/conf/pool_hba.conf reload
$ pgpool --config-file=$PGPOOL_BASE/conf/pgpool.conf --pcp-file=$PGPOOL_BASE/conf/pcp.conf --hba-file=$PGPOOL_BASE/conf/pool_hba.conf --mode fast stop
위 명령으로 한번에 죽지 않을 경우,
$ killall -9 pgpool
$ rm -f /tmp/.s.PGSQL.{5433,9898} # socket 파일 제거
$ sudo ifconfig eth1:0 down # VIP 인터페이스 down
$ /usr/pgpool-9.3/bin/pg_md5 --prompt # md5 hash 생성
pcp.conf 에 username:해시
형태로 기록.
ex) pcp:3d27c2e24377377bdd907962a53e13eb
$ /usr/pgpool-9.3/bin/pg_md5 --config-file /app/postgresql/pgpool/conf/pgpool.conf --prompt --md5auth --username <pgpool/pg계정명>
postgres@db* $ pg_ctl -D /data/pg_data start
postgres@db* $ pg_ctl -D /data/pg_data stop
postgres@db3 $ pg_basebackup --host=db2 --username=repl --verbose --progress --xlog --pgdata=/data/pg_data
--host
: 원본 호스트--username
: replication DB 계정--progress
: 진행 프로그레스 바 표시--xlog
: 복제를 진행하면서 변경된 WAL LOG도 같이 복제--pgdata
: 대상 디렉터리 명
온라인으로 원본 호스트로부터 데이터 디렉터리를 통째로 복제.
$ vagrant ssh vm-name
# ex) $ vagrant ssh db1
$ vagrant up [vm-name] # 미지정시 전체 대상
자동으로 db1~db5 5대의 VM이 설정되고 프로비저닝 스크립트가 수행된다.
$ vagrant halt [vm-name] # 미지정시 전체 대상
프로비저닝 스크립트가 변경되었거나 오류 등으로 중단되어 다시 실행하고자 할 경우.
$ vagrant provision [vm-name] # 미지정시 전체 대상
- 공식 문서, 18.4. Resource Consumption / 번역
- PgTune: 설정파일 자동 계산
-
pgFouine - a PostgreSQL log analyzer