AWS RDS - Multi-AZ Vs Read Replica

Min Htet SanMin Htet San
3 min read

ကျွန်တော်တို့ AWS Cloud ကို လေ့လာတဲ့ အခါမှာ AWS RDS အကြောင်းကိုလဲ လေ့လာ ကြရမှာပါ။ RDS ကို လေ့လာတဲ့အခါမှာ ကျွန်တော် သိပ်မရှင်းခဲ့တာက Read Replica and Multi AZ အကြောင်းပါပဲ။ မရှင်းခဲ့တာလေးကို သေချာ လိုက်ဖတ်ရင်း note လေးထုတ်မှတ်ခဲ့တာကို အခုတော့ ကျွန်တော် Article လေး အနေနဲ့ ပြန် sharing လုပ်ပေးလိုက်ပါတယ်။


Read Replica

Read Replica ဆိုတာကတော့ သူ့ရဲ့ နာမည်အတိုင်းပဲ ရှိနေပြီးသား source database ကနေ read only copy ကူးတယ်လို့ အလွယ်မှတ်လို့ရပါတယ်။ Read Replica Database မှာ ကျွန်တော်တို့က new data ကို write လုပ်လို့မရပါဘူး။ Source Database ကနေပဲ Data တွေကို asynchronously sync လုပ်ပါတယ်။

အပေါ်က ပုံလေး အတိုင်းပါပဲ။ ဆိုကြပါတော့ ကျွန်တော့်ရဲ့ Application က Analytics Process တစ်ခု run ဖို့ လိုအပ်နေတယ် Analytics Process Run လိုက်ရင် ကျွန်တော်ရဲ့ Source Database မှာ workload တက်ပြီးတော့ Productivity ကို ထိခိုက်စေမယ်ပေါ့။ ဒီလို အခြေနေမျိုးမှာ ကျွန်တော်က RDS Read Replicas တစ်ခုကို create လုပ်လိုက်တယ် ပြီးတော့ Analytics က write လုပ်စရာ မလိုတဲ့ အတွက် read process အတွက် RDS Read Replica ကို ညွှန်ပေးလိုက်တယ်။ ဒါဆိုရင် ကျွန်တော်တို့ရဲ့ Source Database မှာ impact လဲ မဖြစ်တော့ပါဘူး။

BTS of Creating Read Replica

ကျွန်တော်တို့တို့က Read Replica တစ်ခုကို Create လုပ်လိုက်ပြီဆိုရင် ဘယ် Database ကို source ယူမလဲ ဆိုတာ ရွေးပေးရပါမယ်။ ပြီးရင်တော့ နောက်ကွယ်မှာ source database ကို snapshot ယူလိုက်တယ်။ ပြီးရင်တော့ ယူထားတဲ့ snapshot ကို base လုပ်ပြီးတော့ Read only Replica Database ကို Create လုပ်လိုက်ပါတယ်။

Read Replica တွေကို Different Region မှာပါ ကျွန်တော်တို့ create လုပ်လို့ရပါတယ်။ Region တစ်ခုလုံး outage ဖြစ်သွားရင်တောင် နောက် Region မှာ ကျန်ခဲ့ဖို့ DR ပုံစံမျိုးနဲ့လဲ သုံးလို့ရပါတယ်။

Source : AWS


Multi-AZ

RDS Multi-AZ ဆိုတာကတော့ high-availability deployment အတွက်နဲ့ disaster recovery အတွက် အဓိက ထားပြီးတော့ သုံးကြပါတယ်။ Multi-AZ ကို သုံးတဲ့ အခါမှာ Database Failure ဖြစ်တဲ့အခါမှာ automatic failover support ပေးပါမယ်။ ပြီးတော့ Multi-AZ ဆိုတဲ့ နာမည် အတိုင်းပဲ Standby Database ကို Different AZ အောက်မှာ ပဲ create လုပ်ပါတယ်။

အောက်က ပုံလေး နှစ်ပုံမှာ overview လေး ကျွန်တော် ဆွဲပြထားပါတယ်။ ပြီးရင်တော့ Multi-AZ ရဲ့ Development Mode 2 ခုကို နည်းနည်းလောက် ဆက်ပြီးတော့ ပြောပါ့မယ်ဗျ။

Multi-AZ Development Mode

Multi-AZ ကို သုံးမယ်ဆိုရင် ကျွန်တော်တို့မှာ ဘယ်လိုသုံးမလဲ ဆိုပြီး option 2 ခုရှိပါတယ်။

  • Multi-AZ DB instance deployment

  • Multi-AZ DB cluster deployment

ဆိုပြီးတော့ပါ။ နည်းနည်းလောက် ဆီ ဆက်ပြီး ကြည့်လိုက်ရအောင်။


Multi-AZ DB instance Deployment

