Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring Boot
- Maven Project
- Spring
- STS
- JSP
- PostgreSQL
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- HTML Special Entity
- Java
- maven
- springboot
- Spring Cloud
- Eclipse
- tortoise SVN
- exit code = -805306369
- Windows 10
- 서브라임 텍스트
- MariaDB
- NestJS
- typeorm
- PG-Strom
- BRIN
- Next.js
- graph database
- OGM
- tomcat
- NextJs
- HTML Code
- orioledb
- loadcomplete
Archives
- Today
- Total
Undergoing
Postgres Database Replication 본문
PostgreSQL Replication Type
- Physical
- File Based Log Shipping
- 완성된 WAL File을 standby server로 전달, Recovery를 통해 replication
- WAL 파일이 정해진 크기를 다 채운 후 새 파일이 생성되어야 기존 WAL 파일이 전달됨
- WAL 파일이 채워지는 동안 Master와 Standby 간의 데이터 지연 발생 가능
- archive_timeout param을 통해 WAL 파일을 주기적으로 변화하는 시간 지정하면 WAL이 다 차지 않아도 Archive 발생, 데이터 지연을 줄일 수 있으나 이 경우 archive directory 크기가 증가함
- Warm Standby
- standby에 사용자 연결 불가. 읽기 작업 수행 불가(Read-Only, SELECT)
- 현재는 거의 사용되지 않음
- Hot Standby
- standby에 사용자 연결 가능. 읽기 작업 수행 가능(Read-Only, SELECT)
- Streaming Replication
- WAL 파일 저장 여부와 관계 없이 WAL Record를 전달
- Master에는 WAL Record가 , Standby에는 WAL Receiver가 필요
- transaction commit 후 약간의 지연 시간이 발생하나, File-Based Log Shipping보다는 적음 → File-Based Log Shipping 방식에 비해 최신 상태로 standby 유지 가능
- 동기화 되지 않은 WAL Record가 포함된 WAL 파일이 삭제될 경우 동기화 진행 불가
- With Replication Slots
- Without Replication Slots
- Physical Replication은 서로 버전이 다를 경우에는 replication 불가
- File Based Log Shipping
- Logical
- publisher-subscriber로 구성됨
- subscript 중인 publisher의 data를 가져온 후 republish하여 스스로 publisher가 될 수 있고, 추가로 subscriber를 만들 수 있음
- Replication ID(primary key)를 기반으로 하여 Data object와 변경 내역을 복제. Primary Key 혹은 Unique Key를 Replication Id로 삼을 수 있음.
- 상기 두 가지가 존재하지 않을 경우 REPLICA IDENTITY FULL 옵션을 통해 Table 변경하여 사용할 수 있지만, 변경사항이 생길 때마다 Table을 전부 Replica 하므로 자주 업데이트 되는 Table일 경우 비효율적이고 자원 소모량이 큼
- 서로 다른 Major 버전 간에도 Replication 가능
- subscriber에 대한 DML 유형 선택적 사용 가능
- Table은 publication과 subscription에 대해 동일한 이름을 가져가야 함
- 양방향 Replication 불가
- DML만 가능, DDL은 직접 수행해야 함
WAL(White-Ahead Log)
- 변경 내용을 설명하는 Log Record를 storage에 먼저 기록한 후, 이후에 data file에 변경 내용을 적용하는 방식으로 동작
- Oracle의 Redo-Archive와 비슷한 역할을 수행
- transaction commit이 발생할 때마다 data page를 disk에 저장팔 필요가 없음
- data page에 저장되지 않은 변경 내용은 log record에서 실행 취소 할 수 있음
- 소규모의 transaction을 대량으로 처리할 경우, lof file의 fsync 하나로 여러 가지 transaction을 충분히 commit 할 수 있음
- fsync : buffer에 저장된 data를 disk로 저장할 때 호출하는 함수
- data와 metadata의 변경 파일을 하드 디스크에 저장되도록 req. 저장이 완료될 때까지 대기
- 온라인 백업 및 PITR(Point-In-Time Recovery) 지원
- 옵션에 따른 동기화 기준은 아래와 같음
- disk에 WAL 파일을 저장 → memory에 전달 → 지정된 buffer size에 맞게 데이터 적재 후 standby에 전달
- 단, 이 때 WAL 파일에 10개가 저장되어 있고, standby에 전달할 때 서버가 도중에 죽으면, master에는 10개의 데이터가 전달되나 buffer에 저장된 데이터는 전송 도중 손실될 수 있으므로 무결성 유지가 되지 않음
Load Balancing, Failover
- Load Balancing : 여러 대의 DB Server가 Clustering 되어 있고, 이들이 Replication 기능을 통해 같은 Data를 가지고 있을 때 Data 조회 명령을 여러 Server에 분산 처리 하여 실행함으로써 전체 Server에 부하를 나눌 수 있음
- Failover & Failback : Master-Slave Mode에서 Master Server에 문제가 생겼을 때 Slave Server 중 1대가 Master 역할을 수행하는 Failover 기능을 제공하고, 그 역인 Fail-Back 기능도 제공함
- PostgreSQL은 사용자가 옵션을 설정하지 않는 이상 Auto-Failover를 지원하지 않음
High Availability, Load Balancing, and Replication Feature Matrix
HA, L/B, Replication 3rd Party
- Replication
- Hevo Data
- EDB Postgres Replication
- Airbyte
- repmgr(made by EDB)
- Load Balance
- PgPool(Also support Pooling)
- PgBouncer(Also Support Pooling)PostgreSQL Replication Type
'개발 > DB' 카테고리의 다른 글
OrioleDB (0) | 2024.07.12 |
---|---|
PostGraphile (0) | 2024.07.11 |
Postgres Source 디버깅 (0) | 2024.07.03 |
PG-Strom (0) | 2022.12.07 |
PostgreSQL - GiST (0) | 2021.12.08 |