Migration — dastur, ma’lumot yoki infratuzilmani bir holatdan boshqasiga nazoratli o‘tkazish jarayonidir. Database migration schema va ma’lumot tuzilishini versiyalar orasida o‘zgartiradi; tizim migratsiyasi esa boshqa server, cloud, framework yoki platformaga ko‘chishni anglatishi mumkin. Jarayonning markaziy talabi yangi holatga o‘tishda ma’lumot yaxlitligi va xizmat davomiyligini saqlashdir.
Schema migration
Schema migration jadval, column, index yoki constraintni yaratadi va o‘zgartiradi. Frameworklar migration faylini kod bilan birga version control’da saqlaydi. Har migration oldingi ma’lum holatdan keyingi holatga deterministik o‘tishni ifodalaydi.
ALTER TABLE users ADD COLUMN timezone VARCHAR(64);
Kichik jadvalda sodda ko‘ringan DDL katta production jadvalda lock, table rewrite yoki katta transaction log hosil qilishi mumkin. Database engine, versiya va aniq o‘zgarish turi bajarilish usulini belgilaydi.
Expand-and-contract
Zero-downtime o‘zgarishda eski va yangi dastur versiyasi bir muddat birga ishlaydi. Avval yangi nullable column yoki table qo‘shiladi. Keyin kod eski va yangi shakl bilan mos ishlaydi, ma’lumot backfill qilinadi va read yo‘li yangi maydonga o‘tadi. Barcha eski versiya tugagach, keraksiz column olib tashlanadi.
Bir deploymentda columnni rename qilish eski kodni darhol buzishi mumkin. Expand-and-contract rename o‘rniga yangi column, vaqtinchalik dual write va keyingi cleanupdan foydalanadi. Dual write xatolarini reconciliation tekshiradi.
Data migration
Data migration mavjud qiymatni yangi format yoki storagega o‘tkazadi. Backfill millionlab qatorni bitta transactionda yangilasa lock, replication lag va disk bosimi oshadi. Ish kichik batchlarda, checkpoint bilan bajariladi. Idempotent script qayta ishga tushganda avval ko‘chirilgan qatorni buzmaydi.
Manba va maqsad soni, checksum, aggregate va sample yozuvlar solishtiriladi. Faqat script exit code 0 qaytargani ma’lumot to‘liq ko‘chganini isbotlamaydi.
Platforma ko‘chishi
Database yoki cloud provider almashtirishda schema bilan birga type semantikasi, collation, time zone, transaction isolation va query xatti-harakati ham tekshiriladi. Dastlab bulk copy olinadi, keyingi o‘zgarishlar change data capture orqali uzatilishi mumkin. Lag nolga yaqinlashganda qisqa write freeze yoki controlled cutover bajariladi.
Traffic yangi tizimga o‘tgach kuzatuv va reconciliation davom etadi. Eski tizim darhol yo‘q qilinmaydi, lekin ikki tomonda mustaqil write paydo bo‘lishiga yo‘l qo‘yilmaydi.
Rollback
Har migration to‘liq reversible emas. Column o‘chirilganda ma’lumot yo‘qoladi; down migration schema yaratishi mumkin, lekin oldingi qiymatni tiklamaydi. Backup va point-in-time recovery rollback rejasining bir qismidir. Ba’zan kodni orqaga qaytarish o‘rniga yangi forward fix xavfsizroq bo‘ladi.
Migration holati, bajarilgan versiya va vaqt audit qilinadi. Bir xil migration ikki instans tomonidan parallel bajarilmasligi uchun lock yoki migration coordinator ishlatiladi.
Kuzatuv va cutover mezoni
Migration davomida ko‘chirilgan qatorlar soni, error, retry, replication lag va throughput o‘lchanadi. Cutover “script tugadi” degan belgiga emas, oldindan belgilangan reconciliation hamda lag chegarasiga tayanadi. Yangi tizimga trafik bosqichma-bosqich berilsa, xato va latency eski tizim bilan solishtiriladi. Freeze oynasida qaysi yozuvlar qabul qilinmasligi foydalanuvchi va operatorga aniq ko‘rsatiladi. Yakundan keyin eski resurs retention muddati davomida read-only saqlanishi mumkin; keyin maxfiy ma’lumot, backup va credentiallar tasdiqlangan decommission tartibida o‘chiriladi.
Bog‘liq tushunchalar
schema migration, data migration, backfill, zero downtime, rollback, change data capture, database