목록 보기
Kafka와 ETL을 활용해 대용량 데이터 마이그레이션하기
백엔드

Kafka와 ETL을 활용해 대용량 데이터 마이그레이션하기

라인
라인
2024년 8월 26일

두줄요약

대용량 이미지 데이터를 MySQL에서 MongoDB로 마이그레이션한 경험을 공유했습니다. Kafka, ETL, CDC를 조합해 동기화와 샤딩 최적화, 안정적 전환까지 진행했습니다.

문제 상황

  • 통합 커머스 검색의 이미지 데이터가 26억 건 이상으로 커지며 MySQL 디스크 사용량이 90%를 초과
  • 테이블 규모가 너무 커 스키마 변경 시 hang up 우려가 있고, 향후 대규모 이미지 유입도 예상

원인 분석

  • 이미지 테이블과 참조 테이블의 급격한 증가로 저장소 압박 심화
  • 다른 핵심 테이블과의 연관성, 트랜잭션, 스키마 제약 때문에 MySQL 확장에 한계

해결 방법

  • ETL 데이터를 기준 스냅샷으로 삼고, 이후 변경분은 MySQL CDC로 반영하는 이중 동기화 파이프라인 구성
  • Kafka 메시지 압축(lz4, linger.ms 3000, batch.size 16384)과 MongoDB 샤딩, 초기 청크 분할로 대용량 적재 최적화
  • CDC 멱등성 확보를 위해 메시지 키 재정의, updatedDate 기반 최신성 판단, 재시도 로직과 W2 쓰기 고려 적용

성능/운영 포인트

  • 샤드별 DML, write ticket, replication lag, CPU/메모리 지표를 지속 모니터링
  • 시나리오 테스트, 성능 테스트, 베타/운영 순차 적용으로 안전성 검증
  • 롤백 가능성을 고려해 MongoDB↔MySQL 양방향 동기화 구조 유지

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...