728x90
Postgresql 의 CDC 관리를 위해 Postgresql 설정 변경 하는 법 !
1. wal 상태 변경 (default : minimal)
Write-Ahead Logging (WAL) - Database의 변경 사항을 기록하는 로그
: 얼마나 많은 정보를 기록할지를 결정하는 설정입니다. 이 옵션은 데이터 복구, 복제, 또는 Change Data Capture(CDC) 등의 기능을 위해 중요한 역할을 합니다.

1. minimal
- 설명: 최소한의 WAL 로그만 기록합니다. 주로 데이터베이스의 성능을 극대화하기 위한 용도로 사용됩니다.
- 용도: 데이터베이스 복구만을 목표로 하고, **복제나 PITR(시점 복구)**를 사용하지 않을 경우에 적합합니다.
- 제한사항: 이 설정은 복제(replication)나 **백업에서 시점 복구(PITR)**를 할 수 없습니다.
2. replica
- 설명: WAL 로그에 데이터 복구와 복제(replication)를 위한 정보를 추가로 기록합니다.
- 용도: 동기식 또는 비동기식 복제를 사용할 때 적합하며, 데이터베이스 복구와 **백업에서 시점 복구(PITR)**를 지원합니다.
- 특징: 대부분의 기본적인 복제 시스템에서 사용되는 옵션입니다.
3. logical
- 설명: replica에서 기록하는 정보에 더해, 논리적 복제와 **Change Data Capture (CDC)**에 필요한 추가 정보를 기록합니다.
- 용도: 테이블 데이터의 변경 사항을 논리적 복제나 Kafka와 같은 스트리밍 시스템으로 전송하고 싶을 때 설정합니다. 주로 CDC 작업을 위해 사용됩니다.
- 특징: 이 설정은 테이블의 구조 및 행 단위의 변경 사항을 추적할 수 있으며, 이를 통해 외부 시스템과의 연동이 가능합니다.
2. pgoutput 변경

PostgreSQL의 WAL을 기록하는 로그인데, WAL은 텍스트가 아닌 바이너리 형식으로 저장됨.

하여 이 파일을 읽기 위해 다양한 디코더를 제공하는데, 이 디코더는 WAL 파일의 형식을 이해하고, 필요한 정보를 추출하여 논리적 형식으로 변환함.
(1) pgoutput
- 정의: pgoutput은 PostgreSQL의 논리적 복제에서 사용되는 기본 디코더입니다. 이 디코더는 WAL의 변경 사항을 논리적 데이터 변경 이벤트로 변환합니다.
- 특징:
- 논리적 복제: pgoutput은 기본적으로 PostgreSQL의 논리적 복제를 지원합니다. 이를 통해 사용자는 데이터를 복제하는 다른 서버에 데이터를 전송할 수 있습니다.
- 변경 사항 표현: 데이터 변경(INSERT, UPDATE, DELETE) 시 각각의 변경 사항을 명확하게 식별하여 출력합니다.
- 유연성: 여러 테이블과 필드를 포함한 복제 및 구독을 설정할 수 있어 유연한 데이터 복제 환경을 제공합니다.
- 용도: 주로 Debezium과 같은 CDC(변경 데이터 캡처) 도구에서 사용하여 데이터베이스의 변경 사항을 Kafka와 같은 메시징 시스템으로 전송할 때 활용됩니다.
(2) decoderbufs
- 정의: decoderbufs는 PostgreSQL의 논리적 복제에 사용되는 또 다른 디코더입니다. 이 디코더는 데이터를 보다 효율적으로 압축하여 처리할 수 있는 기능을 제공합니다.
- 특징:
- 압축된 형식: decoderbufs는 변경 사항을 보다 압축된 형식으로 출력하므로 데이터 전송량을 줄이고 성능을 향상시킬 수 있습니다.
- 모든 변경 사항 기록: 이 디코더는 INSERT, UPDATE, DELETE를 포함하여 모든 데이터 변경 사항을 기록합니다.
- 전문가용: decoderbufs는 주로 성능이 중요한 대규모 데이터베이스 환경에서 사용됩니다.
- 용도: 고속 데이터 전송이 필요한 상황에서 사용되며, Debezium과 같은 CDC 도구와 함께 사용할 수 있습니다.
요약
- pgoutput: PostgreSQL의 기본 디코더로, 논리적 복제를 지원하며 데이터 변경을 명확하게 출력.
- decoderbufs: 압축된 형식으로 데이터를 전송하여 성능을 향상시키는 디코더로, 고속 데이터 전송이 필요한 경우에 적합.
3. Postgresql 재시작

- 변경사항 확인
