-
반응형
이전 포스팅에서 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 promoted3. 운영 서버로 전환된 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 production5. 데이터 복구 확인 ( 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-108. 정상적으로 구성 되었는지 확인
- 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 recovery9. 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