သူကတော့ ရှင်းပါတယ်။ Different AZ 2 ခုမှာ RDS Database 2 ခုကို တည်ဆောက်လိုက်တာပါပဲ။ တစ်ခုကို Primary Database အနေနဲ့ သတ်မှတ်ပြီး နောက်တစ်ခုကိုတော့ Secondary or Backup Database အနေနဲ့ပေါ့။ တစ်ခုရှိတာက Multi-AZ DB instance deployment မှာက Standby database က just for standby ပါပဲ။ Primary Database ကနေ Standby Database ဆီကိုတော့ Storage Replication ကိုတော့ synchronously replication ဆက်တိုက်လုပ်နေပါတယ်။သူ့ဆီကို ကျွန်တော်တို့ application or anything ကမှ data ကို read လဲ လုပ်မရသလို write လဲ လုပ်လို့ရမှာ မဟုတ်ပါဘူး။

ကျွန်တော် အပေါ်မှာ ပြောခဲ့သလိုပဲ Automatic Failover support ပေးပါတယ်။ ဘယ်အချိန်မှာ Failover လုပ်မလဲဆိုတော့

  • Primary ရဲ့ AZ loss ဖြစ်တာပဲ ဖြစ်ဖြစ်

  • Primary ဆီကို Connectivity မရတော့တာ

  • Compute unit fail ဖြစ်တာ

  • Storage Unit fail ဖြစ်တာမျိုးတွေမှာ လုပ်မှာပါ။

Failover time ကတော့ up to 120s လောက်ကြာမယ်လို့ ဆိုပါတယ်။

ကျွန်တော် ပုံကြမ်းလေး ဆွဲပြထားပေးပါတယ်။


Multi-AZ DB Cluster Deployment

Multi-AZ DB Cluster Deployment မှာဆိုရင် Write Database တစ်လုံးနဲ့ Readable လုပ်နိုင်တဲ့ Standby Database 2 လုံးပါဝင်ပါတယ်။ သူတို့ကတော့ ထုံးစံအတိုင်းပဲ Different AZ တွေမှာတည်ရှိနေမှာပေါ့။ AWS ကတော့ ဒီ Database တွေက semisynchronous လုပ်နေတယ်လို့ ဆိုပါတယ်။ Semi-synchronous ဆိုတာဘာလဲ ? ကျွန်တော် ရှာဖတ်ကြည့်သလောက် ကတော့ အကယ်၍ Primary database မှာ crush တစ်ခုခု ဖြစ်ပြီဆိုတာနဲ့ committed transactions လုပ်ထားတဲ့ transaction တွေအားလုံးကို readable standby database တစ်လုံးစီကို transmit လုပ်ပေးလိုက်တယ်လို့ဆိုပါတယ်။

ပြီးတော့ cluster deployment က instance deployment ထက်ပိုပြီးတော့ workload ပိုကောင်းမယ် lower latency ရှိတယ်လို့လဲ ဆိုထားပါတယ်။

ဒါပေမယ့် တစ်ခုရှိတာက Cluster Deployment Support ပေးတာက MySQL and PostgreSQL DB engines တွေ အတွက်ပဲ support ပေးထားပါသေးတယ်။

Multi-AZ DB cluster

ပုံကတော့ AWS Documentation က ပုံပါ။ သူက ကျွန်တော်ဆွဲတာထက် ပိုရှင်းမယ် ထင်လို့ပါ။

Cluster Development မှာတော့ Failover time ကတော့ up to 75s ပဲ ကြာတော့မယ်လို့ဆိုပါတယ်။

ပြီးတော့ Multi-AZ မှာက Read Replicas တွေလိုမျိုး Different Region အတွက်တော့ Support မပေးပါဘူး။


Multi-AZ Cluster မှာ နောက်ထပ် စိတ်ဝင်စားစရာတွေ ကျန်ပါသေးတယ်။ ကျွန်တော်လဲ Read Replica Vs Multi-AZ ကို ဘာတွေကွာလဲ ပဲ အဓိက ထားချင်တာမို့ ဒီမှာပဲ ရပ်လိုက်ပါ့မယ်။

ကျွန်တော် note ထုတ်ထားတာတွေကို အခြေခံပြီး ရေးထားတာမို့ လိုအပ်ချက်ရှိရင် ပြောပြခဲ့ပေးဖို့ တောင်းဆိုပါတယ်။

ဖတ်လို့ကောင်းမယ့် Article Link တွေကိုလဲ ချထားပေးလိုက်ပါ့မယ်။

choose-the-right-amazon-rds-deployment-option-single-az-instance-multi-az-instance-or-multi-az-database-cluster

https://dev.to/aws-heroes/multi-az-in-amazon-rds-and-how-it-differs-from-high-availability-gn9

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html

the-art-by-makisam.cloud

0
Subscribe to my newsletter

Read articles from Min Htet San directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Min Htet San
Min Htet San

I'm Security and Cloud Support Engineer at KBZ Bank. I'm tying to be a Cloud Native Engineer......