Database 서버 이중화(HA) 구성이란?
이 작업은 복수의 DB Server를 준비한 상태에서 Active-Active 또는 Active-Standby로 동작시키면서 이 중 일부의 Server에 문제가 발생하더라도 전체 서비스가 멈추는 사고를 방지하기 위해서 이루어진다.
- Data는 전체 DB Cluster에 반영되어야 한다는 것이다. DB Server가 몇 개이건 모두 공통된 최신 Data를 가져야 한다는 것이고 이것은 DB Replication을 통해 이루어진다.
- DB에 전달되는 각종 Request들이 DB Cluster 내에 존재하는 여러 DB Server에 골고루 전달되어서 실행되게 하는 분산 환경이 구성되어야 하고 이것을 Load Balance라고 한다.
- Active-Standby로 구성된 DB Cluster에서 Active로 있던 Primary DB Server에 문제가 생겼을 때 Standby Server들 중 1대가 Primary DB Server의 역할을 해야 한다. 이것을 Failover라 한다.
PostgreSQL Replication 구조
- Master는 클라이언트로부터 받은 DB 변경 Query에 따라 DB를 변경하고, 변경 내용을 Slave DB에 전달
- Slave DB는 Master로부터 전달 받은 변경 내용으로 Replication을 수행
- Slave DB 앞 단에는 Load Balancer를 두어 클라이언트로부터 오는 Read 요청을 적절히 분산
1. WAL(Write-Ahead Log) Replication 방식
- Master DB는 주기적으로 Archive에 WAL을 주기적으로 복사, Slave DB는 Segment File 단위로 WAL을 복사
- WAL의 변경 내용을 쌓았다가 한번에 전달되는 방식이라 갑작스런 Master DB의 Down시 대량의 Data 손실
2. Streaming Replication 방식
- Master DB의 WAL에 기록된 내용을 변경 내용 단위인 Record 단위로 바로 Slave DB에게 전달
- Master DB의 갑작스러운 Down으로 발생하는 Data 손실을 최소화
'Database > PostgreSQL' 카테고리의 다른 글
# PostgreSQL HA 구성 - PGPoolⅡ (11) | 2019.10.23 |
---|---|
# PostgreSQL Streaming Replication 구성 (0) | 2019.10.23 |