피드로 돌아가기
InfoQInfoQ
Database

Indexed Binlogs 기반 MySQL Time-Travel Query 구현

Bintrail: MySQL Time-Travel Queries Using Indexed Binlogs

Renato Losio2026년 5월 21일3advanced

Context

MySQL의 Native Temporal Query 기능 부재로 인한 데이터 복구 및 감사 작업의 운영 오버헤드 발생. 기존 방식은 Binary Log를 수동으로 재생(Replay)해야 하므로 복구 속도가 느리고 리스크가 큼.

Technical Solution

  • ProxySQL을 활용한 Query Routing 레이어 구축으로 Application 코드 수정 없는 투명한 인터페이스 제공
  • ROW-format Binary Logs를 파싱하여 Row-level 변경 이력을 인덱싱한 별도의 History Store 운영
  • Before/After Image 기반의 인덱싱을 통한 특정 시점의 데이터 상태 재구성 및 AS OF 쿼리 지원
  • _diff 및 _flashback 가상 스키마를 통한 특정 기간 내 Row 변경 이력 및 시점 기반 조회 구현
  • MySQL Binlog Retention 정책과 독립적인 저장소 구조를 통해 S3 Parquet 기반의 장기 아카이빙 확장성 확보
  • Primary Key 기반 Lookup 및 Literal Timestamp 쿼리에 최적화된 Shim Layer 설계로 복잡한 연산 부하 분리

1. DB 엔진 변경 없이 Temporal Query가 필요한 경우 CDC 기반의 별도 인덱싱 저장소 구축 검토

2. ProxySQL과 같은 미들웨어를 활용하여 기존 앱 영향도 없는 쿼리 라우팅 전략 수립

3. Binlog retention에 의존하지 않는 독립적 History Store 설계를 통한 데이터 보존 기간 확장

4. 복잡한 Join 연산은 Shim Layer 외부에서 처리하도록 하여 성능 병목 지점 분리

원문 읽기