Replication — ma’lumotning bir yoki bir nechta nusxasini boshqa server, node, region yoki storage’da saqlash jarayoni. Database replication availability, read scale, disaster recovery va data locality uchun ishlatiladi.
Replica backup bilan bir xil emas. Primary’dagi noto‘g‘ri delete yoki buzilgan update ko‘pincha replica’larga ham tarqaladi.
Primary va replica
Keng tarqalgan modelda bitta node primary bo‘lib write’larni qabul qiladi.
Boshqa node’lar replica sifatida primary’dagi o‘zgarishlarni qabul qiladi.
uchun ishlatilishi mumkin.
Synchronous replication
Primary commit javobini qaytarishdan oldin bir yoki bir nechta replica tasdig‘ini kutadi.
Afzalligi — primary failure holatida yo‘qolishi mumkin bo‘lgan committed data kamayadi.
Kamchiligi:
Qaysi replica va nechta tasdiq kerakligi policy bilan belgilanadi.
Asynchronous replication
Primary local commitdan keyin clientga javob beradi, replica keyinroq yangilanadi.
Afzalligi — past write latency va primary availability.
Kamchiligi — primary kutilmaganda yo‘qolsa hali replica’ga yetmagan write yo‘qolishi mumkin.
Replica lag doimiy kuzatiladi.
Semi-synchronous model
Primary kamida bitta replica o‘zgarishni qabul qilganini kutishi, ammo u hali to‘liq apply qilganini kutmasligi mumkin.
Bu synchronous va asynchronous model o‘rtasidagi trade-off.
Aniq durability kafolati implementationga bog‘liq.
Physical replication
Storage page, transaction log yoki binary o‘zgarishlar replica’ga uzatiladi.
Afzalliklari:
Kamchiligi — version, architecture yoki storage formatiga qattiq bog‘liqlik.
Logical replication
Row yoki logical operationlar stream ko‘rinishida yuboriladi.
Masalan:
INSERT users ...
UPDATE orders ...
DELETE sessions ...
Afzalliklari:
Kamchiligi — DDL va ayrim maxsus obyektlar alohida boshqarilishi mumkin.
Statement-based replication
Primary bajarilgan SQL statementni replica’da qayta bajaradi.
Non-deterministik function, vaqt, random, trigger va row order muammo yaratishi mumkin.
Ko‘p tizim row yoki log asosidagi modelni afzal ko‘radi.
Replica lag
Replica primary’dan qanchalik ortda qolganini bildiradi.
Lag:
- vaqt;
- log byte;
- transaction;
- replay position
bilan o‘lchanishi mumkin.
Sabablar:
Read replica
Read-heavy workload replica’larga taqsimlanadi.
Masalan:
- report;
- search;
- katalog;
- dashboard.
Ammo write’dan keyingi darhol read replica’da eski qiymat ko‘rishi mumkin.
Session consistency yoki primary routing kerak.
Failover
Primary ishlamay qolsa mos replica yangi primary bo‘ladi.
Bosqichlar:
- failure aniqlash;
- eski primary’ni fencing qilish;
- eng mos replica tanlash;
- promote qilish;
- client routingni yangilash;
- qolgan replica’larni ulash.
Noto‘g‘ri failover split-brain yaratishi mumkin.
Promotion
Replica write qabul qiluvchi primaryga aylantiriladi.
Promotiondan oldin:
- replay position;
- health;
- lag;
- quorum;
- old primary holati
tekshiriladi.
Eng kam lagli replica har doim eng yaxshi variant bo‘lmasligi mumkin, masalan kerakli zone yoki durability talabi mavjud bo‘lsa.
Split-brain
Ikki node bir vaqtda o‘zini primary deb hisoblab write qabul qilsa divergent history paydo bo‘ladi.
Old primary networkdan qaytganda uning write’lari yangi primary bilan conflict qiladi.
Fencing, quorum va leader election split-brain xavfini kamaytiradi.
Multi-primary replication
Bir nechta node write qabul qiladi.
Afzalligi:
- regional write;
- primary bottleneckni kamaytirish;
- ayrim failure holatida davom etish.
Kamchiligi:
- conflict;
- unique constraint;
- ordering;
- sequence;
- merge;
- clock.
Business key va conflict resolution aniq bo‘lishi kerak.
Conflict resolution
Parallel write’lar uchun yondashuvlar:
Pul balansiga last-write-wins qo‘llash ma’lumot yo‘qotishi mumkin.
Cascading replication
Replica boshqa replica’dan log olishi mumkin.
Bu primary network yukini kamaytiradi.
Ammo yuqori qatlam replica ishlamasa undan pastdagi replica’lar ham uziladi.
Lag zanjir bo‘ylab yig‘ilishi mumkin.
Cross-region replication
Data boshqa regionga uzatiladi.
Maqsadlar:
- disaster recovery;
- foydalanuvchiga yaqin read;
- compliance;
- global service.
Network latency, egress xarajati, encryption va data residency hisobga olinadi.
Replication slot yoki retention
Replica logni hali olmagan bo‘lsa primary kerakli log segmentlarini saqlab turishi mumkin.
Replica uzoq ishlamasa retained log diskni to‘ldiradi.
Monitoring lag va retained byte’ni kuzatadi.
Backup bilan farqi
Replication yuqori availability beradi.
Backup esa:
- tarixiy nuqta;
- noto‘g‘ri delete’dan tiklash;
- ransomware;
- uzoq muddatli saqlash
uchun.
Ikkalasi birga ishlatiladi.
Read routing
Application query’ni primary yoki replica’ga yuborish siyosatiga ega bo‘ladi.
Kritik va write’dan keyingi read primaryga, tarixiy report esa replica’ga yuborilishi mumkin.
Routing faqat load balancerga emas, consistency talabiga tayanadi.
Topology change
Replica qo‘shish va olib tashlash katta initial copy talab qiladi.
Base snapshot olinib, keyin qolgan log replay qilinadi.
Copy vaqtida primary disk va network yukiga limit qo‘yiladi.
Replica freshness
API response kerak bo‘lsa qaysi log positiongacha o‘qilganini metadata orqali tekshirishi mumkin. Critical read ma’lum write positionidan ortda qolgan replica’da bajarilmaydi.
Bog‘liq tushunchalar
Primary, Replica, Synchronous replication, Asynchronous replication, Logical replication, Physical replication, Replica lag, Failover, Split-brain, Backup