Ghid practic

Ghid practic: migrarea bazelor de date fără downtime

Cum migrezi o schemă relațională în producție fără să oprești serviciul, pas cu pas și cu exemple reale.

Diagramă de schemă de bază de date tipărită pe hârtie sub o lampă cu lumină chihlimbar

Migrarea unei baze de date relaționale în producție este una dintre operațiunile pe care echipele tehnice le amână cel mai des — și cu un motiv întemeiat. O migrare greșită poate corupe date, bloca tabele ore întregi sau forța un rollback costisitor. Dar amânarea perpetuă acumulează datorie tehnică. Există un set de tehnici testate, cunoscute sub numele de „expand-contract” sau „parallel change”, care permit schimbări de schemă fără downtime și fără a pune serviciul în risc. Principiul de bază este simplu: nu faci niciodată o schimbare distructivă direct. În schimb, descompui migrarea în mai mulți pași aditivi. Primul pas este extinderea — adaugi noua coloană sau tabelă fără să ștergi nimic din ce există. Aplicația este actualizată să scrie simultan în structura veche și cea nouă. Al doilea pas este migrarea datelor existente în background, în loturi mici, fără a bloca tabelele. Al treilea pas este contracția — după ce ai confirmat că noua structură conține toate datele corecte și că aplicația citește exclusiv din ea, ștergi structura veche. Această abordare funcționează atât cu PostgreSQL, cât și cu MySQL și MariaDB, cu mici variații în sintaxa DDL. Instrumentele precum Flyway, Liquibase sau gh-ost pentru MySQL automatizează parțial acest flux, dar înțelegerea pasilor manuali rămâne esențială pentru diagnosticarea problemelor. Regula de aur: testează întotdeauna migrarea pe o copie anonimizată a datelor de producție, cu volumul real, înainte de a o executa pe sistemul live.