Database/mysql & mariaDB

MariaDB 10.3 → MySQL 8.0 이전시 CDC (Change Data Capture)가 가능할까?

봉의일상 2025. 6. 24. 22:18

Microsoft가 Azure Database for MariaDB 서비스 종료와 같이 2025년 9월에 공지하며, 많은 사용자들이 Azure Database for MySQL로 이전하고 있습니다. 그 과정에서 "서비스 중단을 최소화할 수 없을까?"라는 고민이 발생합니다.

"MariaDB 10.3에서 MySQL 8.0으로 서비스 중단 없이 CDC로 이전이 가능할까?"

CDC가 무엇인가?

CDC(Change Data Capture)는 DB의 변경사항(Insert, Update, Delete)을 실시간 또는 준실시간으로 추적하고, 다른 시스템에 복사하는 기술입니다. 복사, 실시간 분석, ETL, 마이그레이션에서 중단 없는 이전을 위해 큰 효과가 있습니다.

MariaDB 10.3 vs MySQL 8.0: 호환성 문제

결론부터 말하면:

MariaDB 10.3과 MySQL 8.0 간의 binlog 기반 CDC는 직접적으로는 불가능합니다.

MySQL 8.0은 MariaDB와 replication 프로토콜, 바이너리 로그 구조, 인증 방식 등이 다르기 때문에 binlog를 해석할 수 없습니다.

불가능한 방식

  • CHANGE MASTER TO 방식의 replication은 실패합니다.
  • MySQL 8.0은 MariaDB 10.3의 binlog를 해석할 수 없습니다.

CDC 원칙을 가지고 이전하는 현실적 방안

1. Debezium + Kafka (최고 권장)

  • MariaDB에서 binlog를 Debezium으로 수집
  • Kafka에 데이터 변경사항을 전송
  • Kafka Consumer 또는 Sink 커넥터로 MySQL 8.0에 반영
  • MariaDB에 binlog_format=ROW, server_id 설정 필요

2. Maxwell's Daemon

  • MariaDB의 binlog를 읽어 JSON으로 변경사항 발송
  • 모든 변경을 실시간으로 추적 가능, 응용도 쉬움
  • Debezium보다 가볍게 운용 가능

3. SymmetricDS

  • MariaDB, MySQL 모두 지원
  • GUI 중심, 비교적 간단한 구성
  • 소규모 환경에 적합

4. 트리거 기반 CDC

  • 트리거로 변경 내역을 로그 테이블에 기록
  • 주기적으로 MySQL에 반영
  • 실시간성이 부족하고 유지보수가 어렵다는 단점

Azure에서는?

Azure Database Migration Service (DMS)

  • MariaDB → MySQL로의 전체 이관 가능
  • 단, CDC 또는 지속적인 동기화는 불가
  • 초기 마이그레이션에 적합

Azure Data Factory (ADF)

  • MariaDB → MySQL로의 주기적 ETL 가능
  • Timestamp 기반 조건을 활용한 증분 처리 가능
  • binlog 기반 CDC는 아님

Azure CDC 구조 (고급 모델)

  • Azure VM 또는 AKS에 Kafka + Debezium 구성
  • Azure Event Hub에 Kafka 메시지 발송
  • Azure Function 또는 Logic App으로 MySQL에 반영

정보 요약

목적 권장방식
전체 마이그레이션 (1회성) Azure DMS + mysqldump
서비스 중단 최소화 Debezium + Kafka
경량 CDC 구성 Maxwell
엔터프라이즈 CDC Striim 또는 Qlik Replicate

마무리하며

MariaDB와 MySQL은 겉보기엔 비슷하지만, 내부 구조는 다르게 진화되어 직접적인 replication이나 CDC는 매우 어렵습니다.

Azure 환경에서 실시간 CDC를 구성하려면 Kafka, Debezium, Event Hub 등 복잡한 인프라 구성이 필요합니다.

이러한 구성은 분명 실시간성이라는 장점이 있지만, 설정의 복잡도 또한 상당합니다.

비전문가나 소규모 환경이라면 오히려 안전하게 서비스 중단을 감수하고 1회성 이관을 선택하는 것이 더 현명할 수 있습니다.

Azure는 CDC에 대한 완전한 매니지드 서비스를 제공하진 않기 때문에, 실시간 이관을 원한다면 어느 정도 커스텀 구성이 필요함을 명심해야 합니다.

다양성과 유연성을 확보할 수 있는 만큼, 준비 시간과 운영 부담에 대해서도 충분히 고려한 후 전략을 선택해야 합니다.