7.1
RDS, Read Replica আর Multi-AZ
managed ডেটাবেস কেন, storage auto scaling, read বাড়াতে async replica, failover-এর জন্য sync standby, আর Multi-AZ DB cluster।
28 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই lesson শেষে তুমি পারবে
- Amazon RDS তোমার হয়ে কী কী সামলায় আর কোন কাজগুলো তোমার ঘাড়েই থাকে, সেটা বুঝিয়ে বলতে, এর engine-গুলোর নাম বলতে, আর কেন এতে SSH করা যায় না তা ব্যাখ্যা করতে।
- Instance class আর storage type বাছতে, endpoint খুঁজে বের করতে, আর ঠিকঠাক maximum threshold দিয়ে storage auto scaling চালু করতে।
- Read replica কীভাবে কাজ করে (asynchronous, eventually consistent, নিজের endpoint, ১৫টা পর্যন্ত), এক Region-এর ভেতরে আর Region পার হলে খরচ কত, আর replica promote কীভাবে করে, তা বোঝাতে।
- “Post edit করলাম, তবু পুরনোটা দেখাচ্ছে” সমস্যাটাকে replica lag হিসেবে চিনতে আর সারাতে।
- Multi-AZ DB instance (synchronous standby, একটাই DNS name, automatic failover) আর Multi-AZ DB cluster (এক writer, দুটো পড়া-যায় standby) বোঝাতে, আর Single-AZ থেকে Multi-AZ-এ যেতে।
- RDS-এর জন্য cross-Region disaster recovery সাজাতে, আর পরীক্ষার যেকোনো প্রশ্নে read replica, Multi-AZ instance, Multi-AZ cluster আর cross-Region replica-র মধ্যে ঠিকটা বেছে নিতে।
#Amazon RDS: এমন database যাকে সারাক্ষণ পাহারা দিতে হয় না
#Managed database কেন
Relational database (মানে একটা RDBMS) data রাখে row আর column-এর table-এ, key দিয়ে table-গুলো জোড়া লাগায়, SQL query-র উত্তর দেয়, আর প্রতিটা transaction-কে ACID নিশ্চয়তা দিয়ে আগলে রাখে। চাইলে তুমি নিজেই একটা EC2 instance-এ এটা install করতে পারো। কিন্তু তখন চারপাশের সব কাজও তোমার: operating system, patch, backup, replication, failover, monitoring, disk বাড়ানো। এই কাজ কোনোদিন শেষ হয় না, আর একটা ভুলেই data হারাতে পারে।
Amazon RDS (Relational Database Service) তোমার হয়ে database engine চালায়। তুমি শুধু engine, size আর কয়েকটা setting বেছে দাও; server চালানোর দায়িত্ব AWS-এর।
| AWS করে (RDS) | তোমাকেই করতে হয় |
|---|---|
| Hardware দেয়, engine install করে | Engine, version, instance class আর storage বাছা |
| তোমার বেছে দেওয়া maintenance window-এ OS আর engine patch করে | Schema, index আর query ডিজাইন করা |
| নিজে থেকে backup নেয়, নির্দিষ্ট সময়ে ফিরিয়ে আনতে দেয় (lesson 7.2) | Retention ঠিক করা, বছরের পর বছর রাখার মতো manual snapshot নেওয়া |
| Multi-AZ standby বানায় আর failover করে | Multi-AZ-এর টাকা দেবে কিনা ঠিক করা, failover পরীক্ষা করা |
| তুমি চাইলে read replica বানায় | নিজের application থেকে read সেখানে পাঠানো |
| তুমি অনুমতি দিলে storage নিজে বাড়ায় | সর্বোচ্চ সীমা ঠিক করা, metric-এ চোখ রাখা |
| CloudWatch metric আর dashboard দেয় | Alarm বসানো, সাড়া দেওয়া |
| পেছনে EBS volume-এ storage | Network access: VPC, subnet, security group (lesson 7.4) |
#Engine-গুলো
RDS ছয়টা engine চালায়:
| Engine | কথা |
|---|---|
| PostgreSQL | Open source, নতুন application-এ খুবই জনপ্রিয় |
| MySQL | Open source, web-এর পুরনো চেনা database |
| MariaDB | MySQL থেকে বেরোনো community fork |
| Oracle | বাণিজ্যিক; license সহ, অথবা নিজের license এনে (BYOL) |
| Microsoft SQL Server | বাণিজ্যিক; Express, Web, Standard, Enterprise edition |
| IBM Db2 | বাণিজ্যিক; ২০২৩-এর শেষে RDS-এ এসেছে, BYOL |
Amazon Aurora-ও RDS console-এ থাকে, কিন্তু এটা AWS-এর নিজের cloud-native engine, MySQL আর PostgreSQL-এর সাথে compatible, storage-এর ডিজাইন একদম আলাদা। এর জন্য আলাদা lesson আছে (7.3)। Owner-এর note-এ পাঁচটা engine আর Aurora আছে; Db2 হলো নতুন যোগ হওয়া ষষ্ঠটা।
#SSH নেই
RDS managed service: host-টা AWS-এর। তুমি database client দিয়ে connect করো database port-এ (PostgreSQL-এ 5432, MySQL আর MariaDB-তে 3306, Oracle-এ 1521, SQL Server-এ 1433, Db2-তে 50000)। Server-এ SSH করা যায় না, file system দেখা যায় না, agent বসানো যায় না, নিজে OS patch করা যায় না। ঠিক এই কারণেই patch, backup আর failover AWS নিরাপদে নিজে নিজে করতে পারে।
কোনো পুরনো application-এর যদি OS-এ ঢোকা, নিজের মতো OS patch, বা database host-এ third-party agent লাগে, তাহলে সাধারণ RDS ভুল উত্তর। ঠিক উত্তর হলো RDS Custom (শুধু Oracle আর SQL Server, lesson 7.2), অথবা EC2-তে নিজে database চালানো।
#Instance class, storage আর endpoint
Instance class ঠিক করে CPU আর memory কত, EC2-তে যে family-গুলো দেখেছিলে সেগুলোই (lesson 4.1), শুধু সামনে db. বসে:
- Burstable (
db.t4g,db.t3): ছোট আর সস্তা, development বা হালকা load-এর জন্য। - General purpose (
db.m7g,db.m6i…): CPU আর memory সমান তালে। - Memory optimized (
db.r7g,db.x2iedn…): ব্যস্ত database-এর বড় cache-এর জন্য।
Class বদলানো মানে vertical scaling: instance restart হয়, তাই Single-AZ database কয়েক মিনিট বন্ধ থাকে। Multi-AZ থাকলে বদলটা আগে standby-তে হয়, downtime নেমে আসে একটা failover-এর সমান (নিচে দেখবে)।
Storage নিচে আসলে EBS (lesson 5.2), type তুমি বাছো:
| Type | কোথায় ব্যবহার | মূল কথা |
|---|---|---|
| General Purpose SSD gp3 | বেশিরভাগ database | 3,000 IOPS আর 125 MiB/s baseline সাথেই (বড় volume-এ আরও বেশি); size না বাড়িয়েও IOPS আর throughput আলাদাভাবে বাড়ানো যায় |
| General Purpose SSD gp2 | পুরনো setup | IOPS size-এর সাথে বাঁধা (প্রতি GiB-এ 3), ছোট volume-এ burst credit |
| Provisioned IOPS SSD io2 Block Express / io1 | ব্যস্ত production OLTP, যেখানে স্থির আর কম latency চাই | IOPS তুমি ঠিক করে দাও; এখনকার পছন্দ io2 |
| Magnetic | শুধু পুরনো জিনিস | Storage auto scaling চলে না |
বেশিরভাগ engine-এ প্রতি instance-এ 64 TiB পর্যন্ত (SQL Server-এ 16 TiB)।
প্রতিটা DB instance একটা endpoint পায়: mydb.c9akciq32xyz.us-east-1.rds.amazonaws.com-এর মতো একটা DNS name, সাথে একটা port। Application সবসময় এই নামেই connect করে, কখনো IP address-এ না, কারণ failover-এর সময় RDS নামটাকে অন্য machine-এ সরিয়ে নেয়। কথাটা মাথায় গেঁথে রাখো: endpoint-এর জন্যই Multi-AZ failover application টেরই পায় না, আর promote হওয়া read replica রাখে নিজের endpoint, তাই একটা replica promote করলে connection string বদলাতেই হয়।
#RDS বাড়ানোর তিনটা দিক
| দিক | কীভাবে | Downtime | নিজে থেকে হয়? |
|---|---|---|---|
| Vertical (compute আর memory) | Instance class বদলাও, যেমন db.t3.micro → db.m5.large | Reboot: Single-AZ-এ কয়েক মিনিট, Multi-AZ-এ একটা failover | না, তুমি বদলাও |
| Horizontal (read) | Read replica যোগ করে read সেখানে পাঠাও | নেই | না, তুমি বানাও (RDS-এ replica auto scaling নেই) |
| Storage | Storage auto scaling | নেই | হ্যাঁ, তোমার threshold পর্যন্ত |
Database নিজেই যখন CPU বা memory-তে কুলাতে পারছে না, তখন vertical scaling; আর load যখন মূলত read (report, analytics, product page), তখন replica।
#Storage auto scaling
Storage auto scaling চালু থাকলে RDS free space-এর দিকে নজর রাখে আর চালু অবস্থাতেই তোমার হয়ে volume বড় করে দেয়। RDS storage বাড়ানো শুরু করে যখন তিনটা শর্তই মেলে:
- Free space allocated storage-এর 10% বা তার কম।
- কম জায়গার এই অবস্থা অন্তত ৫ মিনিট ধরে চলছে।
- আগের storage বদলের optimization শেষ, আর গত ২৪ ঘণ্টায় ৪টার কম storage বদল হয়েছে।
যোগ করে এই তিনটার মধ্যে যেটা সবচেয়ে বড়: 10 GiB, এখনকার allocation-এর 10%, অথবা গত এক ঘণ্টার FreeStorageSpace metric দেখে পরের ৭ ঘণ্টায় যতটা বাড়বে বলে সে অনুমান করে।
তোমাকে একটা maximum storage threshold দিতেই হবে (--max-allocated-storage): auto scaling সর্বোচ্চ যতদূর যেতে পারবে, তার ছাদ। এটা এখনকার size-এর অন্তত 10% বেশি হতে হয়, আর AWS বলে অন্তত 26% বেশি রাখো, যাতে ছাদে ধাক্কা খাওয়ার আগেই “সীমার কাছে চলে এসেছ” event পাও। আরও কিছু কথা:
- এটা সব RDS engine-এ চলে, কিন্তু magnetic storage-এ না।
- চালু করতে বা threshold বদলাতে reboot লাগে না।
- Storage কখনো ছোট হয় না, auto scaling দিয়েও না, হাতেও না। ছোট করতে চাইলে ছোট একটা instance বানিয়ে data সরাতে হয় (যেমন blue/green deployment দিয়ে)।
- এটা বানানো ধীর, অনিশ্চিত বৃদ্ধির জন্য। হঠাৎ একবারে বিশাল load এলে disk auto scaling-এর চেয়ে দ্রুত ভরে যায়, database তখন storage-full অবস্থায় বসে থাকে, write নেয় না। বড় load-এর আগে নিজেই জায়গা বাড়িয়ে নাও।
Slide আর অনেক পুরনো course-এ তৃতীয় শর্তটা লেখা আছে “শেষ storage বদলের পর ৬ ঘণ্টা”। AWS বদলানোর আগ পর্যন্ত নিয়মটা তাই ছিল; এখন নিয়ম হলো “optimization শেষ, আর ২৪ ঘণ্টায় ৪টার কম বদল”। পরীক্ষার কোনো option-এ ৬ ঘণ্টা দেখলে বুঝবে পুরনো নিয়মের কথা বলছে; বাকি দুটো সংখ্যা (10% free, ৫ মিনিট) একই আছে।
Storage auto scaling
Free space কমে এলে storage auto scaling DB instance-এর disk বাড়িয়ে দেয়, কোনো downtime ছাড়া, তোমার দেওয়া maximum storage threshold পর্যন্ত।
পরিস্থিতি
Storage
| Allocated | Used | Free | Max threshold | Status |
|---|---|---|---|---|
| 100 GiB | 85 GiB | 15% | 200 GiB | available |
Instance-এ 100 GiB allocated, maximum storage threshold 200 GiB। App একের পর এক row insert করছে।
#Read replica
#কীভাবে কাজ করে
Read replica হলো একটা DB instance-এর read-only কপি। বানানোর সময় RDS source-এর একটা snapshot নেয়, তা থেকে নতুন instance বানায়, তারপর engine-এর নিজের replication দিয়ে সেটাকে হালনাগাদ রাখে। Source-টা তখন হয়ে যায় primary।
- Replication asynchronous: primary commit করে, application-কে উত্তর দেয়, আর পরিবর্তনটা replica-তে পাঠায় তার পরে। তাই replica একটু পিছিয়ে চলে, আর replica থেকে পড়া data eventually consistent।
- Replica শুধু read-only connection নেয়:
SELECTচলে;INSERT,UPDATE,DELETEব্যর্থ হয়। - প্রতিটা replica-র নিজের endpoint আছে। RDS তোমার হয়ে read আর write ভাগ করে না: application (বা একটা proxy, বা তোমার বানানো একটা Route 53 record)-কেই read পাঠাতে হবে replica-র endpoint-এ আর write পাঠাতে হবে primary-তে।
- Replica থাকতে পারে একই AZ-এ, অন্য AZ-এ, বা অন্য Region-এ।
- Replica-র bill সাধারণ DB instance-এর মতোই, নিজের class আর storage সহ (primary-র চেয়ে ছোট রেখো না, নইলে পিছিয়ে পড়বে)।
- RDS-এ replica-র auto scaling নেই: যোগ-বিয়োগ তোমাকেই করতে হয়। (Aurora নিজের replica auto scale করতে পারে, lesson 7.3।)
- Replica-কে promote করে স্বাধীন database বানানো যায় (নিচে দেখো), আর replica নিজেও Multi-AZ হতে পারে।
একটা source থেকে কয়টা replica?
| Engine | প্রতি source-এ replica | Replica-র replica? | কথা |
|---|---|---|---|
| MySQL, MariaDB | ১৫ | হ্যাঁ | MySQL/MariaDB replica-কে চাইলে writable-ও করা যায় (খুব কমই বুদ্ধিমানের কাজ) |
| PostgreSQL | ১৫ | হ্যাঁ (নতুন version-এ) | |
| Oracle | ১৫ | না | Lag কম রাখতে AWS বলে ৫টার বেশি না; DR-এর জন্য mounted (পড়া যায় না এমন) replica-ও আছে |
| SQL Server | ১৫ | না | শুধু Enterprise Edition; Multi-AZ replica হয় না |
| Db2 | ৩ | না | Read-only বা standby (পড়া যায় না) replica |
Owner-এর note-এ আছে “সাধারণত ৫টা”। এটা পুরনো সীমা, পুরনো material-এ এখনো দেখবে; এখন বেশিরভাগ engine-এ quota প্রতি source-এ ১৫টা, slide-ও এই সংখ্যাই বলে।
#Replica কীসের জন্য
মূল কাজ read-এর চাপ সরিয়ে নেওয়া। ধরো production database স্বাভাবিক traffic নিয়েই ব্যস্ত। এখন ব্যবসার লোকজন একটা reporting বা analytics application চায়, যার ভারী query লাখ লাখ row ঘাঁটে (একটা OLAP workload)। এটা primary-তে চালালে প্রতিটা customer তার ধাক্কা টের পাবে। তাই একটা read replica বানাও, reporting tool-কে replica-র endpoint দেখিয়ে দাও, production primary-র গায়ে আঁচও লাগবে না। Replica শুধু SELECT ধরনের statement-এরই উত্তর দেয়।
আরও কাজ: primary অল্প সময়ের জন্য বন্ধ থাকলে (যেমন maintenance-এ) read চালিয়ে যাওয়া, পুরনো data মেনে নিয়ে; অন্য Region-এর user-দের কাছে একটা কপি রাখা; আর promote করে disaster recovery।
Read replica: read ভাগ করা, আর lag
AZ a-র primary সব write নেয়। AZ b আর AZ c-র দুটো read replica পরিবর্তনগুলো asynchronous-ভাবে পায়, আর নিজের নিজের endpoint দিয়ে read সামলায়।
পরিস্থিতি
সব write (নতুন post, edit, payment) যায় primary-তে, primary-র endpoint দিয়ে। write নিতে পারে শুধু primary।
#Network-এর খরচ
AWS সাধারণত AZ-এর সীমানা পার হওয়া data-র জন্য টাকা নেয়, Region থেকে বেরোনো data-র জন্যও। RDS এখানে একটা বিশেষ ছাড় দেয়:
| Replica কোথায় | Replication-এর data transfer |
|---|---|
| একই AZ | ফ্রি |
| অন্য AZ, একই Region | ফ্রি (এটাই ছাড়) |
| অন্য Region | inter-Region data transfer হিসেবে টাকা লাগে |
Replica instance আর তার storage-এর টাকা সবসময়ই দিতে হয়; প্রশ্নটা শুধু replication traffic নিয়ে।
#Replica lag আর “পুরনো post” সমস্যা
পরীক্ষার সবচেয়ে বিখ্যাত scenario-গুলোর একটা।
এই ফাঁকটার নাম replica lag (replication lag-ও বলে), আর এই আচরণের নাম eventual consistency: পরিবর্তনটা replica-গুলোতে সাথে সাথে থাকে না, কিন্তু শেষমেশ সবাই এক জায়গায় মিলে যায়। Lag সেকেন্ডে দেখা যায় CloudWatch-এর ReplicaLag metric-এ। এটা বাড়ে যখন:
- primary-তে হঠাৎ অনেক ভারী write আসে;
- replica primary-র চেয়ে ছোট class-এর, বা IOPS কম;
- replica-তে লম্বা query চলে পরিবর্তন বসানোর কাজ ধীর করে দেয়;
- replica অন্য Region-এ (network-এর দূরত্ব বেশি)।
কী চাই তার ওপর নির্ভর করে সমাধান:
| সমাধান | কীভাবে কাজ করে | দাম |
|---|---|---|
| Read your own writes | কোনো user write করার পর পরের কয়েক সেকেন্ড সেই user-এর read যায় primary-তে; বাকি সবাই replica থেকেই পড়ে | App-এ একটু routing logic লাগে। পরীক্ষার পরিচিত উত্তর এটাই। |
| জরুরি data primary থেকে পড়ো | Checkout-এর মোট, balance, যা একদম তাজা হতেই হবে, সবসময় primary থেকে | Primary-র ওপর চাপ বাড়ে |
| Write-through cache | নতুন মানটা একই সময়ে ElastiCache-এ লিখে সেখান থেকে পড়ো (lesson 7.5) | আরেকটা system চালাতে হয় |
| Aurora | Aurora replica storage ভাগ করে নেয়, তাই lag সাধারণত ১০০ ms-এর কম | তবু asynchronous, কখনো ঠিক শূন্য না |
| Lag-এ নজর | ReplicaLag-এ alarm; পিছিয়ে পড়া replica-কে read-এর ঘূর্ণন থেকে সরাও | ধরে ফেলে, ঠেকায় না |
Multi-AZ standby এখানে কোনো কাজে আসে না: সেটা synchronous ঠিকই, কিন্তু তাকে কেউ পড়তে পারে না।
#Replica promote করা
একটা কাজেই (aws rds promote-read-replica) read replica-কে স্বাধীন DB instance বানানো যায়। কী হয়:
- Replica replication থামায়; source-এর সাথে বাঁধন চিরতরে ছিঁড়ে যায় (আর জোড়া যায় না)।
- Reboot হয় (কয়েক মিনিট), ফিরে আসে নিজের backup-সহ একটা সাধারণ read/write instance হয়ে।
- নিজের endpoint-ই রাখে, তাই application-কে নতুন এই নামের দিকে দেখাতে হয়।
- Primary যা তখনো পাঠায়নি (lag-এর অংশটুকু), তা promote হওয়া কপিতে নেই।
“Read replica দিয়ে write করব কীভাবে?” প্রশ্নের উত্তর এটাই: promote না করা পর্যন্ত পারবে না, আর promote করলে সেটা আর replica থাকে না। Promote কাজে লাগে disaster recovery-তে, একটা database ভেঙে দুটো করতে, আর ঝামেলাহীন migration-এ। এটা সবসময় হাতে করতে হয় (বা তোমার নিজের automation দিয়ে); RDS নিজে থেকে কখনো replica promote করে না।
নিজেকে যাচাই করোপ্রশ্ন
একটা news site সব read পাঠায় দুটো RDS for MySQL read replica-তে। Editor-রা অভিযোগ করছে, headline ঠিক করে page reload করলে এক-দুই সেকেন্ড পুরনো headline-ই দেখায়। সবচেয়ে সম্ভাব্য কারণ আর সবচেয়ে ভালো সমাধান কী?
#Multi-AZ DB instance: availability-র জন্য, গতির জন্য না
#কীভাবে কাজ করে
Multi-AZ DB instance deployment-এ RDS একই Region-এর অন্য একটা AZ-এ একটা standby বানায়, আর synchronous replication দিয়ে তাকে তাল মিলিয়ে রাখে: application “committed” শোনার আগেই প্রতিটা write primary আর standby দুই জায়গাতেই জমা হয়।
- একটাই DNS name। Application শুধু endpoint চেনে। Failover-এর সময় RDS নামটাকে standby-র দিকে ঘুরিয়ে দেয়, তাই application-এ কিছুই বদলাতে হয় না, শুধু আবার connect করতে হয়।
- Automatic failover, সাধারণত ৬০–১২০ সেকেন্ডে, কারও হাত লাগাতে হয় না।
- Standby পড়া যায় না। এর কোনো endpoint নেই, connection নেয় না। Multi-AZ read capacity বাড়ায় না, এটা scaling-এর জিনিস না।
- Commit হওয়া transaction-এর কোনো data হারায় না, কারণ দুই কপিতেই আছে।
- দাম: standby-এর টাকাও দিতে হয় (Single-AZ-এর মোটামুটি দ্বিগুণ), আর commit একটু ধীর হয়, কারণ প্রতিটা commit দ্বিতীয় AZ-এর জন্য অপেক্ষা করে।
- Backup নেওয়া হয় standby থেকে, তাই primary-কে backup-এর জন্য থামতে হয় না।
RDS নিজে থেকে failover করে যখন:
| কারণ | উদাহরণ |
|---|---|
| Primary host অসুস্থ বা সাড়া দিচ্ছে না | Hardware নষ্ট, CPU বা memory-তে আটকে engine ঝুলে গেছে |
| Primary-র সাথে network যোগাযোগ নেই | তার AZ-এ network-এ গোলমাল |
| Primary-র storage নষ্ট | EBS volume ব্যর্থ |
| পুরো একটা AZ বিপর্যস্ত | বিদ্যুৎ বা cooling বিভ্রাট |
| Maintenance-এ OS patching | আগে standby patch, তারপর failover |
| কিছু instance modification | Instance class বদল |
| তুমি নিজে চাইলে | Reboot with failover, application পরীক্ষা করতে |
Failover-এর পর RDS একটা নতুন standby বানায়, যাতে আবার সুরক্ষা ফিরে আসে।
হাতে-কলমে দুটো কথা: connection কেটে গেলে application-কে retry করতে হবে, আর DNS চিরকাল cache করে রাখা চলবে না। যেসব Java application JDBC দিয়ে connect করে, সেগুলো JVM-এ DNS উত্তর cache করে রাখে; AWS বলে DNS TTL ৬০ সেকেন্ড বা কম রাখো (networkaddress.cache.ttl=60)। Failover শুরু আর শেষ হলে RDS event-ও পাঠায়, সেগুলো email বা SNS-এ নিতে পারো।
Multi-AZ DB instance: এক নাম, দুই কপি
App সবসময় একটাই endpoint-এ, মানে একটা DNS name-এ connect করে। তার পেছনে আছে AZ a-র primary আর AZ b-র একটা synchronous standby, যাকে কেউ query করতে পারে না।
পরিস্থিতি
App endpoint resolve করল। DNS name দেখাচ্ছে AZ a-র primary-কে, তাই write সেখানেই যায়।
#Downtime ছাড়া Single-AZ থেকে Multi-AZ
চালু থাকা একটা Single-AZ instance-কে Modify → Multi-AZ: Yes দিয়ে (বা aws rds modify-db-instance --multi-az দিয়ে) Multi-AZ বানানো যায়। Database বন্ধ হয় না। ভেতরে RDS:
- Primary-র storage volume-এর একটা snapshot নেয়;
- সেই snapshot থেকে অন্য AZ-এ standby-র জন্য নতুন volume restore করে;
- দুটোর মধ্যে synchronous replication চালু করে, status আবার available হয়।
নতুন volume-গুলো পেছনে পেছনে block লোড করে, তাই standby পুরো গরম না হওয়া পর্যন্ত write latency বাড়তে পারে। এজন্য AWS বলে কাজটা ফাঁকা সময়ে করো, অথবা খুব স্পর্শকাতর production database হলে আগে একটা read replica বানাও, সেটাকে Multi-AZ করো, তাল মিলিয়ে নিতে দাও, তারপর promote করো।
#Multi-AZ কি disaster recovery?
Slide-এ Multi-AZ-এর শিরোনাম “Disaster Recovery”, আর note বলে “HA & DR”। একটু সূক্ষ্ম হও: Multi-AZ বাঁচায় একটা instance, তার storage বা একটা AZ হারানো থেকে, সবকিছু একটাই Region-এর ভেতরে। এটা high availability। পুরো Region বন্ধ হয়ে গেলে primary আর standby দুটোই গেল। Region বিভ্রাট থেকে বাঁচতে লাগে cross-Region read replica (বা cross-Region backup, lesson 7.2)। পরীক্ষার উত্তরে “high availability”, “automatic failover”, “AZ পড়ে গেলেও টিকে থাকা” মানে Multi-AZ; আর “অন্য Region” মানে cross-Region replica।
#Multi-AZ DB cluster: পড়া-যায় standby
তুলনামূলক নতুন একটা deployment option, Aurora cluster-এর সাথে গুলিয়ে ফেলা খুব সহজ:
- তিনটা AZ-এ তিনটা DB instance: একটা writer আর দুটো reader instance।
- Semi-synchronous replication: অন্তত একটা reader পরিবর্তনটা পেলেই commit সফল। প্রতিটা commit অন্তত দুটো AZ-এ থাকে, কিন্তু ধীর reader-এর জন্য writer অপেক্ষা করে না।
- দুটো standby-ই পড়া যায়। একটা writer endpoint সবসময় writer-কে দেখায়, আর একটা reader endpoint connection-গুলো reader-দের মধ্যে ভাগ করে দেয় (প্রতিটা instance-এর নিজের endpoint-ও আছে)।
- Failover সাধারণত ৩৫ সেকেন্ডের কম, সবচেয়ে সাম্প্রতিক পরিবর্তন থাকা reader-এর দিকে; writer endpoint তার সাথে সরে যায়।
- Multi-AZ instance-এর চেয়ে write latency কম, কারণ instance-গুলো transaction log-এর জন্য দ্রুত local NVMe storage ব্যবহার করে।
- শুধু RDS for MySQL আর RDS for PostgreSQL, local NVMe থাকা instance class-এ (
db.m6gd,db.r6gdএই ধরনের)। - Reader-রা তবু একটু পরে পরিবর্তন বসায়, তাই replica lag আর read-after-write সমস্যা এখানেও আছে।
- এটা Aurora না: Aurora একটাই storage volume ১৫টা পর্যন্ত replica-র মধ্যে ভাগ করে (lesson 7.3)।
Multi-AZ DB cluster: এক writer, দুটো পড়া-যায় standby
তিনটা AZ-এ তিনটা DB instance। writer endpoint সবসময় writer-এর কাছে নিয়ে যায়; reader endpoint read ভাগ করে দেয় দুই reader-এ। শুধু RDS for MySQL আর RDS for PostgreSQL-এ এটা আছে।
পরিস্থিতি
App একটা write পাঠায় writer endpoint-এ, যেটা resolve হয় AZ a-র writer-এ।
#Region পেরিয়ে disaster recovery
#ফাঁদের প্রশ্নটা
Owner-এর note-এ পরীক্ষার এই প্রশ্নটা আছে:
তোমার RDS PostgreSQL database-এর জন্য এমন disaster recovery কৌশল চাই, যাতে একটা Region বিভ্রাটে database দ্রুত অন্য Region-এ read আর write দুটোই সামলাতে পারে। DR database-কে highly available হতেই হবে। কী সুপারিশ করবে?
ঠিক উত্তর: অন্য Region-এ একটা read replica বানাও, আর সেই read replica-তে Multi-AZ চালু করো। লোভনীয় ভুল উত্তর: “মূল database-এ Multi-Region option চালু করো।” তিনটা কথা বুঝলেই পরিষ্কার:
Read replica write নিতে পারে, promote করার পর
সাধারণ সময়ে replica শুধু পড়া যায়। দুর্যোগে তুমি DR Region-এর replica-টাকে (ধরো us-west-2-এর, যখন us-east-1 বন্ধ) promote করো। সেটা আর replica থাকে না, হয়ে যায় একটা স্বাধীন primary, যে read আর write দুটোই নেয়। তাই প্রশ্নে “read আর write” লেখা থাকলেও read replica বাদ পড়ে না।
Replica-তে Multi-AZ দিলে DR database highly available
সাধারণ একটা replica promote হলে সেটা Single-AZ database: DR Region-এ একটা AZ পড়ে গেলেই আবার সব বন্ধ। শুরু থেকেই replica-তে Multi-AZ চালু রাখলে replica-র নিজের একটা synchronous standby থাকে, আর promote হওয়া database প্রথম মিনিট থেকেই highly available। এজন্যই slide-এ লেখা আছে, DR-এর জন্য read replica-কে Multi-AZ করে রাখা যায়।
“Enable Multi-Region” বলে কিছু নেই
সাধারণ RDS-এ Multi-Region নামের কোনো checkbox নেই। Multi-AZ কাজ করে শুধু এক Region-এর ভেতরে। RDS-এর কপি অন্য Region-এ নেওয়ার আসল উপায় cross-Region read replica (cross-Region automated backup replication হলো ধীর কিন্তু সস্তা বিকল্প)। Option-টা বানানোই হয়েছে তোমাকে বিভ্রান্ত করতে।
DR-এর জন্য cross-Region read replica
Primary চলছে us-east-1-এ। একটা replica একই Region-এ, আরেকটা us-west-2-তে। প্রশ্ন: কোনটার খরচ কত, আর us-east-1 বন্ধ হয়ে গেলে কী হয়?
পরিস্থিতি
সাধারণত AZ পার হওয়া data-র জন্য AWS টাকা নেয়। RDS এখানে ব্যতিক্রম: একই Region-এর read replica-তে replicate করা ফ্রি, অন্য AZ-এ হলেও। টাকা দিতে হয় শুধু replica instance আর তার storage-এর।
#একই দরকার, আলাদা service, আলাদা উত্তর
পরীক্ষা যারা বানায়, তারা এক service-এর feature আরেক service-এর option-এ ঢুকিয়ে দিতে খুব ভালোবাসে। প্রশ্নে কোন service-এর নাম আছে, সেই অনুযায়ী cross-Region DR feature মেলাও:
| প্রশ্নে যা লেখা | Cross-Region উত্তর |
|---|---|
| RDS (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server) | Cross-Region read replica, হাতে promote (DR কপিকে HA হতে হলে তাতে Multi-AZ চালু) |
| Aurora | Aurora Global Database (storage স্তরে replication, সাধারণত ১ সেকেন্ডের কম, managed failover; lesson 7.3), read replica না |
| DynamoDB বা NoSQL | DynamoDB Global Tables (multi-Region, multi-active) |
#ঠিকটা বেছে নেওয়া
| Read replica (একই Region) | Multi-AZ DB instance | Multi-AZ DB cluster | Cross-Region read replica | |
|---|---|---|---|---|
| মূল উদ্দেশ্য | Read বাড়ানো, reporting | High availability | HA, সাথে কিছুটা read বাড়ানো | Disaster recovery, দূরের user-দের কাছে read |
| Replication | Asynchronous | Synchronous | Semi-synchronous | Asynchronous |
| কপি পড়া যায়? | হ্যাঁ, নিজের endpoint দিয়ে | না | হ্যাঁ, reader endpoint দিয়ে | হ্যাঁ, নিজের endpoint দিয়ে |
| Failover | হাতে promote, নতুন endpoint | নিজে থেকে, একই endpoint, ৬০–১২০ সেকেন্ড | নিজে থেকে, একই writer endpoint, ৩৫ সেকেন্ডের কম | হাতে promote, নতুন endpoint |
| বিপদে data হারায় | Lag-এ যা ছিল | Commit হওয়া data হারায় না | Commit হওয়া data হারায় না (অন্তত একটা reader-এ আছে) | Lag-এ যা ছিল |
| কী থেকে বাঁচায় | নিজে কিছু থেকেই না | Instance, storage বা AZ হারানো | Instance, storage বা AZ হারানো | Region হারানো |
| Engine | ছয়টাই (Db2-তে ৩টা পর্যন্ত) | ছয়টাই | MySQL, PostgreSQL | ছয়টাই (Db2-তে standby replica) |
| বাড়তি খরচ | Replica instance; একই Region-এ transfer ফ্রি | Standby (প্রায় ২ গুণ) | তিনটা instance | Replica instance + inter-Region transfer |
Feature-গুলো একসাথেও চলে: একটা primary Multi-AZ হতে পারে আর তার read replica-ও থাকতে পারে, আবার replica নিজেও Multi-AZ হতে পারে।
Read replica, Multi-AZ, নাকি দুটোই?
Database-কে কী সামলাতে বা কী থেকে বাঁচতে হবে, বেছে নাও। ক্লিক করার সাথে সাথে উত্তর বদলাবে, সাথে কারণ, খরচ, আর পরীক্ষার প্রশ্নে কোন শব্দ দেখে চিনবে।
১. মূল দরকারটা কী?
২. কোন engine?
৩. বাড়তি: failover ৩৫ সেকেন্ডের মতো সময়ে (AZ), বা promote-এর পরেও HA কপি (Region)?
Multi-AZ DB instance
একই Region-এর অন্য AZ-এ একটা synchronous standby। একটাই DNS name: গোলমাল হলে RDS সাধারণত ৬০ থেকে ১২০ সেকেন্ডে endpoint standby-র দিকে ঘুরিয়ে দেয়, app-এ কিছু বদলাতে হয় না। standby পড়া যায় না; এটা availability-র জন্য, scaling-এর জন্য না।
খরচ: Standby-এর টাকাও দিতে হয়: Single-AZ instance-এর প্রায় দ্বিগুণ।
পরীক্ষায় চেনার শব্দ: high availability, কারও হাত না লাগিয়ে automatic failover, AZ বিভ্রাটে টিকে থাকা, synchronous, একই endpoint, maintenance-এ downtime কম
#System design-এ RDS কোথায় বসে
- Production-এ যা-ই চালাও, শুরু করো Multi-AZ দিয়ে। বাড়তি খরচে পাও automatic failover, আর maintenance-এ শুধু ছোট্ট একটা ঝাঁকুনি। MySQL বা PostgreSQL-এ failover-এর সময় জরুরি হলে, বা পড়া-যায় standby কাজে লাগাতে পারলে, Multi-AZ DB cluster নাও।
- Read বেশি হলে read replica যোগ করো, আর application সেভাবে সাজাও: primary-তে একটা write connection, replica endpoint-গুলো জুড়ে একটা read pool, user সদ্য যা বদলেছে তার জন্য read-your-own-writes, আর
ReplicaLag-এ alarm। - Disaster recovery Region ধরে পরিকল্পনা করো: কয়েক মিনিটের RTO আর কয়েক সেকেন্ডের RPO চাইলে cross-Region replica (DR কপিকে HA হতে হলে Multi-AZ), সস্তা আর ধীর পরিকল্পনা চাইলে cross-Region backup। দরকারের আগেই promote আর connection string বদলের মহড়া দাও, সম্ভব হলে endpoint-গুলোর সামনে একটা Route 53 record (যেমন
db.example.com) রেখে। - Storage auto scaling চালু রাখো, বাস্তবসম্মত threshold দিয়ে, কিন্তু পরিকল্পিত বড় load-এর আগে storage নিজেই বাড়াও।
- Connection সামলানো মজবুত রাখো: retry, অল্প সময়ের DNS cache, connection pooling। RDS Proxy (lesson 7.4) failover আরও ছোট করে, connection-ও pool করে।
- Migration: AWS DMS source চালু রেখেই on-premises database RDS-এ কপি করে; upgrade-এ replica promote বা blue/green deployment সাহায্য করে।
#নিজে করে দেখো
# 1. একটা PostgreSQL instance: Multi-AZ, gp3, 500 GiB পর্যন্ত storage auto scaling
aws rds create-db-instance \
--db-instance-identifier shop-db \
--engine postgres --db-instance-class db.m7g.large \
--allocated-storage 100 --storage-type gp3 --max-allocated-storage 500 \
--multi-az --master-username app --manage-master-user-password \
--db-subnet-group-name private-db --vpc-security-group-ids sg-0abc1234def567890
# 2. Endpoint (app যে DNS name ব্যবহার করে) আর কোন কোন AZ ব্যবহার হচ্ছে, দেখো
aws rds describe-db-instances --db-instance-identifier shop-db \
--query "DBInstances[0].[Endpoint.Address,Endpoint.Port,AvailabilityZone,SecondaryAvailabilityZone,MultiAZ]"
# 3. অন্য AZ-এ একটা read replica, আর অন্য Region-এ একটা (inter-Region transfer-এর bill হয়)
aws rds create-db-instance-read-replica --db-instance-identifier shop-db-rr1 \
--source-db-instance-identifier shop-db --availability-zone us-east-1c
aws rds create-db-instance-read-replica --region us-west-2 \
--db-instance-identifier shop-db-dr --multi-az \
--source-db-instance-identifier arn:aws:rds:us-east-1:111122223333:db:shop-db
# 4. Replica-তে replica lag (সেকেন্ডে) দেখো
aws cloudwatch get-metric-statistics --namespace AWS/RDS --metric-name ReplicaLag \
--dimensions Name=DBInstanceIdentifier,Value=shop-db-rr1 \
--start-time 2026-10-25T10:00:00Z --end-time 2026-10-25T11:00:00Z \
--period 60 --statistics Maximum
# 5. Failover পরীক্ষা: failover সহ reboot, তারপর AZ অদলবদল দেখো
aws rds reboot-db-instance --db-instance-identifier shop-db --force-failover
aws rds describe-events --source-identifier shop-db --source-type db-instance --duration 60
# 6. Single-AZ instance-কে Multi-AZ বানাও (downtime নেই)
aws rds modify-db-instance --db-instance-identifier legacy-db --multi-az --apply-immediately
# 7. দুর্যোগ: cross-Region replica promote (replication চিরতরে শেষ)
aws rds promote-read-replica --region us-west-2 --db-instance-identifier shop-db-dr
# 8. একটা Multi-AZ DB cluster (শুধু MySQL বা PostgreSQL): writer + 2টা পড়া-যায় standby
aws rds create-db-cluster --db-cluster-identifier orders-cluster \
--engine postgres --db-cluster-instance-class db.r6gd.large \
--storage-type io2 --iops 3000 --allocated-storage 100 \
--master-username app --manage-master-user-password
aws rds describe-db-clusters --db-cluster-identifier orders-cluster \
--query "DBClusters[0].[Endpoint,ReaderEndpoint]"
Replica-তে write ব্যর্থ হয়, read চলে, আর কতটা পিছিয়ে আছে তাও দেখা যায়:
-- PostgreSQL replica
SELECT pg_is_in_recovery(); -- replica-তে true
SELECT now() - pg_last_xact_replay_timestamp() AS lag;
UPDATE posts SET title = 'x' WHERE id = 1; -- ERROR: cannot execute UPDATE in a read-only transaction
-- MySQL replica
SHOW REPLICA STATUS\G -- Seconds_Behind_Source
#সারসংক্ষেপ
মূল কথাগুলো
- RDS হলো managed relational database: hardware, OS আর engine-এর patch, backup, Multi-AZ failover আর replica সামলায় AWS; schema, query, size আর access সামলাও তুমি। Engine: PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, IBM Db2 (Aurora আলাদা)। SSH নেই; OS-এ ঢুকতে হলে RDS Custom (Oracle, SQL Server) বা EC2।
- Connect করো endpoint (একটা DNS name) দিয়ে। Storage আসলে EBS: বেশিরভাগের জন্য gp3, স্থির বেশি IOPS-এর জন্য io2। Instance class বদলানো মানে reboot-সহ vertical scaling।
- Storage auto scaling: free space 10% বা কম, ৫ মিনিট ধরে, আর আগের বদলের optimization শেষ (২৪ ঘণ্টায় ৪টার কম বদল; পুরনো material বলে ৬ ঘণ্টা) হলে RDS যোগ করে 10 GiB, 10% বা অনুমিত ৭ ঘণ্টার বৃদ্ধি, যেটা বড়, তোমার maximum storage threshold পর্যন্ত। Downtime নেই; storage কখনো ছোট হয় না।
- Read replica: প্রতি source-এ ১৫টা পর্যন্ত (Db2: ৩), একই AZ, অন্য AZ বা অন্য Region-এ, asynchronous, eventually consistent, শুধু read (
SELECT), প্রত্যেকের নিজের endpoint; read সেখানে পাঠানো app-এর কাজ। Reporting আর read-heavy load-এর জন্য। একই Region-এ replication ফ্রি, Region পার হলে টাকা লাগে। - “আপডেট করলাম, তবু পুরনো দেখাচ্ছে”-এর ব্যাখ্যা replica lag। সমাধান: primary থেকে read-your-own-writes, cache, বা Aurora;
ReplicaLag-এ চোখ রাখো। - Replica promote করলে সেটা স্বাধীন read/write database হয়, replication শেষ হয়, নিজের endpoint রাখে, আর কাজটা সবসময় হাতে করতে হয়। Replica নিজে থেকে কখনো failover করে না।
- Multi-AZ DB instance: অন্য AZ-এ synchronous standby, একটাই DNS name, ৬০–১২০ সেকেন্ডে automatic failover, standby পড়া যায় না, scaling-এর জন্য না, খরচ প্রায় দ্বিগুণ। Single-AZ → Multi-AZ চালু অবস্থাতেই হয়: snapshot, অন্য AZ-এ restore, তারপর sync।
- Multi-AZ DB cluster: তিন AZ-এ এক writer + দুটো পড়া-যায় standby, semi-synchronous, reader endpoint, failover ৩৫ সেকেন্ডের কম, শুধু MySQL আর PostgreSQL।
- RDS-এর cross-Region DR = cross-Region read replica, হাতে promote; DR database-কে HA হতে হলে replica-তে Multi-AZ চালু করো। “Multi-Region option” বলে কিছু নেই। Aurora → Global Database; DynamoDB → Global Tables।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
সাধারণ একটা Amazon RDS DB instance বানানোর সময় নিচের কোনটা database engine হিসেবে বাছা যায় না?
নিজেকে যাচাই করোপ্রশ্ন
একটা টিম তাদের database server-এর operating system-এ সরাসরি একটা third-party monitoring agent বসাতে চায়, আর নিজের মতো OS patch দিতে চায়। Database-টা Oracle। কোন option শর্ত পূরণ করে, আর যতটা সম্ভব ব্যবস্থাপনা AWS-এর হাতে রাখে?
নিজেকে যাচাই করোপ্রশ্ন
একটা application RDS DB instance-এ connect করতে কী ব্যবহার করে?
নিজেকে যাচাই করোপ্রশ্ন
এখনকার নিয়মে কোন কোন শর্তে RDS storage auto scaling storage বাড়ানো শুরু করে? দুটো বেছে নাও।
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS for MySQL instance-এ 200 GiB allocated, storage auto scaling চালু। দশ মিনিট ধরে free space 8%, সাম্প্রতিক কোনো storage বদল চলছে না। পরের ৭ ঘণ্টায় RDS সামান্যই বৃদ্ধি অনুমান করছে। Storage কতটা বাড়বে?
নিজেকে যাচাই করোপ্রশ্ন
একটা startup-এর RDS PostgreSQL database অনিশ্চিতভাবে বাড়ে, আর দুবার storage ফুরিয়ে গেছে। টিম চায় downtime ছাড়া এটা বন্ধ হোক, আর দরকারের অনেক বেশি storage-এর টাকা যেন দিতে না হয়। Solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
একবারের একটা migration-এ দুই ঘণ্টার মধ্যে 400 GiB data ঢোকানো হলো একটা 100 GiB RDS instance-এ, storage auto scaling চালু, threshold 2,000 GiB। Instance কয়েক ঘণ্টা storage-full অবস্থায় রইল। কেন, আর কী করা উচিত ছিল?
নিজেকে যাচাই করোপ্রশ্ন
একটা অনলাইন game player profile রাখে MySQL-compatible একটা relational database-এ। Traffic খুব ওঠানামা করে, আগে থেকে বোঝা যায় না, আর কোম্পানি চায় database-এর CPU আর memory নিজে থেকেই বাড়ুক-কমুক। কোন option শর্তটা পূরণ করে?
নিজেকে যাচাই করোপ্রশ্ন
Default হিসেবে একটা RDS for PostgreSQL source DB instance থেকে সর্বোচ্চ কয়টা read replica বানানো যায়?
নিজেকে যাচাই করোপ্রশ্ন
RDS read replica নিয়ে কোন দুটো কথা সত্য?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির business analyst-রা প্রতি সকালে production RDS for MySQL database-এ লম্বা reporting query চালায়, আর customer-দের response ধীর হয়ে যায়। Report-এ কয়েক সেকেন্ড পুরনো data চললেও সমস্যা নেই। সবচেয়ে সাশ্রয়ী সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
us-east-1a-তে একটা primary RDS for MySQL instance, একটা read replica us-east-1b-তে আর একটা eu-west-1-এ। Replication-এর জন্য কোন data transfer চার্জ লাগে?
নিজেকে যাচাই করোপ্রশ্ন
একটা social media app post লেখে RDS primary-তে, আর প্রতিটা page পড়ে read replica থেকে। User-রা বলছে, post edit করে সাথে সাথে refresh করলে পুরনো version দেখায়, কিন্তু কয়েক সেকেন্ড পর নতুনটা আসে। এর ব্যাখ্যা কী?
নিজেকে যাচাই করোপ্রশ্ন
আগের প্রশ্নের app-এর জন্য product owner চায়, লেখক নিজের edit সাথে সাথে দেখুক, অন্যরা একটু পরে দেখলেও চলবে। সবচেয়ে কম খরচে কোন বদলে এটা হবে?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো কারণে একটা RDS read replica-র replica lag সম্ভবত বাড়বে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS for PostgreSQL deployment-এর primary ব্যর্থ হলো। এর দুটো read replica আছে, Multi-AZ নেই। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS read replica promote করলে কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
Multi-AZ DB instance deployment-এর standby নিয়ে কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি একটা AZ-এ RDS for SQL Server database চালায়। ব্যবস্থাপনা চায়, একটা Availability Zone হারালে database নিজে থেকেই টিকে থাকুক, application-এর connection string-এ কোনো বদল ছাড়া। Solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
RDS Multi-AZ DB instance-এর automatic failover-এ সাধারণত কত সময় লাগে, আর Multi-AZ DB cluster-এ?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো ঘটনায় RDS Multi-AZ DB instance নিজে থেকে standby-তে failover করতে পারে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
EC2-তে চলা Java-তে লেখা একটা application প্রতিটা RDS Multi-AZ failover-এর পর অনেক মিনিট ধরে ব্যর্থ হতে থাকে, যদিও প্রায় দুই মিনিটেই database ফিরে আসে। Application restart করলে ঠিক হয়ে যায়। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি production RDS for MySQL instance-কে Single-AZ থেকে Multi-AZ-এ নিতে চায়। বদলটা apply করলে কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
একটা production RDS for MySQL Multi-AZ DB instance-কে db.m6g.large থেকে db.m6g.2xlarge-এ নিতে হবে। টিম কী প্রভাব আশা করবে?
নিজেকে যাচাই করোপ্রশ্ন
RDS-এর Multi-AZ DB cluster deployment-এর বর্ণনা কোন দুটো কথা?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS for PostgreSQL application-এর এক মিনিটের অনেক কম সময়ে failover চাই, আর বাড়তি read capacity চাই, আলাদা আলাদা replica endpoint না সামলে। কোন deployment সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS PostgreSQL database-এর জন্য DR কৌশল চাই, যাতে Region বিভ্রাটে database দ্রুত অন্য Region-এ read আর write সামলাতে পারে, আর DR database-কে highly available হতে হবে। কী সুপারিশ করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি Amazon Aurora MySQL চালায়, cross-Region disaster recovery চায়, RPO প্রায় এক সেকেন্ড আর RTO প্রায় এক মিনিট। কোন feature নেবে?
নিজেকে যাচাই করোপ্রশ্ন
Study note-এ লেখা: ‘RDS Multi-AZ = High Availability আর Disaster Recovery; read replica: ৫টা পর্যন্ত।’ সবচেয়ে সঠিক সংশোধন কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
us-east-1-এর একটা RDS database থেকে ইউরোপের user-দের জন্য read performance দরকার, আর খরচ যতটা সম্ভব কম রাখতে হবে। eu-west-1-এ একটা cross-Region read replica প্রস্তাব করা হলো। কোন কথাটা সঠিক?