728x90
PostgreSQL에서 replica identity는 Logical Replication 또는 Change Data Capture (CDC)를 사용할 때 중요합니다.
replica identity가 설정되지 않으면 DELETE 작업을 포함한 일부 작업이 실패하게 됩니다. 오류 메시지가 말하는 바는 다음과 같습니다.
원인
- Replica Identity 미설정: 테이블이 복제 식별자가 설정되지 않았기 때문에, PostgreSQL은 DELETE 요청을 처리할 수 없습니다. PostgreSQL의 기본 설정은 replica identity가 없는 테이블에서 DELETE 작업을 지원하지 않으며, 이는 데이터 변경 사항이 소비자에게 올바르게 전달될 수 없도록 합니다.
해결 방법
cdc_table에 대한 replica identity를 설정하여 이 문제를 해결할 수 있습니다. PostgreSQL에서는 다음과 같은 방법으로 설정할 수 있습니다:
- REPLICA IDENTITY 설정: 다음 SQL 명령어를 사용하여 cdc_table의 replica identity를 설정합니다.
- FULL: 전체 행의 데이터를 복제하는 설정입니다. 이 방법은 DELETE 요청을 포함한 모든 변경 사항을 처리할 수 있게 합니다.
- USING INDEX <index_name>: 특정 인덱스를 사용하여 복제 식별자를 설정할 수도 있습니다. 이 경우 인덱스가 필요합니다.
-
코드 복사ALTER TABLE public.cdc_table REPLICA IDENTITY FULL;
- sql
- REPLICA IDENTITY 상태 확인: 테이블의 현재 replica identity 상태를 확인하려면 다음 쿼리를 사용할 수 있습니다.
- relreplident의 값이 d인 경우 (d는 'default'를 의미) 설정이 되어 있지 않은 것입니다. f는 full 설정을, i는 인덱스 기반 복제를 의미합니다.
-
sql코드 복사SELECT relname, relreplident FROM pg_class WHERE relname = 'cdc_table';
- 변경 사항 확인: REPLICA IDENTITY 설정 후, DELETE 작업을 다시 시도하여 문제가 해결되었는지 확인합니다.
'RDB > PostgreSQL' 카테고리의 다른 글
PostgreSQL CDC(1) - Postgresql 설정 변경, WAL, pgoutput/decoderbufs (0) | 2024.10.14 |
---|---|
[Trouble Shooting] Postgre 설치 ) 서버 실행오류 해결 (0) | 2024.04.29 |