반응형
고가용성(High Availability)
개요
고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말합니다.
- 두가지 서버로 구성됩니다.
- read/write, master, primary: 데이터 수정 가능한 서버
- standby, secondary: primary 서버의 변경사항을 추적하여 반영하는 서버
- 두 서버는 함께 작동하며 primary 서버가 문제가 발생할 경우 standby서버가 인계 받아 동작합니다.
- warm standby server : primary서버로 승격 될 때 까지 연결 불가
- hot standby server : 연결 허용 및 읽기 전용 쿼리 제공
- 서버간 로그 전달 방식은 다음과 같이 구분됩니다.구분 설명
구분 설명 동기식 - 모든 서버가 트랜잭션을 커밋할 때까지 데이터 수정 트랜잭션이 커밋된 것으로 간주되지 않습니다.
- 장애 조치(failover)로 인해 데이터가 손실되지 않고 서버에 관계없이 일관된 결과를 반환합니다.비동기식 - 커밋 시간과 다른 서버로의 전파 사이에 약간의 지연이 발생하여 백업 서버로 전환 할 때 일부 트랜잭션이 손실 될 수 있으며, 로드밸런싱 된 서버가 오래된 결과를 반환합니다.
- 동기식 통신이 너무 느릴 때 사용됩니다.
여러 해결 기법 비교
PostgreSQL에는 고가용성을 위한 여러 솔루션들이 있습니다.
- 공유디스크 failover
- 하나의 shared disk를 사용하며, primary 서버만 액세스 합니다.
- failover 발생시, standby 서버가 액세스하며 데이터 손실 없이 신속한 조치 가능합니다.
- 파일 시스템 복제
- 파일 시스템의 모든 변경하상을 동일하게 구성된 다른 서버에 미러링합니다.
- standby 서버의 WRITE는 primary 서버와 동일한 순서로 진행됩니다.
- WAL Shipping
- standby 서버는 Write-Ahead Log 라는 레코드 스트림을 읽어 동기화를 수행합니다.
- file-based log shipping, streaming replication 방식으로 사용 가능합니다.
- Logical Replication
- Replication ID(기본 : primary key)를 기반으로 데이터 오브젝트 및 변경내용을 복제합니다.
- primary - second 모델과 다른, N : N의 publisher - subscriber 모델 사용합니다.
- Trigger-based Replication
- 데이터 변경이 발생할 경우, primary 서버가 처리하고 Trigger를 통해 비동기적으로 standby에 복제합니다.
- 테이블 단위 컨트롤 가능하며, DDL 복제는 지원되지 않습니다.
- Slony-I를 이용하여 구현 가능합니다.
- statemant-based
- 미들웨어 프로그램이 모든 SQL 쿼리를 받아 HA 구성된 서버로 로드 밸런싱하게 전송 가능합니다.
- pgpool-II을 이용하여 구현 가능합니다.
- aynchronous multimaster
- 모든 SQL 쿼리를 받아 HA 구성된 서버로 로드 밸런싱하게 전송 가능
- burcardo을 이용하여 구현 가능합니다.
- synchronous multimaster
- 각 서버는 쓰기 요청을 수락할 수 있으며 수정된 데이터는 각 트랜잭션이 커밋되기 전에 원본 서버에서 다른 모든 서버로 전송됩니다.
- 읽기 요청은 모든 서버로 보낼 수 있습니다.
- 쓰기 작업이 많으면 과도한 잠금 및 커밋 지연이 발생하여 성능이 저하될 수 있습니다.
- PostgreSQL은 이러한 유형의 복제를 제공하지 않지만 PostgreSQL 2단계 커밋( PREPARE TRANSACTION 및 COMMIT PREPARED )을 사용하여 애플리케이션 코드 또는 미들웨어에서 이를 구현할 수 있습니다.
반응형
'PostgreSQL' 카테고리의 다른 글
| PostgreSQL 14 Streaming Replication (0) | 2023.06.03 |
|---|---|
| PostgreSQL 14.2 File-based Log Shipping Replication - Failover (0) | 2023.06.02 |
| PostgreSQL 14.2 File-based Log Shipping Replication 구축하기 (2) | 2023.06.02 |
| CentOS7.9에서 설치한 PostgreSQL 제거하기 | Uninstalling PostgreSQL from CentOS 7.9 (0) | 2023.06.01 |
| CentOS 7.9에 PostgreSQL 14.2 설치하기 | Installing PostgreSQL 14.2 in CentOS 7.9 (0) | 2023.05.31 |