postgresql 복제 방법에 대한 조사

복제란?



Replication을 작성하고 복제본을 만드는 의미에서
실시간으로 데이터를 복사하는 기술.

postgresql의 복제 유형



다음은 기본 config이며 synchronous_commit 에서 복제 유형을 결정합니다.
# cat postgresql.conf | grep -A 1 synchronous_commit
==========
#synchronous_commit = on                # synchronization level;
                                        # off, local, remote_write, remote_apply, or on
==========

코멘트 아웃의 개소에도 쓰여진 대로, 이하 5 종류가 있습니다.
  • remote_apply : 완전 동기화
  • on : 동기화
  • remote_write : 준동기
  • local : 비동기
  • off : 완전 비동기

  • 그리고 그 전에 먼저 나오는 WAL라는 말을 이야기합니다.WAL는 Write Ahead Logging의 약자로 DB 데이터를 변경하기 전에 업데이트를 기록합니다.
    만약 DB가 망가져 버려도 WAL이 있으면 데이터를 복구할 수 있습니다.
    WAL에 기록된 후 DB에 데이터가 변경됩니다.
    그것을 근거로 다음을 진행합니다.

    remote_apply : 완전 동기화



    완전 동기화는 slave WAL이 postgresql에 기록 될 때까지 보장합니다.



    on : 동기화



    동기화는 슬레이브 WAL 디스크 쓰기까지 보장합니다.



    remote_write : 준동기



    준 동기화는 slave의 WAL 메모리에 쓸 때까지 보장됩니다.



    local : 비동기



    slave는 전송을 보장하지 않습니다.
    로컬 WAL에 쓸 때까지 보장합니다.



    off : 완전 비동기



    비동기와 마찬가지로 슬레이브는 전송을 보장하지 않습니다.
    로컬 WAL에 쓰는 것조차 보장하지 않습니다.
    가장 성능이 좋습니다.



    참고


  • PostgreSQL WAL 로그의 작동 방식과 타이밍을 이해하고 싶습니다.
  • 2017년도 WG3 활동 보고서 복제 조사편
  • 좋은 웹페이지 즐겨찾기