Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

PostgreSQL / PPAS Replication 종류 본문

PostgreSQL/Replication

PostgreSQL / PPAS Replication 종류

`O` 2021. 3. 8. 00:42
728x90
반응형
  • PostgreSQL 은 다양한 방법으로 replication 을 구성하는 방법들을 제시한다. 아래의 내용은 공식 Doc 및 기타 사이트에서 발췌한 Replication 구성 방법 종류다.

    (출처 : https://www.postgresql.org/docs/9.6/different-replication-solutions.html)

    (출처 : https://hevodata.com/learn/postgres-replication-types/)

  • Streaming Replication : 스트리밍 리플리케이션 (PostgreSQL 9.0 이상 버전 필요)

    • Master Server 에서 WAL File 에 기재되는 내용들을 실시간으로 Slave 서버에 전송하는 방식이다. 이를 위해서 WAL Sender, WAL Receiver 라는 프로세스들이 두 서버간의
      동기화를 수행한다. Replication 용 세션이 붙는 점은 MySQL Replication 에서 Dump Thread, I/O Thread, SQL Thread 라는 Replication 용 세션이 붙는 것과 유사하다.
      네트워크 속도만 보장된다면 설정방법도 쉽고 동기화 Gap 도 차이가 거의 없는 방법이다.

  • File System (Block Device) Replication : 파일시스템 (혹은 블록 디바이스) 리플리케이션

    • 주 서버내 모든 변경 내용들을 포함한 파일시스템을 다른 서버에 복사하여. 운영 서버와 대기 서버의 데이터상태를 동기화하는 방식 (mirroring).
      이를 위해서는 대기 서버가 운영서버로부터 지속적으로 동기화된 상태의 데이터를 가지고 있게 해야함. 이를 지원하는 대표적인 솔루션은 DRBD 가 있음.

  • Logical Replication : 논리 리플리케이션

    • 논리 리플리케이션은 주 서버의 WAL 로부터 데이터 변경 가능 stream 을 만들어서 다른 서버로 복제 시키는 방식. Master, Slave 지정이 아닌
      Publication, Subscription 개념으로 동기화를 시킴. Subscription 을 통하여 Publication 된 테이블 내 설정에 따라 DML 혹은 Read 만 설정 가능

  • Trigger-Based Master-Standby Replication : 트리거 기반 Master – Standby 리플리케이션

    • DML 쿼리들은 마스터 서버에서 수행하며 비동기 방식으로 데이터 변경 내역을 대기 서버에 보내는 방식.
      대기 서버에는 read-only 로 조회만 가능하게 하도록 설정. 대량의 데이터 조회를 수행 하는 데이터 웨어하우스 쿼리에 적합.
      이를 지원하는 솔루션은 Slony-I 라는 솔루션이 대표적. 이 솔루션을 통하여 테이블 단위 등의 세분화 구성, 다중 대기 서버 구성이 가능 (비동기방식으로 인하여 절체 시, 데이터 손실을 예방하기 위함)

  • Statement-Based Replication Middleware : (SQL) 구문 기반 리플리케이션 미들웨어
    • 구문 기반의 리플리케이션 미들웨어가 서버에 들어오는 모든 SQL 쿼리들을 인지하고 쿼리 형태에 따라 각 서버(독립운영)들에 분류하여 보내는 방식.
      읽기, 쓰기가 수행되는 쿼리들은 모든 서버에 보내서 데이터 갱신을 받고, 읽기 쿼리들은 서버 부하를 줄이기 위하여 하나의 서버에만 전송.
      독립된 서버들로 구성을 하므로 random(), CURRENT_TIMESTAMP 들의 결과값이 서로 다를 수 있으므로 이를 방지하고 싶다면 하나의 서버에서만 해당 값을 받도록 설정 가능.
      Master Slave 등의 기존 방식으로도 구성이 가능하며. two-phase commit (PREPARE TRANSACTION and COMMIT PREPARED) 등의 구문이 각 서버에 들어 갈 수도 있음.
      이를 지원하는 솔루션은 Pgpool-II, Continuent 사의 Tungsten 이 있음.

  •  
  • Asynchronous Multimaster Replication : 비 동기화식 멀티 마스터 리플리케이션

    • 실시간 네트워크 연결이 되어있지 않거나. 통신속도가 느릴 때 쓰는 방식.
      각각의 독립된 서버들이 운영이 되면서 주기적으로 다른 서버들과 충돌하는 트랜잭션을 탐지함.
      이는 유저나 충돌 해소 규칙으로 해소 가능. Bucardo 가 이를 지원 하는 솔루션

  • Synchronous Multimaster Replication : 동기화식 멀티 마스터 리플리케이션
    • 쿼리들이 하나의 서버에서 다른 서버들로 전송 되는 동기화 방식의 멀티 마스터 구조.
      읽기 쿼리들을 다른 서버들에 분산하는 방식으로 읽기 부하가 큰 쿼리를 처리하는 데 최적화 되어 있으며
      쓰기 쿼리들도 분산될 수 있는 큰 장점이 있으나 부하가 큰 쓰기 쿼리들은 부하 발생 및 commit 지연을 발생 시킬 수 있음.
      주 서버에서 대기 서버로 데이터 변동을 전송하기 때문에 random() 등의 서버 간의 무작위 결과값이 나오지 않음. PostgreSQL 는 기본적으로 지원 하지 않은 방식.

  •  
  • Commercial Solutions : 상용 솔루션

    • PostgreSQL 은 오픈소스 기반이기에 이에 대하여 회사들이 아래와 같이 다양한 종류의 HA 상용 솔루션을 제공 할 수 있음.
    • (위에 소개된 예시 솔루션들도 아래 예시에 포함 / 출처: 현 근무 회사 기술 블로그)

반응형
Comments