-
Postgresql-9.6 Master Slave replication configTech/DS 2017. 6. 6. 22:09반응형OS: CensOS 7DB: Postgresql 9.6Master DB :IP: 10.10.10.10Slave DB :IP: 10.10.10.11Slave 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.confwal_level = 'hot_standby'archive_mode = onarchive_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.confstandby_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.confstandby_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
반응형'Tech > DS' 카테고리의 다른 글
자동 증가 컬럼생성 방법 (0) 2017.08.14 데이터베이스 인덱싱 생성 방법 (0) 2017.08.02 postgresql install and change data directory on Centos 7 (0) 2017.06.04 Postgresql daily auto partition (0) 2017.06.02 Postgresql session issue 해결방법 (0) 2017.06.02