1. 정리 배경
대용량 PostgreSQL 데이터를 Oracle로 이관하면서,
단순한 “이론적 설계”가 아니라 실제 실행 단계에서 필요한 준비·순서·주의사항을
명확히 정리할 필요가 있었다.
Kafka + Debezium 기반 CDC 구조는
구성 요소가 많고, 순서를 잘못 잡으면 장애나 데이터 정합성 문제가 발생하기 쉽다.
이 글은 실제 운영 환경을 일반화하여 재구성한 Kafka 실행 계획과 체크리스트를
기술 블로그 형태로 정리한 것이다.
2. 전체 실행 흐름 요약
Kafka 기반 데이터 이관은 다음 흐름으로 진행된다.
- PostgreSQL DB 백업
- 백업본 외부 저장
- Kafka 및 관련 컴포넌트 설치
- Kafka를 통한 초기 데이터 이관 실행
- 이관 결과 검증
- 기존 데이터 정리
- 실시간 CDC 이관 전환
핵심은
“백업 → 일괄 이관 → 검증 → 실시간 이관” 단계가 명확히 분리되어야 한다는 점이다.
3. PostgreSQL DB 백업 단계
3.1 백업 실행
- 관리자 또는 충분한 권한을 가진 계정으로 수행
- pg_dump를 이용한 전체 DB 백업
예시:
3.2 백업 검증
- 백업 파일 생성 여부 확인
- 파일 용량 확인
- 백업본 내부에 테이블이 정상적으로 포함되어 있는지 확인
3.3 외부 저장소 복사
- 외장 스토리지 또는 별도 저장 매체에 백업본 복사
- 로컬 서버 단일 보관 금지
👉 이 단계는
Kafka 이관 중 문제가 발생했을 때 되돌아갈 수 있는 유일한 안전장치다.
4. Kafka 설치 및 기본 설정
4.1 Kafka 설치
- 오프라인/온라인 환경에 맞게 설치
- Kafka 최신 안정 버전 사용
- KRaft 모드 기준 구성 (Zookeeper 미사용)
4.2 설정 파일 준비
사전에 작성된 설정 파일을 Kafka 설정 경로에 배치한다.
- server.properties
- connect-standalone.properties
- Source Connector 설정
- Sink Connector 설정
4.3 Cluster ID 생성 및 스토리지 포맷
Kafka KRaft 모드에서는
Cluster ID 기반 스토리지 포맷이 필수다.
5. Kafka Connect 플러그인 준비
Kafka Connect 실행을 위해 필요한 플러그인을 준비한다.
필수 플러그인 예시
- PostgreSQL Source Connector (Debezium)
- JDBC Sink Connector
- Oracle JDBC Driver
👉 모든 플러그인은
Kafka의 plugins 디렉토리 하위에 위치해야 한다.
6. PostgreSQL CDC 설정
6.1 postgresql.conf 수정
논리 복제를 위한 설정 추가:
설정 변경 후 PostgreSQL 재시작 필수
6.2 CDC 전용 사용자 생성
Debezium 전용 계정을 생성하고 권한을 부여한다.
6.3 논리 복제 슬롯 생성
👉 이 슬롯이 WAL 로그 보관과 CDC 흐름의 핵심 포인트가 된다.
7. Primary Key(SEQ) 컬럼 보완
Kafka Sink Connector를 통한 안정적인 적재를 위해
각 테이블에 PK 컬럼이 필요하다.
예시:
이 작업 중에는
외부 시스템(예: 장비, 센서)으로부터의 데이터 수신이 중단될 수 있으므로
사전 공지가 필요하다.
8. 컬럼 타입 정비 (정합성 대비)
- 숫자 컬럼의 Precision / Scale 명확화
- Kafka → Oracle 이관 시 타입 불일치 방지 목적
예시 개념:
대량 컬럼 수정 시
PL/pgSQL 루프를 사용해 일괄 처리 가능하다.
9. Oracle 측 사전 준비
- 대상 테이블 존재 여부 확인
- 필요 시 테이블 수정 또는 신규 생성
- Kafka Sink 계정에 권한 부여
10. Kafka 기반 이관 실행
10.1 Kafka 서버 실행
10.2 Kafka Connect 실행
- Standalone 모드 기준
- Source / Sink Connector 동시 실행
10.3 이관 검증
- 테이블 단위로 순차 진행
- 각 테이블별:
- row count 비교
- 샘플 데이터 검증
- 에러 로그 확인
11. 기존 데이터 정리 및 실시간 CDC 전환
- 초기 이관 완료된 테이블은 검증 후 정리
- 이후 Kafka CDC를 통해 실시간 데이터 동기화 유지
이 시점부터는:
- 신규 데이터가 자동으로 Oracle로 반영됨
- PostgreSQL은 Source 역할만 수행
12. 실행 계획의 핵심 포인트
- 백업 없이는 절대 시작하지 않는다
- “일괄 이관”과 “실시간 이관”을 명확히 분리한다
- CDC 슬롯과 WAL 상태를 지속적으로 모니터링한다
- PK/타입 정합성은 사전에 최대한 맞춘다
- 한 번에 모든 테이블을 하지 않는다
13. 마무리
Kafka 기반 데이터 이관은
기술 자체보다 실행 순서와 운영 판단이 훨씬 중요하다.
- 어떤 설정을 언제 적용하는지
- 언제 검증하고, 언제 다음 단계로 넘어가는지
- 문제가 생겼을 때 어디로 되돌아갈 수 있는지
이 실행 계획은
그 판단을 구조화하기 위한 하나의 기준점이다.
'[실무 설계와 판단]' 카테고리의 다른 글
| 형상 관리와 소스 관리, 그리고 CI까지 (0) | 2025.12.26 |
|---|---|
| ERP(Ecount 계열) API 연동 개발 정리 (0) | 2025.12.26 |
| AWS 비용 최적화와 인프라 선택에 대한 현실적인 고민 (0) | 2025.12.26 |
| 현실적인 프로젝트 구조 설계 고민 (0) | 2025.12.26 |
| AWS 비용 최적화 실무 정리 (0) | 2025.12.26 |