Database replication nima? Master-standby va multi-master
Assalamu Alaykum bugundatabase replication nimaligi , qaysi usullarda uni qilish va bizda qanaqa muammolar kelib chiqishi mumkinligi haqida gaplashamiz.
Replication nima ?
Replication bu databazalar o'rtasida ma'lumotni consistent holatda bir biriga almashish.Oddiy qilib aytganda bir databazani ma'lumotlarini 2-siga to'liqligacha ko'chirib o'tkazish. Bunga turli xil sabablar bo'lishi mumkin , ma'lumotlarni o'chib ketishdan asrash, traffikni oshishi, avialibilityini oshirish uchun bo'lishi mumkin.
Replication qanaqa turlari mavjud (boshqalari ham bo'lishi mumkin):
Master /slave( standby)
Multi Master
Master/standby replication
Bu yerda asosiy g'oya bu bir master/leader write(DDL)larni qabul qiladi va boshqa bir yoki bir necha standby databazalar writeni undan qabul qiladi. Impliment qilishga oson.

Multi Master Replication
Bu yerda asosiy g'oya bu bir necha master/leader write(DDL)larni qabul qiladi va boshqa bir yoki bir necha standby databazalar writeni undan qabul qiladi. Databazalardagi ma'lumot o'rtasidagi ziddiyat yechilishi kerak .
Conflict Resolution turlari
Multi leader replicadan foydalanganimizda bir xil ma'lumot har xil leaderlarda bir vaqtda yangilanishi mumkin va buning natijasida ma'lumotlarda ziddiyat(conflict) kelib chiqadi . Biz buni kelgan ma'lumotni yo'qotmagan holda to'g'rilashimiz kerak.
Bizda har xil conflict resoultion mexanismlari bor :
1.Vaqtga asoslangan (Time-stamp based) resolution — oxirgi yozilgan(vaqtga nisbatan)yangilanish yutib chiqadi.
Oxirgi yozgan (last write wins)— storage layerga eng oxirgi kelgan yutadi(vaqtga bog'liq emas) .
Moslashtirilgan(Custom conflict) resolution — qaysidir masterdagi doim yutib chiqishi yoki dasturga bog'liq xususiy holatlar.

Ma'lumotlarni masterdan standby databazaga o'tkazish asinxronyoki sinxronbo'lishi mumkin.
Asinxron va Sinxron ma'lumot o'tkazish
Ma'lumotlar sinxron o'tkazliganda so'rov masterga kelganda u ushbu tranzaksiya replicalarga yozilmaguncha blokda turadi . Bu birinchi 2 tasi yoki birortasiga yozilguncha ham bo'lishi mumkin.
Ma'lumotlat asinxron o'tkazilgandatranzaksiya masterga yozilganda muvafaqiyatli tugatilgan deb hisoblanadi. Va orqa tarafda asinxron tarzda backuplarga o'zgarishlar o'tkaziladi. Bu yerda yozib bo'lgandan so'ng yangi ma'lumotni vaqtinchalik faqat masterdan olishingiz mumkin , replicalarda u birozdan so'ng paydo bo'ladi. Asinxron holatda ular eventual consistency holatda bo'ladi.
Ma'lumotni o'tkazish turlari
Tepada aytganimizdek masterga ma'lumotlar kelgandan so'ng master ularni tcp bog'lanishlar(connection) orqali replicalarga uzatadi. Buni uzatishni har xil usullari mavjud.
1.Statement based replication — Master query stringni oladi va to'g'ridan to'g'ri replicalarga uzatadi , ammo bun ko'pchilik amalga oshirmaydi sababi master ush bu query uchun allaqchon plan tuzilgan va yangilash uchun ham qanchadir vaqt sarflangan bo'ladi.
2. Binary (streaming) replication— Bunda siz shu o'zgarishlarni 0 va 1 lar formatida replicaga berib yuborasiz ammo agarda databaza versiyalari har xil bo'lsa ular bu binary ma'lumotni tushunishmaydi .
3.Logical replication — bu tepadagi 2 usulni o'rtasidagi usul hisoblanadi , u binary ham yoki queryni o'zini ham uzatmaydi, u x 7ga o'zgardi degan ma'noda ma'lumot yuboradi. Postgres 14 dan so'ng logical replication uchun streaming orqali uzatishimiz mumkin.
Note: Replication yuqori availablity ga yordam beradi .
Foyda va Zararlari
Foyda
—Horizontal scale (kengaytirish) mumkin (asosan read so'rovlar uchun ammo write so'rovlarni ham scale qilsa bo'ladi)
— Hududlardagi databazalar orqali latencyni kamaytirish
Zarari
—Eventual consistency
— Sekin write (synchronous ma'lumot uzatishda)
— Implimentatsiya qilishga murakkab (multi-master)
Xulosa
Xulosa qilib aytadigan bo'lsak replication sizda foydalanuvchilar ko'payganda scale qilishga yordam beradi hamda , hududlar o'rtasida databazalar yaratish orqali so'rov natijasi kelish vaqti kamaytirish mumkin.