윈썸지니의 별책부록
메인화면
  • 분류 전체보기
    • IT 이야기 공간
      • 프로그램 언어
      • 데이터베이스
      • 운영체제
      • 오픈소스
    • 재테크 공간
      • 돈되는 알짜 정보
      • 편리한 생활정보
메인화면
  • 분류 전체보기
    • IT 이야기 공간
      • 프로그램 언어
      • 데이터베이스
      • 운영체제
      • 오픈소스
    • 재테크 공간
      • 돈되는 알짜 정보
      • 편리한 생활정보
블로그 내 검색

윈썸지니의 별책부록

재테크, 생활정보, 알짜정보, 경제정보, 금융정보등의 생활에 편리한 정보를 전달해드립니다.

  • IT 이야기 공간/데이터베이스

    PostgreSQL 이중화(HA) 구성 방법 #2 - Failover, Failback

    2020. 9. 9.

    by. 윈썸지니

    반응형

    이전 포스팅에서 PostgreSQL 스트리밍 방식 이중화 구성 관련 초기 설정 방법에 대해 포스팅하였습니다.

    [IT 이야기 공간/데이터베이스] - PostgreSQL 이중화(HA) 구성 방법 #1 - 개념 및 초기 복제 구성

     

    PostgreSQL 이중화(HA) 구성 방법 #1 - 개념 및 초기 복제 구성

    PostgreSQL 의 이중화 구성 방법 중 Active-Standby 로 구성하는 방법을 포스팅합니다. 먼저 이중화 구성 방법을 개념도로 설명하여 이해를 돕겠습니다. 1. 정상 동작 중일 경우 정상 동작 시 구성 형태 �

    jinisbonusbook.tistory.com

     

    이번 포스팅은 primary (Active) 서버에 장애 발생시 standby 서버가 Active 서버 역할(Failover)을 할 수 있도록 구성하는 방법과 Primary 서버의 장애가 해결 되었을때 다시 원래 상태로 되돌리는(Failback) 방법에 대해 포스팅 합니다.

     

     

    [ Primary 서버의 DB에 장애가 발생하여 사용 할 수 없을 경우 : failover ]

     

    1. Primary 서버 기동 중지

    #> systemctl stop postgresql-10

     

    2. standby 서버 운영 서버로 전환

    #> su – postgres
    > vi /var/lib/pgsql/10/data/postgresql.conf
     
    archive_mode = on # (change requires restart)
    archive_command = 'test ! -f /var/lib/pgsql/10/archive/%f && cp %p /var/lib/pgsql/10/archive/%f'
     
    archive_*의 #을 제거한다.
     
    #> su – postgres
    > cd /usr/pgsql-10/bin
    > ./pg_ctl promote
     
    waiting for server to promote.... done
    server promoted

     

    3. 운영 서버로 전환된 standby 서버의 쓰기 테스트

    standby 서버의 임의의 테이블에 데이터를 insert가 가능한지 테스트 해 봅니다.

     

     

    [ Primary 서버를 다시 운영 서버로 전환 : failback ]

    primary 서버의 장애가 해결 되었을 경우 다시 원래 상태로 되돌리는 방법입니다.

    즉 primary 서버를 active 서버로 만들고 standby 서버를 다시 읽기만 가능한 서버로 구성하는 방법입니다.

     

    1. postgresql.conf 수정 ( Primary 서버에서 )

    #> su – postgres
    > vi /var/lib/pgsql/10/data/postgresql.conf
     
    #archive_mode = on # (change requires restart)
    #archive_command = 'test ! -f /var/lib/pgsql/10/archive/%f && cp %p /var/lib/pgsql/10/archive/%f'

     

    2. recovery.conf 생성 ( Primary 서버에서 )

    #> su – postgres
    > vi /var/lib/pgsql/10/data/recovery.conf
     
    standby_mode = 'on'
    primary_conninfo = 'host=192.168.xxx.102 port=5432 user=repuser password=password'
    restore_command = 'cp /var/lib/pgsql/archive/%f %p'
    recovery_target_timeline = 'latest'
    trigger_file = '/tmp/postgresql.trigger.5432'
     
    #> systemctl start postgresql-10
     

    3. pg_rewind  ( Primary 서버에서 )

    #> su – postgres
    > cd /usr/pgsql-10/bin
    > ./pg_rewind \
      --target-pgdata /var/lib/pgsql/10/data \
      --source-server="host=192.168.246.105 port=5432 user=postgres password=passw0rd" \
    --progress
     
    connected to server
    servers diverged at WAL location 0/4026FF0 on timeline 2
    rewinding from last common checkpoint at 0/4026F48 on timeline 2
    reading source file list
    reading target file list
    reading WAL in target
    need to copy 69 MB (total source directory size is 104 MB)
    70876/70876 kB (100%) copied
    creating backup label and updating control file
    syncing target data directory
    Done!
     
    #> systemctl start postgresql-10
     

     

     

    4. 정상적으로 구성 되었는지 확인 

      - Primary 서버에서

    #> su – postgres
    > cd /usr/pgsql-10/bin
    > export LANG=C
    > ./pg_controldata | grep cluster
     
    Database cluster state:               in archive recovery

    - Standby 서버에서

    #> su – postgres
    > cd /usr/pgsql-10/bin
    > export LANG=C
    > ./pg_controldata | grep cluster
     
    Database cluster state:               in production

    5. 데이터 복구 확인  ( Primary 서버에서 )

    standby에서 입력 되었던 데이터를 조회하여 정상적으로 조회되는지 확인합니다.

     

    6. recovery.done 복구 ( Standby 서버에서 )

    #> systemctl stop postgresql-10
     
    #> su – postgres
    > cd /var/lib/pgsql/10/data
    > mv recovery.done recovery.conf
     
    #> su – postgres
    > vi /var/lib/pgsql/10/data/postgresql.conf
     
    listen_addresses = '*'
    port = 5432
    wal_level = hot_standby
    wal_log_hints = on
    #archive_mode = on # (change requires restart)
    #archive_command = 'test ! -f /var/lib/pgsql/10/archive/%f && cp %p /var/lib/pgsql/10/archive/%f'
     
    #> systemctl start postgresql-10
     

    7. postgresql.conf 수정 ( Primary 서버에서 )

    #> su – postgres
    > vi /var/lib/pgsql/10/data/postgresql.conf
     
    archive_mode = on # (change requires restart)
    archive_command = 'test ! -f /var/lib/pgsql/10/archive/%f && cp %p /var/lib/pgsql/10/archive/%f'
     
    archive_* 앞에 $을 제거한다.
     
    #> systemctl restart postgresql-10

     

     

    8. 정상적으로 구성 되었는지 확인 

      - Primary 서버에서

    #> su – postgres
    > cd /usr/pgsql-10/bin
    > export LANG=C
    > ./pg_controldata | grep cluster
     
    Database cluster state:               in production

    자동으로 production으로 됩니다.

     

    - Standby 서버에서

    #> su – postgres
    > cd /usr/pgsql-10/bin
    > export LANG=C
    > ./pg_controldata | grep cluster
     
    Database cluster state:               in archive recovery

     

    9. Failback 완료 확인

    Primary 서버에서는 데이터 입력을 해 봅니다.

    Standby 서버에서는 데이터 조회를 해 봅니다.

     

    이상으로 postgresql 스트리밍 이중화 구성 방법 및 복구 방법에 대한 포스팅이였습니다.

     

     

    2023 근로장려금 가능 여부 확인하고 신청하기(ft. 최대 330만원)

    2023년도 근로장려금 정기분 신청이 시작되었습니다. 근로장려금 지급 자격 조건, 신청기간, 신청방법에 대해 알아보겠습니다. 올해는 최대 330만원 까지 지급되며 기준도 조금 완화되었습니다.

    jinisbonusbook.tistory.com

     

    대형폐기물 방문, 스티커도 없이 간편하게 수거 신청하기

    대형폐기물 주민센터 방문 및 스티커 출력도 하지 않고 모바일로 간편하게 수거 신청하는 방법에 대해 알아보겠습니다. 대형폐기물 버릴 때 크기가 크고 무거운 것은 지정 장소까지 운반하는

    jinisbonusbook.tistory.com

     

    퇴직금 세금 계산하여 실수령액 확인하기 (ft. 2023년 개정)

    퇴직금 및 세금까지 계산하고 실수령 금액 확인하는 방법에 대해 알아보겠습니다. 모든 수입에는 세금이 있습니다. 퇴직금에도 세금이 있습니다. 퇴사 전 퇴직금에 대해 미리 계획이 있으실 텐

    jinisbonusbook.tistory.com

     

    연차 발생 기준 및 일수, 수당 계산기

    연차 휴일 발생 기준, 연차 일수, 미사용 시 수당 계산, 연차촉진제도 등에 대해서 알아보겠습니다. 우리는 모두 일을 하면서 쉬는 시간이 필요합니다. 일의 효율성을 높이고 건강한 삶을 유지하

    jinisbonusbook.tistory.com

     

    반응형
    저작자표시 비영리 변경금지 (새창열림)

    'IT 이야기 공간 > 데이터베이스' 카테고리의 다른 글

    PostgreSQL 이중화(HA) 구성 방법 #1 - 개념 및 초기 복제 구성  (0) 2020.09.09
    PostgreSQL 이중화를 위한 DB yum으로 설치하기  (2) 2020.08.28

    이 글을 본 사람들도 관심있게 본 글

    • PostgreSQL 이중화(HA) 구성 방법 #1 - 개념 및 초기 복제 구성 2020.09.09
    • PostgreSQL 이중화를 위한 DB yum으로 설치하기 2020.08.28
Designed by Organic
블로그 이미지
윈썸지니

티스토리툴바