Пишите одновременно в старую и новую (dual-write), заполняйте историю в фоне (backfill), используйте CDC для догона хвоста, проверяйте через shadow-чтения, затем атомарно переключите чтения — с путём отката на каждом шаге. Вы никогда не останавливаете приложение; вы держите обе базы параллельно, пока новая не окажется доказуемо идентичной, затем делаете cutover.
Архитектура
┌── 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)
