2. DBMS이야기/01. PostgreSQL

Streaming Replication

OSSW(Open Source System SoftWare 2014. 10. 18. 17:04

Streaming Replication

 

1. Architecture

 

 

   - Streaming Replication은 동기/비동기 방식 지원

   - Master DB는 업데이터 로그(WAL)를 생성 후 Slave로 전달 함

   - Slave는 데이터베이스 복구 모드로만 운영 되어야 함

   - Master와 Slave의 DB는 동일한 버전 및 아키텍처도 동일해야 함

   ※ Streaming 방법은 Mater에서 Slave 서버로 직접 WAL Record를 전송하므로 전송시간을 줄일 수 있음

 

2. 실습환경 구성

MASTER

  postgresql.conf 설정

  

log_connection = on

max_wal_senders = 2 

wal_level = archive

 

archive_command = ""

wal_keep_segments = 10000   ; replication 용도로 남겨둘 WAL 파일 개수 지정 

synchronous_standby_names = salve1 ; replication을 동기화 방식으로 처리하고자 할 때 지정

                                                         master/slave 모두 동일한 이름으로 설정

 

  pg_hba.conf 설정

 

host replication enterprisedb slave_ip md5     ; replication 용도로 standby DB의 접속 권한 적용 

 

SLAVE

 - MASTER DB의 Backup 본을 이용해 Standby DB Open

 

  recovery.conf 설정

 

standby_mode = on

primary_conninfo = 'host=master_ip port=master_port user=... password=... applicatioin_name=slave1'

 

  - Master DB의 접속정보 등록

  - application_name을 이용한 sync 방식의 replication 구성

    (단, sync 방식으로 replication 구성 시 Slave DB가 멈춰버리면 Master DB 입력처리가 안됨)

 

 

3. 실습환경 구성 후

MASTER

 

[enterprisedb@ppas01 pgdata]$ ps -ef | grep post

/postgres/9.2AS/bin/edb-postgres

postgres: logger process       

postgres: checkpointer process  

postgres: writer process       

postgres: wal writer process    

postgres: autovacuum launcher process  

postgres: stats collector process  

postgres: wal sender process enterprisedb 192.168.50.132[49575] idle

 

SLAVE

 

[enterprisedb@ppas02 data]$ ps -ef | grep post

/postgres/9.2AS/bin/edb-postgres

postgres: startup process   waiting for 000000010000000000000016

postgres: checkpointer process  

postgres: writer process       

postgres: wal receiver process

 

 

4. Data 입력 후

MASTER

 

postgres: wal sender process enterprisedb 192.168.50.132[49575] streaming 0/16001680

 

SLAVE

 

postgres: startup process   recovering 000000010000000000000016

postgres: wal receiver process   streaming 0/16001680

 

 

 

  Slave DB는 Select 전용으로 활용하지 못함

 

[enterprisedb@ppas02 data]$ psql

2014-03-12 02:30:34 GMT FATAL:  the database system is starting up

psql: FATAL:  the database system is starting up

 

 

posted by. 신기철 (10.17)