반응형
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
반응형
'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 |