|
PostgreSQL의 Replication 구축PostgreSQL replication Streaming 방식을 구축하는 과정을 기술해 본다.
Master 서버의 postgresql.conf 파일 수정하기자신에게 맞는 편한 editor 를 사용해서 편집하면 된다. postgresql.conf 에는 여러가지 환경설정 값을 수정할 수 있다.
listen_addresses = '*' wal_level = replica max_wal_senders = 2 wal_keep_segments = 32 |
listen_addresses
wal_level
max_wal_senders
kimchki 10225 1 0 11:23 pts/1 00:00:00 /home/kimchki/postgresql/bin/postgres kimchki 10227 10225 0 11:23 ? 00:00:00 postgres: checkpointer process kimchki 10228 10225 0 11:23 ? 00:00:00 postgres: writer process kimchki 10229 10225 0 11:23 ? 00:00:00 postgres: wal writer process kimchki 10230 10225 0 11:23 ? 00:00:00 postgres: autovacuum launcher process kimchki 10231 10225 0 11:23 ? 00:00:00 postgres: stats collector process kimchki 10243 10225 0 11:23 ? 00:00:00 postgres: wal sender process kimchki 10.0.2.2(58506) streaming 0/F60001E8 |
wal_keep_segments
max_wal_senders, wal_keep_segments
Master 서버의 pg_hba.conf 파일 수정하기
host replication kimchki 0.0.0.0/0 trust |
Master 서버의 PostgreSQL 재시작하기변경된 설정 파일을 적용하기 위해 master 서버의 PostgreSQL을 restart 시킨다.
Stand-by 서버 설정하기Stand-by 서버 postgresql.conf 파일을 백업해 놓고 postgresql data 폴더 안에 있는 모든 파일을 삭제 한다.
왜냐하면 master 서버 PostgreSQL data 를 가져와야 하기 때문이다. (비우지 않으면 다음 단계에서 해당 디렉토리가 비어있지 않다는 에러 메세지가 나올것이다.)
서버 데이터 복제하기master 서버 PostgreSQL data 를 stand-by 서버 PostgreSQL에 넣어야 한다. 왜냐하면 현재의 data 상태를 맞춰야 그 다음부터는 log 를 통해 data 를 동기화할 수 있기 때문이다.
pg_basebackup 프로그램을 사용하면 data 를 넣을 수 있다. (running 중인 PostgreSQL data 를 backup 해 주는 역할)
stand-by 서버에 접속한다.
shell 에서 아래 명령어를 수행한다.
% pg_basebackup -h MASTER_IP -D [data directory] -v -P -X stream |
pg_basebackup을 수행 후 아래와 같은 결과를 통해 정상적으로 수행되었음을 확인 할 수 있다.
pg_basebackup: initiating base backup, waiting for checkpoint to complete pg_basebackup: checkpoint completed transaction log start point: 0/F7000028 on timeline 1 pg_basebackup: starting background WAL receiver transaction log end point: 0/F7000130 pg_basebackup: waiting for background process to finish streaming ... pg_basebackup: base backup completed 2569818/2569818 kB (100%), 1/1 tablespace |
Stand-by 서버 postgresql.conf 파일 설정백업해 놓았던, stand-by 서버 postgresql.conf 파일을 PostgreSQL data 디렉토리에 overwrite 한다.
왜냐하면 PostgreSQL data 디렉토리에 있는 postgresql.conf 파일은 master 서버 postgresql.conf 파일이기 때문이다.
stand-by 서버 postgresql.conf 파일을 아래와 같이 수정하여 stand-by 기능을 활성화 시킨다.
hot_standby = on |
Stand-by 서버 recovery.conf 설정postgresql.conf 파일과 같은 경로에 recovery.conf 파일을 새롭게 생성하고 아래 내용을 입력한다.
standby_mode = on primary_conninfo = 'host=MASTER_IP port=5432 user=kimchki password=password' |
stand-by 기능을 활성화 시킨다.
primary_conninfo 에 master 서버 postgresql 정보를 입력한다. 이 정보를 이용해서 master 서버 PostgreSQL에 접속해서 실시간으로 WAL 내용을 전달 받는다.
wal sender 및 receiver process 확인master 서버에 보면 wal sender process 가 생성된것을 확인할 수 있다.
kimchki 10225 1 0 11:23 pts/1 00:00:00 /home/kimchki/postgresql/bin/postgres kimchki 10227 10225 0 11:23 ? 00:00:00 postgres: checkpointer process kimchki 10228 10225 0 11:23 ? 00:00:00 postgres: writer process kimchki 10229 10225 0 11:23 ? 00:00:00 postgres: wal writer process kimchki 10230 10225 0 11:23 ? 00:00:00 postgres: autovacuum launcher process kimchki 10231 10225 0 11:23 ? 00:00:00 postgres: stats collector process kimchki 10243 10225 0 11:23 ? 00:00:00 postgres: wal sender process kimchki 10.0.2.2(58506) streaming 0/F60001E8 |
stand-by 서버에 보면 wal receiver process 가 생성된것을 확인할 수 있다.
kimchki 21547 1 0 11:23 pts/2 00:00:00 /home/kimchki/postgresql/bin/postgres kimchki 21548 21547 0 11:23 ? 00:00:00 postgres: startup process recovering 0000000100000000000000F6 kimchki 21549 21547 0 11:23 ? 00:00:00 postgres: checkpointer process kimchki 21550 21547 0 11:23 ? 00:00:00 postgres: writer process kimchki 21551 21547 0 11:23 ? 00:00:00 postgres: stats collector process kimchki 21552 21547 0 11:23 ? 00:00:00 postgres: wal receiver process streaming 0/F60001E8 |
Replication 동작 확인master 서버 PostgreSQL에 data 변경을 하고, stand-by 서버 PostgreSQL에 변경사항이 잘 적용되는지 확인한다.
|