7.2
RDS Backup, Restore আর RDS Custom
automated backup আর point-in-time restore, snapshot, অনেকদিন রেখে দেওয়া, Blue/Green deployment আর RDS Custom।
24 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি পারবে
- RDS-এর automated backup কীভাবে কাজ করে (প্রতিদিন একটা snapshot আর প্রতি ৫ মিনিটে transaction log) সেটা বুঝিয়ে বলতে, আর retention period ও backup window ঠিক করতে।
- Point-in-time restore (PITR) দিয়ে database-কে নির্দিষ্ট একটা সেকেন্ডে ফিরিয়ে আনতে, latest restorable time কী সেটা জানতে, আর প্রতিটা restore কেন নতুন endpoint সহ নতুন instance বানায় তা ব্যাখ্যা করতে।
- Restore-এর পর application-কে আবার জুড়ে দিতে: Route 53 CNAME, config বদল, বা নাম বদলের কৌশল দিয়ে।
- Manual snapshot ব্যবহার করতে: রেখে দেওয়া, অন্য Region-এ copy, অন্য account-এ share (encrypted হলেও), আর instance delete করলে কী টিকে থাকে তা জানতে।
- Compliance-এর জন্য বছরের পর বছর backup রাখার ব্যবস্থা সাজাতে: নিয়ম করে snapshot, AWS Backup আর S3-এ export।
- খরচ বাঁচাতে instance stop করবে নাকি snapshot নিয়ে delete করবে সেটা ঠিক করতে, আর S3 থেকে MySQL database restore করতে।
- Blue/Green Deployment দিয়ে major upgrade চালাতে, আর switchover, guardrail ও rollback বুঝিয়ে বলতে।
- RDS, RDS Custom আর EC2-তে নিজের database, এই তিনের মধ্যে বেছে নিতে, আর RDS Custom instance নিরাপদে নিজের মতো বদলাতে।
#Backup নিয়ে আলাদা একটা লেসন কেন
লেসন ৭.১-এ দেখেছ Multi-AZ আর read replica কীভাবে database-কে চালু রাখে। কিন্তু database-এর সবচেয়ে সাধারণ বিপদ থেকে এগুলোর কোনোটাই বাঁচায় না: মানুষ বা bug নিজেই data নষ্ট করে ফেলা। একটা DROP TABLE, WHERE ছাড়া একটা UPDATE, ভুল করে production-এ চালানো একটা migration script: Multi-AZ এই ভুলটাই কয়েক millisecond-এ standby-তে কপি করে দেয়, read replica-ও একটু পরেই একই কাজ করে। Data ফেরাতে পারে শুধু ভুলের আগের একটা backup।
RDS দুই রকম backup দেয়, আর এই অংশের প্রায় সব পরীক্ষার প্রশ্ন এই দুইয়ের পার্থক্য নিয়েই:
| Automated backup | Manual snapshot | |
|---|---|---|
| কে শুরু করে | RDS নিজে, প্রতিদিন, backup window-তে | তুমি (console, CLI, script, AWS Backup) |
| ভেতরে কী থাকে | প্রতিদিনের storage snapshot আর transaction log | একটা মুহূর্তের একটা storage snapshot |
| কোথায় ফেরা যায় | Retention window-এর যেকোনো সেকেন্ডে (PITR) | ঠিক যে মুহূর্তে snapshot নেওয়া হয়েছিল, সেখানে |
| কতদিন থাকে | ০–৩৫ দিন (retention period) | যতদিন না তুমি মুছে দাও |
| Instance delete করলে | সাথে মুছে যায়, যদি না Retain automated backups বাছো (তখন retention শেষ হওয়া পর্যন্ত থাকে) | থেকে যায় |
| অন্য account-এ share | যায় না (আগে manual snapshot-এ copy করতে হয়) | যায় |
#Automated backup
#RDS প্রতিদিন কী করে
Automated backup চালু থাকলে RDS দুটো কাজ করে:
- Backup window-এর সময় পুরো DB instance-এর প্রতিদিন একটা snapshot। এটা storage volume-এর snapshot (লেসন ৫.১-এর সেই EBS snapshot প্রযুক্তি), তাই এক-একটা database না, পুরো instance-টাই backup হয়। প্রথমটা পুরো কপি; পরেরগুলো incremental, শুধু বদলানো block রাখে।
- Transaction log, প্রতি ৫ মিনিটে S3-এ তোলা হয়। Database যা কিছু বদলায়, সব তার transaction log-এ লেখে (MySQL-এ binlog, PostgreSQL-এ write-ahead log), আর RDS সেই log একটানা পাঠিয়ে রাখে।
শুধু snapshot দিয়ে তুমি বড়জোর ভোর ৩টায় ফিরতে পারো। বাকি ফাঁকটা পূরণ করে log: দুপুর ২:৩৭ আবার বানাতে RDS ভোর ৩টার snapshot থেকে শুরু করে, তারপর ২:৩৭:০০ পর্যন্ত log-এ লেখা প্রতিটা পরিবর্তন একটা একটা করে আবার চালায়, তারপর থামে। এটাই point-in-time recovery (PITR)।
#Retention period আর backup window
| Setting | মান |
|---|---|
| Retention period | ০ থেকে ৩৫ দিন। ০ দিলে automated backup বন্ধ (PITR একদমই থাকে না)। Default: console-এ ৭ দিন, আর CLI বা API দিয়ে instance বানিয়ে কিছু না দিলে ১ দিন। Multi-AZ DB cluster-এ ১–৩৫। |
| Backup window | প্রতিদিন কমপক্ষে ৩০ মিনিটের একটা সময়। তুমি না বাছলে RDS তোমার Region-এর জন্য ঠিক করা ৮ ঘণ্টার একটা ব্লক থেকে এলোমেলোভাবে ৩০ মিনিট বেছে নেয়। সাপ্তাহিক maintenance window-এর সাথে মিলে যেতে পারবে না। |
| Backup storage | S3-এ থাকে, RDS নিজে সামলায় (bucket তুমি দেখতেই পাও না)। Region-এ তোমার database-এর provisioned storage যত বড়, তত পর্যন্ত ফ্রি; তার বেশি হলে প্রতি GiB-মাস হিসেবে টাকা। |
কয়েকটা নিয়ম যেখানে অনেকে ধরা খায়:
- Retention ০ থেকে অন্য কিছু, বা অন্য কিছু থেকে ০ করলে outage হয়, কারণ RDS-কে পুরো backup ব্যবস্থা চালু বা বন্ধ করতে হয়। Read replica-র জন্য source-এ automated backup লাগে, তাই replica থাকলে ০ দেওয়া যায় না।
- Performance। Single-AZ instance-এ snapshot-এর সময় storage I/O অল্প সময়ের জন্য থেমে যেতে পারে (কয়েক সেকেন্ড, বড় আর ব্যস্ত volume-এ আরও বেশি), তাই window রাখো সবচেয়ে ফাঁকা সময়ে। Multi-AZ instance-এ backup নেওয়া হয় standby থেকে, ফলে primary-র গায়ে লাগে না (লেসন ৭.১)।
- Instance
availableথাকলেই কেবল backup চলে। Stop করা থাকলে automated backup হয় না, আর stop থাকার সময়টা retention-এর হিসাবে ধরা হয় না।
#Point-in-time restore আর latest restorable time
- Earliest restorable time (retention window-এর শুরু) থেকে latest restorable time পর্যন্ত যেকোনো সেকেন্ডে restore করা যায়।
- Latest restorable time সাধারণত শেষ ৫ মিনিটের মধ্যে থাকে, কারণ log এই হারেই S3-এ পৌঁছায়। Console-এ Automated backups-এর নিচে দেখা যায়, বা
describe-db-instances-এLatestRestorableTimeহিসেবে। - এখন যদি দুপুর ৩টা হয় আর শেষ upload ২:৫৫ পর্যন্ত ঢেকে থাকে, তাহলে ২:৫৮-তে restore চাইলে RDS না করে দেবে। ২:৫৫ বাছো।
কোন backup থেকে restore করব?
এখন আজ দুপুর ৩টা। Retention period ঠিক করো, তারপর marker টেনে (বা একটা ঘটনা বেছে) যে মুহূর্তে ফিরতে চাও সেখানে রাখো। নিচের প্যানেল বলবে RDS কোথা থেকে restore করবে।
Backup retention (দিন)
ঘটনা
Point-in-time restore। RDS শুরু করে আজ 03:00-এর daily snapshot থেকে, 11 h 37 min সময়ের transaction log চালায়, আর থামে আজ 14:37-এ। ফলাফল একটা নতুন instance, যেমন prod-db-1437, তার নিজের endpoint সহ: app সরাতে CNAME বদলাও বা নাম বদলের কৌশল নাও।
#Restore সবসময় নতুন instance বানায়
এই লেসনের সবচেয়ে জরুরি পরীক্ষার কথা এটাই: restore কখনো তোমার চালু database-এর ওপর লেখে না। Automated backup থেকে (PITR) হোক বা manual snapshot থেকে, RDS একটা একদম নতুন DB instance বানায়, যার identifier নতুন, তাই endpoint-ও নতুন, যেমন prod-db-1437.c9xyz0example.us-east-1.rds.amazonaws.com।
AWS এমন করে কেন? নিরাপত্তার জন্য। ভাবো, ভুল backup-টা চালু production database-এর ওপর restore করে দিলে: ওই backup-এর পর যা লেখা হয়েছে সব চিরদিনের মতো শেষ। নতুন instance হলে আসলটা চলতেই থাকে, পাশে restore করা কপিটাও পাও, দুটো মিলিয়ে দেখতে পারো, দরকারি row-গুলোই শুধু ফেরত আনতে পারো, আর নিশ্চিত হলে পুরনোটা মুছে দাও।
Restore কী দেয়, আর কী দেয় না:
- নতুন instance পায় default parameter group আর option group (CLI-তে নিজেরগুলোর নাম দিয়ে দিতে পারো), আর security group তুমি বেছে দাও। এগুলো মিলিয়ে নাও, নইলে app connect-ই করতে পারবে না।
- অন্য instance class বাছতে পারো, কিন্তু storage কমাতে পারবে না।
- নতুন volume S3 থেকে lazy load হয়: সাথে সাথে ব্যবহার করা যায়, কিন্তু প্রতিটা block প্রথমবার পড়তে একটু ধীর, যতক্ষণ না পুরোটা নামে (লেসন ৫.১-এ snapshot থেকে বানানো EBS volume-এর মতোই)।
- সময় লাগে: database-এর আকার আর কত log চালাতে হবে তার ওপর মিনিট থেকে ঘণ্টা। Point-in-time restore তাৎক্ষণিক undo বোতাম না। (Aurora-র সেরকম একটা আছে, Backtrack, লেসন ৭.৩-এ।)
#Restore করা database-এ application-কে নিয়ে যাওয়া
Restore করা instance-এর endpoint নতুন, আর তোমার web application সেটা জানে না। ঠিক করার তিনটা উপায়:
| উপায় | কীভাবে | Code বা config বদলাতে হয়? |
|---|---|---|
| Config বদলাও | প্রতিটা server-এ app-এর config file বা secret-এ নতুন endpoint বসাও, তারপর app restart করো | হ্যাঁ: সাধারণ, হাতে-করা পথ |
| Route 53 CNAME | App সবসময় তোমার নিজের একটা নামে connect করে, যেমন db.shop.example, যেটা RDS endpoint-এর CNAME। Restore-এর পর শুধু CNAME-এর মান বদলে নতুন endpoint দাও | না। পরীক্ষার উত্তর এটাই |
| Instance-এর নাম বদলাও | নষ্ট instance-এর নাম বদলে দাও (prod-db → prod-db-old), তারপর restore করা instance-এর নাম দাও prod-db। Endpoint identifier থেকেই তৈরি, তাই পুরনো endpoint এখন restore করা data-তে নিয়ে যায় | না, তবে নাম বদলের সময় অল্প একটু বন্ধ থাকে |
CNAME পদ্ধতিতে record-এর TTL ছোট রাখো (যেমন ৬০ সেকেন্ড), নইলে client-রা কিছুক্ষণ cache-এ থাকা পুরনো endpoint-এই যেতে থাকবে। Endpoint-টা AWS Systems Manager Parameter Store বা Secrets Manager-এ রেখে app চালু হওয়ার সময় সেখান থেকে পড়া, এটা একই বুদ্ধি, শুধু এক ধাপ ওপরে।
Point-in-time restore নতুন instance বানায়
prod-db প্রতিদিন ভোর ৩টায় একটা snapshot নেয়, আর প্রতি ৫ মিনিটে transaction log S3-এ পাঠায়। দুপুর ২:৩৮-এ কেউ orders table মুছে দিল। দেখো ২:৩৭-এ restore কীভাবে হয়, আর app নতুন database কীভাবে খুঁজে পায়।
পরিস্থিতি
সাধারণ একটা দিন। ভোর ৩টায় RDS পুরো instance-এর daily snapshot নিয়েছে; তারপর থেকে প্রতি ৫ মিনিটে transaction log S3-এ তুলে রাখছে। এই দুটো মিলে retention window-এর যেকোনো সেকেন্ড আবার বানানো যায়।
নিজেকে যাচাই করোপ্রশ্ন
একজন engineer একটা RDS for PostgreSQL instance-কে ৩০ মিনিট আগের একটা সময়ে restore করল। Restore শেষ হওয়ার পরও application নষ্ট data-ই দেখাচ্ছে। সবচেয়ে সম্ভাব্য কারণ কী?
#Manual snapshot
Manual snapshot (আরেক নাম DB snapshot) হলো যে snapshot তুমি নিজে চাও: console-এ, aws rds create-db-snapshot দিয়ে, কোনো script বা Lambda function থেকে, বা AWS Backup দিয়ে।
- তুমি না মোছা পর্যন্ত থাকে, retention-এ যা-ই দেওয়া থাকুক, আর instance delete করলেও টিকে থাকে।
- Restore হয় ঠিক যে মুহূর্তে নেওয়া হয়েছিল, সেখানে। Log নেই, তাই মাঝের কোনো সেকেন্ড বাছার সুযোগও নেই।
- Snapshot incremental (শুধু বদলানো block রাখে), তবু প্রতিটা আলাদাভাবে restore করা যায়।
- সীমা: default-এ প্রতি Region-এ ১০০টা manual snapshot (বাড়ানো যায়)। Automated backup এই হিসাবে পড়ে না।
- ঝুঁকির কাজের আগে (upgrade, বড় migration), instance delete করার আগে, আর যা কিছু ৩৫ দিনের বেশি রাখতে হবে, তার জন্য এটা ব্যবহার করো।
#Snapshot copy করা
copy-db-snapshot একটা snapshot থেকে নতুন snapshot বানায়:
- একই Region-এর ভেতরে: একটা automated snapshot-কে manual বানাতে (যাতে retention শেষ হলেও টিকে থাকে আর share করা যায়), বা encryption key বদলাতে।
- অন্য Region-এ: disaster recovery-র জন্য, বা অন্য Region-এ database চালু করতে। KMS key Region-এর ভেতরে আটকানো, তাই গন্তব্য Region-এর একটা key-এর নাম দাও, আর copy-টা সেটা দিয়ে নতুন করে encrypt হয়। কোনো Region-এ প্রথম copy পুরোটাই যায়; একই instance-এর পরের copy-গুলো incremental হতে পারে।
- Copy করার সময় unencrypted snapshot-কে encrypt করে নেওয়া যায়। চালু database encrypt করার এটাই সাধারণ পথ: snapshot, encrypted copy, restore (লেসন ৭.৪)।
#অন্য account-এর সাথে snapshot share করা
একটা manual snapshot সর্বোচ্চ ২০টা AWS account-এর সাথে share করা যায়, বা public করা যায় (শুধু unencrypted হলে, আর আসল data থাকলে কখনোই না)।
| Snapshot | Share করা যায়? | অন্য account কী করে |
|---|---|---|
| Automated | না | আগে manual snapshot-এ copy করো, তারপর copy-টা share করো |
| Manual, unencrypted | হ্যাঁ (বা public) | Shared snapshot-এর ARN দিয়ে সরাসরি restore করে |
Manual, AWS managed key aws/rds দিয়ে encrypted | না | ওই key-এর policy কেউ বদলাতে পারে না, তাই অন্য কোনো account কখনো decrypt করতে পারবে না। Snapshot copy করো, customer managed key দিয়ে নতুন করে encrypt করো, তারপর copy-টা share করো |
| Manual, customer managed key (প্রায়ই CMK বলে) দিয়ে encrypted | হ্যাঁ | Key policy-তে অন্য account-কে key ব্যবহারের অনুমতিও দাও। অন্য account snapshot-টা আগে copy করে (encrypted shared snapshot সরাসরি restore হয় না), তারপর copy থেকে restore করে |
Key policy-র খুঁটিনাটি লেসন ৭.৪-এ। আরও দুটো সীমা: যে snapshot-এর option group-এ permanent বা persistent option আছে (যেমন Oracle বা SQL Server-এর transparent data encryption), সেটা share করা যায় না; আর Multi-AZ DB cluster-এর snapshot-ও share হয় না।
#Instance delete করলে কী টিকে থাকে
DB instance delete করার সময় screen (বা CLI flag) তিনটা প্রশ্ন করে, আর এর উত্তরই ঠিক করে পরে কী restore করতে পারবে:
Deletion protection
Deletion protection চালু থাকলে delete call fail করে, যতক্ষণ না কেউ instance modify করে সেটা বন্ধ করে। প্রতিটা production database-এ এটা চালু রাখো: ভুল করে চালানো একটা
delete-db-instanceতখন দুই ধাপের একটা ইচ্ছাকৃত কাজ হয়ে যায়।Final snapshot নেবে?
Delete করার আগে RDS শেষ একটা manual snapshot নিতে পারে (
--final-db-snapshot-identifier)। অন্য যেকোনো manual snapshot-এর মতোই এটা থাকে যতদিন না তুমি মোছো। CLI-তে স্পষ্ট করে বলতেই হয়: হয় final snapshot-এর নাম, নয়--skip-final-snapshot।Automated backup রেখে দেবে?
Default-এ automated backup instance-এর সাথেই মুছে যায় (CLI-তে
--delete-automated-backupsdefault)। Retain automated backups (--no-delete-automated-backups) বাছলে সেগুলো একটা retained backup হিসেবে থেকে যায়: বাকি window-এর যেকোনো সেকেন্ডে এখনো restore করা যায়, কিন্তু retention period শেষ হলেই মেয়াদ ফুরায়, আর ততদিন তার storage-এর টাকা দিতে হয়।
| Delete-এর সময় যা বেছেছ | পরে কী restore করা যাবে |
|---|---|
| Final snapshot নিয়েছ, backup রাখোনি | Final snapshot (চিরকাল) আর আগের যেকোনো manual snapshot। PITR নেই। |
| Final snapshot নাওনি, backup রেখেছ | বাকি retention window-এর ভেতরে PITR, তারপর কিছুই না (আগের manual snapshot ছাড়া) |
| Final snapshot নাওনি, backup-ও রাখোনি | শুধু আগে নেওয়া manual snapshot। তার পরের সব হারিয়ে গেছে |
RDS instance delete করলে কী টিকে থাকে?
prod-db-এর ৭ দিনের automated backup আছে, আর আগের একটা manual snapshot আছে। Delete করার screen-এ তুমি কী বাছো, তার ওপর নির্ভর করে পরে কী restore করতে পারবে।
পরিস্থিতি
Project শেষ, কিন্তু database টা “যদি লাগে” ভেবে বছরের পর বছর রাখতে হবে। Admin prod-db delete করল আর final snapshot চাইল।
#Compliance-এর জন্য বছরের পর বছর রাখা
ব্যাংক, হাসপাতাল, শেয়ারবাজারে থাকা কোম্পানিকে প্রায়ই audit বা আইনের কারণে database backup ১ থেকে ৭ বছর রাখতে হয়। Automated backup দিয়ে এটা হয় না: তার সর্বোচ্চ retention ৩৫ দিন, তার পুরনোগুলো RDS নিজেই মুছে দেয়। তোমার হাতে যা আছে:
| উপায় | কীভাবে কাজ করে | কোথায় মানায় |
|---|---|---|
| Manual snapshot | না মোছা পর্যন্ত থাকে। একটা scheduled job (EventBridge Scheduler + Lambda) প্রতিদিন বা প্রতি মাসে একটা নিতে পারে আর পুরনোগুলো মুছতে পারে | কাজ করে, কিন্তু schedule আর মোছার ব্যবস্থা তোমাকেই বানাতে আর দেখতে হয়। ৩ বছর ধরে হাতে হাতে নেওয়া বাস্তবে সম্ভব না |
| AWS Backup (best practice) | একটা কেন্দ্রীয় backup service। একটা backup plan-এ লেখা থাকে “প্রতিদিন snapshot নাও, ৩ বছর রাখো, তারপর মুছে দাও”; চাইলে অন্য Region বা account-এ কপি পাঠায়, আর Vault Lock দিয়ে এমনভাবে আটকে রাখে যে কেউ, এমনকি administrator-ও, আগে মুছতে পারে না। RDS-এর জন্য continuous backup-ও দেয় (PITR, ৩৫ দিন পর্যন্ত) | বহু বছর রাখার প্রশ্নে পরীক্ষার উত্তর, আর অনেক service ও account জুড়ে এক নিয়ম চালাতে |
| S3-এ export | start-export-task snapshot-এর data Apache Parquet format-এ S3-এ লেখে, একটা KMS key দিয়ে encrypt করে; পুরো snapshot বা বাছাই করা database, schema বা table | Production database না ছুঁয়ে Athena বা Redshift Spectrum দিয়ে analytics, আর S3 lifecycle rule দিয়ে সস্তায় পুরনো data জমিয়ে রাখা। Export থেকে RDS instance restore করা যায় না |
#টাকা বাঁচানো: stop, নাকি snapshot নিয়ে delete?
যে database মাঝে মাঝে লাগে, সেটাও চালু থাকলে প্রতি ঘণ্টায় টাকা কাটে।
| Instance stop | Snapshot, delete, পরে restore | |
|---|---|---|
| যেটার টাকা বন্ধ হয় | Instance-এর ঘণ্টা | Instance-এর ঘণ্টা আর provisioned storage ও IOPS |
| যেটার টাকা তবুও দিতে হয় | Provisioned storage (আর Provisioned IOPS), backup storage, public IPv4 address থাকলে সেটা | শুধু snapshot storage (সাধারণত অনেক কম) |
| কতদিন | সর্বোচ্চ ৭ দিন: তারপর RDS নিজে থেকেই চালু করে দেয়, যাতে maintenance বাদ না পড়ে | যতদিন খুশি |
| ফিরে আসা | Start: কয়েক মিনিট। একই endpoint, একই setting | Restore: নতুন endpoint সহ নতুন instance (CNAME বা একই identifier ব্যবহার করো) |
| সীমা | যে instance-এর read replica আছে বা নিজেই read replica, আর Multi-AZ SQL Server, এগুলো stop করা যায় না | নেই |
তাহলে: এক রাত, এক weekend বা কয়েক দিনের জন্য stop করো। কয়েক সপ্তাহ বা মাস অলস থাকলে snapshot নিয়ে delete করো, দরকার হলে restore করো। (একটা scheduled job প্রতি ৭ দিনে আবার stop করে দিতে পারে, কিন্তু storage-এর টাকা তখনো কাটতে থাকে।) Slide-এ একেই “trick” বলা হয়েছে: stop করা database-ও storage-এর টাকা দেয়।
#Restore করার আরও উপায়
| কোথা থেকে restore | কথা |
|---|---|
| একটা snapshot (manual বা automated) | restore-db-instance-from-db-snapshot। নতুন instance, snapshot-এর ঠিক মুহূর্ত |
| একটা point in time | restore-db-instance-to-point-in-time। নতুন instance, window-এর যেকোনো সেকেন্ড। Delete হয়ে যাওয়া instance-এর retained backup থেকেও চলে |
| অন্য Region-এ replicate করা backup | Cross-Region automated backup replication snapshot আর transaction log, দুটোই তৈরি হওয়ার সাথে সাথে আরেকটা Region-এ কপি করে, ফলে DR Region-এ PITR করা যায়। RDS for MySQL, MariaDB, PostgreSQL, Oracle, SQL Server আর Db2-তে চলে (Multi-AZ DB cluster-এ না); default-এ প্রতি account-এ ২০টা পর্যন্ত |
| S3-এ রাখা backup file (MySQL) | On-premises (বা EC2-এর) MySQL-এর backup নাও Percona XtraBackup দিয়ে, file-গুলো S3-এ তোলো, তারপর restore-db-instance-from-s3 একটা নতুন RDS for MySQL instance বানায়। Bucket আর instance একই Region-এ; source MySQL 5.7, 8.0 বা 8.4; ৬৪ TiB পর্যন্ত। User account, function, stored procedure সব import হয় না, তাই আবার বানিয়ে নাও। Source বন্ধ রাখা না গেলে পরে binlog replication দিয়ে বাকিটা মিলিয়ে নাও |
| Native backup (SQL Server) | পাশের কথা: RDS for SQL Server, backup/restore option দিয়ে S3 থেকে native .bak file restore করতে পারে |
Slide-এ “S3 থেকে MySQL RDS restore” লেখা আছে tool-এর নাম ছাড়া, আর Percona XtraBackup-এর কথা আছে শুধু Aurora-র বেলায়। আসলে RDS for MySQL-এও এই কাজে Percona XtraBackup backup-ই লাগে; সাধারণ mysqldump file restore from S3 দিয়ে হয় না, সেটা একটা instance-এর ওপর চালিয়ে import করতে হয়। এই restore-এর Aurora সংস্করণ লেসন ৭.৩-এ।
#Blue/Green Deployment
Major version upgrade, বড় schema বদল, parameter বদল, production database-এ এগুলো ভয়ের কাজ: in-place major upgrade-এ database কিছুক্ষণ বন্ধ থাকে, আর নতুন version গোলমাল করলে তাড়াতাড়ি ফিরে আসার পথ থাকে না। Amazon RDS Blue/Green Deployment এর সমাধান করে একটা মিলিয়ে রাখা কপি দিয়ে:
বানাও
RDS পুরো production সাজসজ্জা (Multi-AZ, read replica, storage setting, monitoring) একটা green environment-এ কপি করে। বানানোর সময়ই green-এর engine version upgrade করতে আর নতুন parameter group দিতে পারো। Blue হলো production; green default-এ read-only।
মিলিয়ে রাখো
Blue-তে যা বদলায়, RDS সব green-এ পাঠায়। RDS for MySQL আর MariaDB ব্যবহার করে binlog replication, যেটা logical replication: change data capture (CDC)-এর একটা রূপ। RDS for PostgreSQL ব্যবহার করে physical replication, আর green যদি বড় major version-এ থাকে তাহলে logical replication।
পরীক্ষা করো
App-এর একটা test copy green-এর নিজের endpoint-এ লাগাও: query চালাও, গতি দেখো, schema বদল পরীক্ষা করো (পারলে green read-only রাখো, কারণ সেখানে লিখলে replication ভেঙে যেতে পারে)।
Switch over করো
RDS guardrail চালায়, দুই দিকেই write বন্ধ করে, connection কেটে দেয়, green সব পরিবর্তন পেয়ে যাওয়া পর্যন্ত অপেক্ষা করে, তারপর নাম আর endpoint অদলবদল করে: green হয়
prod-db, blue হয়prod-db-old1। Application-এ কিছুই বদলাতে হয় না। সাধারণত এক মিনিটের কম লাগে, কোনো data হারায় না।
জানার মতো খুঁটিনাটি:
- Guardrail switchover আটকে দেয় যদি replication ঠিক না থাকে, timeout-এর তুলনায় replica lag বেশি হয়, বা blue-তে লম্বা write বা DDL চলতে থাকে (আর PostgreSQL logical replication-এ, blue-তে DDL-এর মতো অসমর্থিত বদল হলে)। Guardrail আটকালে কিছুই বদলায় না।
- Switchover timeout: ৩০ থেকে ৩,৬০০ সেকেন্ড, default ৩০০। এর বেশি লাগলে সব আগের অবস্থায় ফেরত যায়, দুটো environment যেমন ছিল তেমনই থাকে।
- Switchover-এর আগে rollback সহজ: Blue/Green Deployment (আর green instance-গুলো) মুছে দাও। Production-এ কেউ হাতই দেয়নি।
- Switchover-এর পরে নিজে থেকে ফিরে যাওয়ার ব্যবস্থা নেই: দুইয়ের মধ্যে replication বন্ধ হয়ে যায়, আর পুরনো blue instance-গুলো থেকে যায় (read-only, বিল চলতে থাকে), যতক্ষণ না তুমি মোছো।
- Client-এর DNS cache ছোট রাখো (RDS ৫ সেকেন্ডের TTL ব্যবহার করে); RDS Proxy আর AWS-এর smart driver DNS-এর চেয়ে তাড়াতাড়ি switch টের পায়।
- কোন engine-এ চলে: RDS for MySQL, MariaDB আর PostgreSQL, সাথে Aurora MySQL আর Aurora PostgreSQL (লেসন ৭.৩)। RDS for Oracle, SQL Server বা Db2-তে না।
Major upgrade-এর জন্য Blue/Green Deployment
prod-db চলে MySQL 8.0-তে, যেতে হবে 8.4-এ। Blue হলো production; green হলো তার একটা সবসময় মিলিয়ে রাখা copy, যেখানে তুমি পরিবর্তনটা করে পরীক্ষা করো।
পরিস্থিতি
RDS blue-এর পুরো সাজসজ্জা (Multi-AZ, read replica, setting) green-এ কপি করে, আর green-কে 8.4-এ upgrade করে। Default-এ green read-only।
#RDS Custom
#সমস্যা: RDS তোমাকে server-এ ঢুকতে দেয় না
সাধারণ RDS তোমার database চালায় একটা AWS-এর নিজের account-এর EC2 instance-এ। তুমি পাও একটা database endpoint, আর কিছু না: SSH নেই, operating system-এ ঢোকার পথ নেই, root নেই, আর database-এর কিছু উঁচু ক্ষমতার procedure-ও বন্ধ। ঠিক এই কারণেই AWS তোমার হয়ে সব patch, backup আর মেরামত করতে পারে।
কিছু application এভাবে চলতে পারে না। কেনা ব্যবসায়িক software (accounting suite, ব্যাংকের core system) প্রায়ই চায় database server-এ vendor-এর একটা agent বসানো, নির্দিষ্ট একটা OS বা database patch, বিশেষ file system setting, বা এমন কোনো database feature যার জন্য RDS যে ক্ষমতা দেয় না সেটা লাগে। RDS Custom আসার আগে একটাই পথ ছিল: EC2 বা on-premises-এ নিজে database চালাও, আর সব administration নিজে করো।
#RDS Custom কী
Amazon RDS Custom একটা managed database service, শুধু Oracle আর Microsoft SQL Server-এর জন্য, যেটা নিচের operating system আর database-এ administrator-এর অধিকার দেয়:
- EC2 instance আর তার EBS volume থাকে তোমার নিজের account-এ। Connect করো SSM Session Manager বা SSH দিয়ে (Oracle), বা RDP দিয়ে (SQL Server)।
- RDS Custom তবুও setup, backup আর PITR, monitoring আর instance recovery নিজে চালায় (host খারাপ হলে reboot করে বা বদলে দেয়)।
- Software আর agent বসাতে পারো, নিজের patch লাগাতে পারো, setting বদলাতে পারো, native feature চালু করতে পারো।
- License: Oracle-এ নিজের license (BYOL), নিজের installation media সহ। SQL Server-এ license included, বা নিজের media আনা যায়।
#Automation pause করা
RDS Custom-এর automation host-এর ওপর নজর রাখে আর অপ্রত্যাশিত কিছু দেখলে “মেরামত” করে। ও নজর রাখার সময় তুমি file বা package বদলালে সে তোমার বদলটাকেই গোলমাল ভাবতে পারে। তাই নিয়ম হলো:
- আগে একটা DB snapshot নাও, যাতে ফিরে আসা যায়।
- Automation pause করো (
--automation-mode all-paused), default ৬০ মিনিট, সর্বোচ্চ ১,৪৪০ মিনিট (২৪ ঘণ্টা)। চলতি pause বাড়ানোও যায়। - Connect করো (Session Manager বা SSH/RDP) আর নিজের মতো বদলাও।
- Full automation আবার চালু করো (
--automation-mode full), বা pause-এর সময় ফুরালে নিজে থেকেই চালু হয়ে যাবে।
Slide-এ একে বলা হয়েছে “automation mode de-activate করা”; AWS বলে automation pause করা।
তোমার কোনো বদল যদি instance-কে RDS Custom যতটুকু সামলাতে পারে তার বাইরে (তার support perimeter-এর বাইরে) নিয়ে যায়, status হয়ে যায় unsupported-configuration, যতক্ষণ না তুমি নিজে ঠিক করো।
RDS Custom: host-এ নিজের মতো বদল
একটা packaged accounting application-এর জন্য Oracle database server-এ vendor-এর একটা agent বসাতে হবে। সাধারণ RDS এটা করতে দেয় না; RDS Custom দেয়।
পরিস্থিতি
ধাপ ১, কিছু ছোঁয়ার আগে: একটা DB snapshot নাও, যাতে বদলটা গোলমাল করলে restore করে ফিরে আসা যায়।
#Shared responsibility তোমার দিকে সরে আসে
| কাজ | EC2 (নিজে চালাও) | RDS Custom | সাধারণ RDS |
|---|---|---|---|
| Hardware, বিদ্যুৎ, network | AWS | AWS | AWS |
| OS installation | তুমি | ভাগাভাগি | AWS |
| OS patching | তুমি | তুমি (Oracle); default engine version-এ AWS (SQL Server) | AWS |
| Database software install আর patching | তুমি | ভাগাভাগি | AWS |
| Backup | তুমি | ভাগাভাগি (Oracle) / AWS (SQL Server) | AWS |
| High availability | তুমি | AWS-এর feature (সাজাও তুমি) | AWS |
| Scaling | তুমি | ভাগাভাগি | AWS |
| Application tuning | তুমি | তুমি | তুমি |
যত বেশি বদলাতে পারবে, তত বেশি ভাঙতেও পারবে: RDS Custom-এ তোমার বদলগুলো ঠিকঠাক চলছে কিনা, সেটা দেখা তোমারই কাজ।
#RDS, RDS Custom, নাকি EC2?
| বাছো | কখন |
|---|---|
| সাধারণ RDS | তুমি চাও পুরো database আর OS AWS সামলাক। যেকোনো engine (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Db2)। সাধারণত এটাই |
| RDS Custom | Oracle বা SQL Server, যার OS-এ ঢোকা, third-party agent, নিজের patch বা পুরনো কাস্টমাইজেশন লাগে, অথচ backup, PITR আর monitoring AWS-ই সামলাক এটাও চাও |
| EC2-তে database | তুমি পুরো নিয়ন্ত্রণ চাও আর পুরো দায়িত্ব নিতে রাজি; বা engine-টা RDS Custom-এ নেই (যেমন OS-লেভেলের প্রয়োজন সহ PostgreSQL), বা RDS-এ একদমই নেই |
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি একটা কেনা application চালায়, যার জন্য Microsoft SQL Server database host-এর operating system-এ vendor-এর একটা monitoring agent বসাতে হয়। কোম্পানি চায় automated backup আর point-in-time recovery AWS-ই সামলাক। সবচেয়ে কম operational ঝামেলায় কোন option চাহিদা মেটায়?
#System design-এ backup কোথায় বসে
- Backup হলো শেষ প্রতিরক্ষা। Multi-AZ hardware আর AZ বিপদ থেকে বাঁচায়, read replica read বাড়ায়, কিন্তু মানুষের ভুল আর data নষ্ট হওয়া ঠিক করতে পারে শুধু backup। তিনটাই ব্যবহার করো।
- আগে RPO আর RTO ঠিক করো। PITR দেয় মোটামুটি ৫ মিনিটের RPO; RTO হলো restore-এর সময় (database বড় হলে মিনিট থেকে ঘণ্টা) আর app সরানোর সময়। নিয়মিত restore করে দেখো আর সময় মাপো: যে backup কখনো পরীক্ষা করোনি, সেটা একটা আশা, পরিকল্পনা না।
- Database-এর সামনে নিজের একটা নাম রাখো (Route 53 CNAME বা একটা secret), যাতে restore বা migration মানে শুধু একটা record বদল।
- Production checklist: retention ৭–৩৫ দিন, backup window সবচেয়ে ফাঁকা সময়ে, deletion protection চালু, delete-এ final snapshot, snapshot কখনো share করতে হলে customer managed key দিয়ে encryption, DR-এর জন্য cross-Region copy বা automated backup replication, compliance-এর জন্য Vault Lock সহ AWS Backup।
- বদল Blue/Green দিয়ে: major upgrade আর ঝুঁকির parameter বদল in-place না করে Blue/Green Deployment দিয়ে করো।
- বিলের দিকে চোখ রাখো: database-এর আকারের বেশি backup storage, delete করা instance-এর retained backup, ভুলে যাওয়া manual snapshot, আর switchover-এর পর পড়ে থাকা পুরনো blue instance, সবকিছুরই টাকা লাগে।
#নিজে করে দেখো
DB=prod-db
# 1. Retention 14 days and a backup window at 03:00 UTC (applied now)
aws rds modify-db-instance --db-instance-identifier $DB \
--backup-retention-period 14 --preferred-backup-window 03:00-03:30 \
--deletion-protection --apply-immediately
# 2. See the PITR window
aws rds describe-db-instances --db-instance-identifier $DB \
--query "DBInstances[0].[BackupRetentionPeriod,LatestRestorableTime]"
aws rds describe-db-instance-automated-backups --db-instance-identifier $DB \
--query "DBInstanceAutomatedBackups[0].RestoreWindow"
# 3. Point-in-time restore to 14:37 into a NEW instance
aws rds restore-db-instance-to-point-in-time \
--source-db-instance-identifier $DB \
--target-db-instance-identifier prod-db-1437 \
--restore-time 2026-10-25T14:37:00Z \
--db-parameter-group-name prod-params --vpc-security-group-ids sg-0abc1234def567890
aws rds wait db-instance-available --db-instance-identifier prod-db-1437
# 4. Swing the CNAME the app uses to the new endpoint
NEW=$(aws rds describe-db-instances --db-instance-identifier prod-db-1437 \
--query "DBInstances[0].Endpoint.Address" --output text)
aws route53 change-resource-record-sets --hosted-zone-id Z0123456789EXAMPLE \
--change-batch "{\"Changes\":[{\"Action\":\"UPSERT\",\"ResourceRecordSet\":{\"Name\":\"db.shop.example\",\"Type\":\"CNAME\",\"TTL\":60,\"ResourceRecords\":[{\"Value\":\"$NEW\"}]}}]}"
# ...or the rename trick
aws rds modify-db-instance --db-instance-identifier prod-db --new-db-instance-identifier prod-db-old --apply-immediately
aws rds modify-db-instance --db-instance-identifier prod-db-1437 --new-db-instance-identifier prod-db --apply-immediately
# 5. Manual snapshot, copy to another Region, share with another account
aws rds create-db-snapshot --db-instance-identifier $DB --db-snapshot-identifier snap-0601
aws rds copy-db-snapshot --region eu-west-1 \
--source-db-snapshot-identifier arn:aws:rds:us-east-1:111122223333:snapshot:snap-0601 \
--target-db-snapshot-identifier snap-0601-dr --kms-key-id alias/rds-dr
aws rds modify-db-snapshot-attribute --db-snapshot-identifier snap-0601 \
--attribute-name restore --values-to-add 444455556666
# 6. Cross-Region automated backup replication (PITR in eu-west-1)
aws rds start-db-instance-automated-backups-replication --region eu-west-1 \
--source-db-instance-arn arn:aws:rds:us-east-1:111122223333:db:prod-db \
--backup-retention-period 7 --kms-key-id alias/rds-dr
# 7. Export a snapshot to S3 as Parquet for Athena
aws rds start-export-task --export-task-identifier snap-0601-export \
--source-arn arn:aws:rds:us-east-1:111122223333:snapshot:snap-0601 \
--s3-bucket-name shop-db-exports --iam-role-arn arn:aws:iam::111122223333:role/rds-s3-export \
--kms-key-id alias/exports
# 8. Delete safely: final snapshot, keep automated backups
aws rds modify-db-instance --db-instance-identifier old-db --no-deletion-protection --apply-immediately
aws rds delete-db-instance --db-instance-identifier old-db \
--final-db-snapshot-identifier old-db-final --no-delete-automated-backups
# 9. Stop a dev database (it starts again by itself after 7 days)
aws rds stop-db-instance --db-instance-identifier dev-db --db-snapshot-identifier dev-db-before-stop
# 10. Restore an on-premises MySQL backup made with Percona XtraBackup
xtrabackup --backup --user=admin --password=... --stream=xbstream \
--target-dir=/backup | split -d --bytes=500MB - /backup/full.xbstream
aws s3 cp /backup/ s3://shop-mysql-import/full/ --recursive
aws rds restore-db-instance-from-s3 --db-instance-identifier shop-mysql \
--db-instance-class db.m6g.large --engine mysql --allocated-storage 200 \
--master-username admin --manage-master-user-password \
--source-engine mysql --source-engine-version 8.0.36 \
--s3-bucket-name shop-mysql-import --s3-prefix full \
--s3-ingestion-role-arn arn:aws:iam::111122223333:role/rds-s3-import
# 11. Blue/Green: upgrade MySQL 8.0 -> 8.4, then switch over with a 10-minute timeout
aws rds create-blue-green-deployment --blue-green-deployment-name prod-84 \
--source arn:aws:rds:us-east-1:111122223333:db:prod-db \
--target-engine-version 8.4.6 --target-db-parameter-group-name prod-params-84
aws rds describe-blue-green-deployments --query "BlueGreenDeployments[].[BlueGreenDeploymentIdentifier,Status]"
aws rds switchover-blue-green-deployment \
--blue-green-deployment-identifier bgd-1234567890abcdef --switchover-timeout 600
# 12. RDS Custom: pause automation for 2 hours, connect, resume
aws rds modify-db-instance --db-instance-identifier erp-oracle \
--automation-mode all-paused --resume-full-automation-mode-minutes 120
aws ssm start-session --target i-0abc1234def567890
aws rds modify-db-instance --db-instance-identifier erp-oracle --automation-mode full
আর এই লেসন যে দুর্ঘটনা নিয়ে, সেটা SQL-এ। অন্য কিছু করার আগে সময়টা লিখে রাখো:
SELECT NOW(); -- 2026-10-25 14:38:12: the mistake happened just now
DROP TABLE orders; -- the mistake
-- Restore to 14:37:59 (step 3 above), then copy only the lost table back if production
-- has received new, good writes since:
-- mysqldump -h prod-db-1437... shop orders | mysql -h prod-db... shop
#সারসংক্ষেপ
মূল কথাগুলো
- Automated backup = backup window-এ প্রতিদিন একটা snapshot + প্রতি ৫ মিনিটে transaction log → window-এর যেকোনো সেকেন্ডে PITR, latest restorable time (মোটামুটি ৫ মিনিট আগে) পর্যন্ত।
- Retention ০–৩৫ দিন; ০ দিলে automated backup বন্ধ। Default ৭ দিন (console), ১ দিন (CLI/API)। Multi-AZ instance backup নেয় standby থেকে।
- প্রতিটা restore নতুন endpoint সহ নতুন instance বানায়। App-কে নিয়ে যাও config বদলে, Route 53 CNAME বদলে (code বদল ছাড়া), বা instance-এর নাম বদলে।
- Manual snapshot তুমি না মোছা পর্যন্ত থাকে, instance delete হলেও টেকে, আর ঠিক তার মুহূর্তেই restore হয়। অন্য Region-এ copy করো (গন্তব্যের key দিয়ে নতুন করে encrypt হয়), ২০টা account-এর সাথে share করো; automated snapshot আগে copy করতে হয়;
aws/rdsদিয়ে encrypted snapshot share হয় না, customer managed key লাগে। - Instance delete করলে automated backup মুছে যায়, যদি না retain করো (তবু retention শেষ হওয়া পর্যন্ত)। অনির্দিষ্টকাল রাখতে final snapshot নাও। Deletion protection চালু রাখো।
- ৩৫ দিনের বেশি compliance → AWS Backup plan (Vault Lock সহ) বা নিয়ম করে manual snapshot। S3-এ export (Parquet) analytics-এর জন্য, restore-এর জন্য না।
- Stop করা instance-ও storage-এর টাকা দেয় আর ৭ দিন পর নিজে চালু হয়ে যায়; অনেকদিন অলস থাকলে snapshot নিয়ে delete করো।
- আরও restore: cross-Region automated backup replication (অন্য Region-এ PITR) আর Percona XtraBackup দিয়ে S3 থেকে MySQL।
- Blue/Green Deployment (RDS MySQL, MariaDB, PostgreSQL): upgrade আর বদলের জন্য একটা মিলিয়ে রাখা green কপি, guardrail, switchover সাধারণত এক মিনিটের কম, timeout default ৩০০ সেকেন্ড আর পেরোলে নিজে থেকে rollback; পিছু হটতে green মুছে দাও।
- RDS Custom (শুধু Oracle আর SQL Server): Session Manager, SSH বা RDP দিয়ে OS আর database-এ ঢোকা যায়; snapshot, automation pause (default ৬০ মিনিট, সর্বোচ্চ ২৪ ঘণ্টা), বদল, resume; দায়িত্বের বেশি অংশ তোমার। অন্য engine-এ OS access লাগলে → EC2।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
Point-in-time recovery-র জন্য Amazon RDS একটা DB instance-এর transaction log কত পরপর Amazon S3-এ তোলে?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS DB instance-এ automated backup-এর retention period কত দেওয়া যায়, আর ০ মানে কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS DB snapshot restore করলে কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
RDS automated backup নিয়ে কোন দুটো কথা সত্য?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা team একটা RDS instance console-এ বানাল, আরেকটা AWS CLI দিয়ে, কোনোটাতেই backup retention period দিল না। Retention কত হলো?
নিজেকে যাচাই করোপ্রশ্ন
দুপুর ২:৩৮-এ একজন developer ভুল করে ৭ দিনের automated backup থাকা একটা production RDS for MySQL instance থেকে orders table মুছে ফেলল। কোম্পানি চায় যত কম সম্ভব data হারিয়ে table ফেরত আনতে। Solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
Point-in-time restore-এর পর কোম্পানি চায় application code বা configuration file না বদলে restore করা RDS instance ব্যবহার করুক। Application connect করে db.corp.example-এ। কী করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা আর্থিক প্রতিষ্ঠানকে নিয়ন্ত্রক সংস্থার জন্য তার RDS database-এর প্রতিদিনের backup ৩ বছর রাখতে হবে, সবচেয়ে কম পরিশ্রমে। Solutions architect কী সুপারিশ করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা project শেষ হচ্ছে, তার RDS database delete করা হবে। Legal team বলছে data-র শেষ অবস্থা অনির্দিষ্টকাল রাখতে হবে। কী করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
১৪ দিনের retention থাকা একটা RDS instance Retain automated backups বেছে delete করা হলো। Team পরে কী করতে পারবে?
নিজেকে যাচাই করোপ্রশ্ন
এখন বিকেল ৩:০০:০০। শেষ transaction log upload ২:৫৫:০০ পর্যন্ত পরিবর্তন ঢেকেছে। এই মুহূর্তে instance-কে সর্বশেষ কোন সময়ে restore করা যাবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS instance-এর retention ৭ দিন, আর ৩০ দিন আগে নেওয়া একটা manual snapshot আছে। চুপিচুপি data নষ্ট করা একটা bug শুরু হয়েছিল ৯ দিন আগে। কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
RDS manual snapshot নিয়ে কোন দুটো কথা সত্য?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি একটা encrypted manual RDS snapshot একটা partner account-এর সাথে share করতে গিয়ে error পেল। Snapshot-টা AWS managed key aws/rds দিয়ে encrypt করা। কী করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
একজন administrator একটা test account-কে production database-এর গত রাতের automated snapshot-এর একটা কপি দিতে চায়, কিন্তু console-এ কোনো Share option নেই। কেন, আর সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
প্রধান Region বিপদে পড়লে একটা কোম্পানি চায় তার RDS for PostgreSQL database-কে দ্বিতীয় একটা AWS Region-এ যেকোনো সময়ে restore করতে, নিজের copy script না বানিয়ে। কী সাজাতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
Analyst-রা production RDS for MySQL data-র গত মাসের অবস্থার ওপর Amazon Athena দিয়ে SQL query চালাতে চায়, production instance-এ চাপ না দিয়ে। সবচেয়ে সহজ সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা development RDS instance প্রতি তিন মাসে দুই সপ্তাহ ব্যবহার হয়, বাকি সময় অলস। Team এখন এটা stop করে রাখে, কিন্তু বারবার নিজে থেকে চালু হয়ে যায়। সবচেয়ে সাশ্রয়ী উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS DB instance stop থাকার সময় কোন দুটো খরচ চলতে থাকে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি ২ TB-র একটা on-premises MySQL 8.0 database backup file দিয়ে Amazon RDS for MySQL-এ নিতে চায়, কারণ physical backup logical dump-এর চেয়ে দ্রুত। কোন পথ কাজ করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানিকে RDS for PostgreSQL ১৫ থেকে ১৭-তে upgrade করতে হবে। সে আগে আসল production data-তে নতুন version পরীক্ষা করতে চায়, আর cut-over-এর downtime মোটামুটি এক মিনিটে রাখতে চায়, application-এর endpoint না বদলে। কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
একজন engineer Blue/Green switchover শুরু করল, কিন্তু RDS জানাল replica lag আর blue-তে একটা লম্বা DDL চলার কারণে switchover শুরু করা যাবে না। Environment-গুলোর অবস্থা কী?
নিজেকে যাচাই করোপ্রশ্ন
Aurora বাদে কোন দুটো engine Amazon RDS Blue/Green Deployment সমর্থন করে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
Blue/Green switchover-এর default timeout কত, আর switchover এর বেশি সময় নিলে কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
Amazon RDS Custom কোন কোন database engine সমর্থন করে?
নিজেকে যাচাই করোপ্রশ্ন
একটা পুরনো Oracle application-এর database server-এ vendor-এর একটা custom OS package আর একটা বিশেষ database patch লাগে। কোম্পানি এটাও চায় automated backup আর point-in-time recovery AWS সামলাক। Solutions architect কী বাছবে?
নিজেকে যাচাই করোপ্রশ্ন
একজন DBA একটা RDS Custom for SQL Server host-এ একটা agent বসাতে যাচ্ছে। প্রথমে কী করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
একটা RDS for PostgreSQL database-এ operating system পর্যায়ের একটা monitoring agent লাগবে, যেটা security team প্রতিটা database host-এ বাধ্যতামূলক করেছে। কোন option চাহিদা মেটায়?
নিজেকে যাচাই করোপ্রশ্ন
Amazon RDS Custom নিয়ে কোন দুটো কথা সত্য?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
পড়ার note-এ লেখা: ‘Automated backup-এর retention ১ থেকে ৩৫ দিন, আর database delete করলে তার automated backup মুছে যায়, manual snapshot থেকে যায়।’ আজকের দিনে সবচেয়ে সঠিক রূপ কোনটা?