Bosh sahifa Wiki Replication

Replication

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.

Replica:

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:

  • barcha database obyektlari bilan yaqin nusxa;
  • tez apply;
  • failoverga mos.

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:

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:

  1. failure aniqlash;
  2. eski primary’ni fencing qilish;
  3. eng mos replica tanlash;
  4. promote qilish;
  5. client routingni yangilash;
  6. 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:

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