피드로 돌아가기
D1 read replicas returned stale data for 6 seconds — here's what I measured and how I designed around it
Dev.toDev.to
Database

D1 Replica Lag 6.1s 해결을 위한 KV Fallback 구조 설계

D1 read replicas returned stale data for 6 seconds — here's what I measured and how I designed around it

강해수2026년 6월 17일2advanced

Context

SQLite 기반 D1의 Read Replica 아키텍처에서 Primary와 Edge POP 간의 Replication Lag로 인한 데이터 불일치 발생. 특히 Schema Migration 시 Replica에 반영되지 않은 상태에서 쿼리가 실행되어 'no such table' 에러가 발생하는 심각한 가용성 저하 직면.

Technical Solution

  • Staleness Probe 구축을 통한 지역별 Replication Lag의 정량적 측정 및 p99 6.1s 지표 식별
  • Write 시점에 epoch 기반의 written_at 타임스탬프를 기록하고 이를 X-D1-Written-At 헤더로 전달하는 메커니즘 설계
  • Reader가 Replica에서 읽은 데이터의 epoch와 헤더의 write signal을 비교하여 데이터 최신성 검증
  • Replica 데이터가 Write 시점보다 오래된 경우, sub-500ms 응답 속도를 가진 KV 스토리지로 읽기 경로를 전환하는 Fallback 전략 도입
  • 빈번한 변경이 없는 Throttle Flag와 같은 특정 데이터셋에 대해 KV를 Freshness Backstop으로 활용하여 불필요한 Primary 부하 방지

1. Read Replica 도입 시 p99 지연 시간을 측정하는 Staleness Probe 구현 여부 확인

2. Schema Migration 시 Replica 반영 시차로 인한 런타임 에러 가능성 검토

3. 읽기 일관성이 중요한 데이터에 대해 Write-timestamp 기반의 최신성 검증 로직 적용

4. Critical Read Path에 대해 저지연 KV Store를 활용한 Fallback 아키텍처 설계

원문 읽기