ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Postgresql-9.6 Master Slave replication config
    Tech/DS 2017. 6. 6. 22:09
    반응형



    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



    반응형
Designed by Tistory.