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

윈썸지니의 별책부록

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

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

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

    2020. 9. 9.

    by. 윈썸지니

    반응형

    PostgreSQL 의 이중화 구성 방법 중 Active-Standby 로 구성하는 방법을 포스팅합니다.

     

    먼저 이중화 구성 방법을 개념도로 설명하여 이해를 돕겠습니다.

     

    1. 정상 동작 중일 경우

    정상 동작 시 구성 형태 입니다. Primary(Active) 서버에서 DB에 read/write 하고 secondary( Standby ) 서버는 read 만 가능합니다. Primary 서버에 변경된 데이터는 스트리밍 복제 방식으로 Secondary 서버에 계속 반영됩니다.

     

     

    2. Active 서버 장애 발생시 : failover

    Primary 서버에 장애가 발생하여 더 이상 DB 를 사용 할 수 없을 경우 입니다.

    이때는 secondary 서버를 Active 상태로 만들고 프로그램에서는 secondary 서버만 연결하여 사용합니다. 이렇게 만들어 주는 것을 Failover 라고 합니다.

     

    3. 장애 복구 후 원복 : Failback

    Primary 서버의 장애가 해결이 되면 2번 상황에서 Active 의 역할을 하였던 secondary 서버를 다시 standby 서버로 구성해 주고 그 동안 변경된 데이터가 있으므로 다시 primary 서버에 동기화 해 줍니다. 이렇게 하는 것을 Failback 이라고 하며 다시 1번과 같은 상황으로 구성을 하여 운영합니다.

     

     

    [ Postgres DB초기 설정 ]

     

    1. 방화벽 정지 ( Primary, Standby 두대 모두 실행 )

    #> systemctl stop firewalld

     

    2. DB 초기화 ( Primary, Standby 두대 모두 실행 )

    #> cd /usr/pgsql-10/bin     -->  설치 위치 이동하여 실행
    #> sudo ./postgresql-10-setup initdb
     
    Initializing database ... OK

     

    3. DB 기동 ( Primary, Standby 두대 모두 실행 )

    #> systemctl start postgresql-10

     

    4. 관리자 비밀 번호 초기화 ( Primary, Standby 두대 모두 실행 )

    #> su – postgres
    postgres=# psql -dpostgres
    psql (10.11)
    도움말을 보려면 "help"를 입력하십시오.
    postgres-# \password postgres
    새 암호를 입력하세요:password
    다시 입력해 주세요: passwod
     
    postgres-# \q

     

    5. OS의 postgres 계정 비밀번호 변경 ( Primary, Standby 두대 모두 실행 )

    #> passwd postgres
    postgres 사용자의 비밀 번호 변경 중
    새  암호:password
    잘못된 암호: 암호는 사전 검사에 실패했습니다  - 사전에 있는 단어를 기반으로 합니다
    새  암호 재입력: password
    passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

     

     

    [ PostgreSQL 복제 구성 ]

     

    1. 프로세스 시작 또는 중지

     - Primary 는 시작

    #> systemctl restart postgresql-10

    - Standby는 중지

    #> systemctl stop postgresql-10

     

    2. 아카이브 디렉토리 생성 ( Primary, Standby 두대 모두 실행 )

    #> mkdir -p /var/lib/pgsql/10/archive
    #> chown -R postgres:postgres /var/lib/pgsql/10/archive
     

     

    3. 복제 계정 생성 ( Primary 만 실행 )

    #> su - postgres
    > psql
    psql (10.11)
    도움말을 보려면 "help"를 입력하십시오.
     
    postgres=# create user repusrr replication login encrypted password 'password' connection limit -1;
    CREATE ROLE
     
    postgres=# \du
     
     postgres=# \q

     

    4. postgresql.conf 수정 ( Primary 만 실행 )

    archive아니면, archive_* 앞에 # 합니다.

    #> 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'
    max_wal_senders = 3
    wal_keep_segments = 64
    hot_standby = on
    logging_collector = on

     

    5. pg_hba.conf 수정 ( Primary 만 실행 )

    #> su – postgres
    > vi /var/lib/pgsql/10/data/pg_hba.conf
     
    host    all           all       192.168.xxx.0/24          md5
    local replication    postgres                            trust
    host  replication    repuser    192.168.xxx.101/32        md5
    host  replication    repuser    192.168.xxx.102/32        md5

     

     

    6. DB 재기동 ( Primary 만 실행 )

    #> systemctl restart postgresql-10

     

    7. Primary 서버의 데이터 복제 ( Standby 만 실행 )

    #> mv /var/lib/pgsql/10/data /var/lib/pgsql/10/data.org
    #> mkdir /var/lib/pgsql/10/data
    #> chown -R postgres:postgres /var/lib/pgsql/10/data
    #> chmod -R 0700 /var/lib/pgsql/10/data
    #> su - postgres
    > export LANG=C
    > cd /usr/pgsql-10/bin
    > ./pg_basebackup -h 192.168.xxx.101 -D /var/lib/pgsql/10/data -U repuser -v -P -X stream
     
    Password:password
    pg_basebackup: initiating base backup, waiting for checkpoint to complete
    pg_basebackup: checkpoint completed
    pg_basebackup: write-ahead log start point: 0/D000028 on timeline 1
    pg_basebackup: starting background WAL receiver
    24592/24592 kB (100%), 1/1 tablespace
    pg_basebackup: write-ahead log end point: 0/D0000F8
    pg_basebackup: waiting for background process to finish streaming ...
    pg_basebackup: base backup completed

     

    8. postgresql.conf 수정 ( Standby 만 실행 )

    아카이브 # 처리

    #> 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'
    max_wal_senders = 3
    wal_keep_segments = 64
    hot_standby = on
    logging_collector = on

     

    9. recovery.conf  작성 ( Standby 만 실행 ) 

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

    재기동도 해 줍니다.

     

     

    10. 테스트

    1) Primary 서버에 테이블을 생성해서 데이터를 입력합니다.

    2) Standby 서버에서 1)에서 입력한 데이터를 조회해 봅니다. 조회가 되면 구성이 완료 되었습니다.

     

    위의 내용은 1번 개념에 대한 내용을 구성하는 방법입니다.

    이상으로 이중화 복제 구성하는 방법에 대한 포스팅을 하였습니다.

     

    다음 포스팅에서는 2번, 3번 개념에 해당하는 장애 발생시 standby 서버가 읽기/쓰기가 가능하여 primary 역할을 할 수 있도록 구성 변경하는 방법 및 다시 1번의 개념을 되돌리는 failback 하는 내용을 포스팅 예정입니다. 

     

     

    환전, 잔돈 없이 다녀온 태국 여행 필수 어플 및 후기(ft. 하나은행 GLN QR결제)

    태국은 전자결재 시스템이 잘 되어 있는 나라입니다. 국내에서 태국 통화인 바트로 환전하지 않고 현지에서 결제 시 간단하게 QR코드로 결제할 수 있는 방법에 대해 알아보겠습니다. 해외여행을

    jinisbonusbook.tistory.com

     

    알바 주휴수당 기준 확인 및 계산해 보기

    최저임금이 매년 상승되면서 연초에 주휴수당 폐지 논란도 있었습니다. 현재는 시행 중에 있으므로 주휴수당 지급 기준 및 계산법에 대하여 알아보겠습니다. 알바를 하고 있는데 주휴수당을 제

    jinisbonusbook.tistory.com

     

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

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

    jinisbonusbook.tistory.com

     

    모르면 손해 보는 운동하고 지원금 받는 서비스(ft.국민체력100)

    국민체육진흥공단에서 진행하는 국민체력100 서비스 중 스포츠 활동을 하면 인센티브를 받을 수 있는 서비스에 대하여 알아보겠습니다. 운동은 해야 하는데, 하면서 차일피일 미루기 마련입니

    jinisbonusbook.tistory.com

     

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

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

    PostgreSQL 이중화(HA) 구성 방법 #2 - Failover, Failback  (0) 2020.09.09
    PostgreSQL 이중화를 위한 DB yum으로 설치하기  (2) 2020.08.28

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

    • PostgreSQL 이중화(HA) 구성 방법 #2 - Failover, Failback 2020.09.09
    • PostgreSQL 이중화를 위한 DB yum으로 설치하기 2020.08.28
Designed by Organic
블로그 이미지
윈썸지니

티스토리툴바