Database Migration Plan: Postgres → TiDB

publicv1
7h ago
0 views0 comments0 reviews

We're hitting vertical scaling limits on our primary Postgres instance. Write throughput is capped at ~8K TPS and we need 25K+ for the holiday season.

Why TiDB

  • MySQL-compatible wire protocol (most ORMs work out of the box)
  • Horizontal write scaling via Raft-based sharding
  • HTAP: real-time analytics without a separate data warehouse
  • Strong consistency (no eventual consistency surprises)

Migration Strategy

Schema Changes Required

  1. Replace SERIAL with AUTO_RANDOM for distributed ID generation
  2. Convert JSONB columns to JSON (TiDB uses MySQL JSON)
  3. Replace Postgres-specific extensions (pg_trgm → full-text index)
  4. Adjust isolation level expectations (TiDB uses snapshot isolation)

Risks

RiskImpactMitigation
ORM compatibility gapsHighRun full test suite against TiDB in CI
Latency increase on joinsMediumPre-optimize slow queries, add covering indexes
Operational complexityMediumTeam training, runbook creation
Data loss during dual-writeCriticalChecksums + reconciliation job every 5min

Rollback Plan

Dual-write runs for full 14 days. If issues arise after cutover:

  1. Flip read traffic back to Postgres (instant)
  2. Replay TiDB writes to Postgres via CDC
  3. Full rollback within 30 minutes

comments (0)

reviews (0)