Dvojitě zapisujte do staré a nové, backfillujte historii na pozadí, použijte CDC k dohnání zbytku, ověřte shadow reads, pak atomicky přepněte čtení — s cestou k rollbacku v každém kroku. Aplikaci nikdy nevypnete; obě databáze běží paralelně, dokud není nová prokazatelně identická, pak provedete cutover.
Architektura
text
┌── write ──▶ OLD DB (source of truth) ──CDC (Debezium)──┐
App ───┤ ▼
└── write ──▶ NEW DB ◀──── backfill job (historical rows)
│
shadow reads (compare OLD vs NEW) ─▶ diff metrics ─▶ atomic cutover ─▶ NEW is truth
(flip flag; rollback = flip back)
