본문 바로가기

DS

Postgresql-9.6 Master Slave replication config

반응형



OS: CensOS 7
DB: Postgresql 9.6

Master DB :
IP: 10.10.10.10
Slave DB :
IP: 10.10.10.11
Slave DB :
IP: 10.10.10.12

구성:
마스터 와 두대의 슬레이브 로 구성하여 Replication 하도록 한다.
구성 1

10.10.10.10

        | |

10.10.10.11 10.10.10.12

두대의 slave 서버가 마스터를 바라보고 있는 형태이다.(장단점은?)

구성 2

10.10.10.10 -> 10.10.10.11 -> 10.10.10.12

마스터 서버가 slave 1 을 바라보고,slave 2 는 slave 1 을 바라보도록 한다.

(장단점은?)

위의 두가지 설정의 다른점:

pg_hba.conf 파일에서 replication 서버 주소를 바라보고 있는 서버주소로 설정 해주는것

recovery.conf 파일에서 primary 서버주소를 바라보고 있는 서버주소로 설정 해주는것

- Postgresql 9.6 설치: 지난번 포스팅 한 것으로 대체 한다.
- Master 서버 설정
* replication slave 서버 설정
#vi /mnt/data/postgres/pg_hba.conf
* Slave 주소 slave1->10.10.10.11,slave2->10.10.10.12 을 추가해주도록 한다.
replication 주소에 자신의 IP 주소도 추가하도록 한다.
trust 는 비밀번호 필요없이 접속 가능하도록 한다.(필요하면 md5 로 변경 )
=>host replication postgres 10.10.10.10/32 trust
=>host replication postgres 10.10.10.11/32 trust
=>host replication postgres 10.10.10.12/32 trust
* replication 설정
# vi /mnt/data/postgres/postgresql.conf

wal_level = 'hot_standby'
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 3 #마스터 서버를 바라보는 대기서버(slave 서버)개수,대기서버의 수보다 많게 지정해주는것이 좋음
hot_standby = on
- Master DB 재시작
# systemctl restart postgresql-9.6

- Slave 서버설정 (10.10.10.11,10.10.10.12 설정 동일)
* postgres 계정 패스워드 설정 (여기서 계정은 디폴트 계정인 postgres 를 사용하도록 한다.)
* Master 의 데이터를 복제하기 위해 rsync 를 사용할때 필요함
# sudo passwd postgres
# new Password
* Master DB 동기화할 디렉터리 생성 및 권한 설정
# mkdir /mnt/data/postgres
# chmod 700 /mnt/data/postgres
# chown -R postgres:postgres /mnt/data/postgres

- Master DB 를 Slave DB 1,2 로 동기화

# su - postgres
$ psql -c "select pg_start_backup('initial_backup');"
$ rsync -cva /mnt/data/postgres 10.10.10.11:/mnt/data/
$ password 입력
$ rsync -cva /mnt/data/postgres 10.10.10.12:/mnt/data/
$ password 입력
* 각각의 슬레이브 서버의 /mnt/data/ 밑에 postgres 폴더로 Master DB가 동기화 된다.
$ psql -c "select pg_stop_backup();"

- Slave 서버 설정 (1)
* pg_hba.conf 파일 설정 (자신의 아이피 와 바라보고 있는 서버의 주소를 입력)
# vi /mnt/data/postgres/pg_hba.conf
=> host replication postgres 10.10.10.11/32 trust
=> host replication postgres 10.10.10.10/32 trust
* recovery.conf 파일 설정
(파일이 존재 하지 않기때문에 새로 생성,primary 정보는 바라보고 있는 서버의 주소를 입력)
(만약 구성 1 로 할 경우 1,2 번 슬레이브 모두 master 서버 주소를 입력 하도록 한다.)
(여기서는 구성 2 로 하도록 한다.)
#vi /mnt/data/postgres/recovery.conf
standby_mode='on'
primary_conninfo='host=10.10.10.10 port=5432 user=postgres password=xxxx'
trigger_file='/mnt/data/postgres/postgresql.trigger.5432'
* slave 서버 재시작
#systemctl start postgresql-9.6

- Slave 서버 설정 (2)
* pg_hba.conf 파일 설정 (자신의 아이피 와 바라보고 있는 서버의 주소를 입력)
# vi /mnt/data/postgres/pg_hba.conf
=> host replication postgres 10.10.10.12/32 trust
=> host replication postgres 10.10.10.11/32 trust
* recovery.conf 파일 설정
(파일이 존재 하지 않기때문에 새로 생성,primary 정보는 바라보고 있는 서버의 주소를 입력)
(만약 구성 1 로 할 경우 1,2 번 슬레이브 모두 master 서버 주소를 입력 하도록 한다.)
(여기서는 구성 2 로 하도록 한다.)
#vi /mnt/data/postgres/recovery.conf
standby_mode='on'
primary_conninfo='host=10.10.10.11 port=5432 user=postgres password=xxxx'
trigger_file='/mnt/data/postgres/postgresql.trigger.5432'
* slave 서버 재시작
#systemctl start postgresql-9.6

- 테스트
* Master DB 에서 데이터베이스 생성 및 테이블 생성 , 데이터를 입력해본다.
* Slave DB 에서 Master DB 가 동기화 되었는지 확인해 본다.

- 참고:

* Ref 01

* Ref 02



반응형