الجزء 28 من سلسلة تعلّم AWS من الصفر

التعافي من الكوارث والترحيل

وش يعني RPO وRTO، وأربع استراتيجيات للتعافي من الكوارث وتكلفتها، والنسخ المركزي بـ AWS Backup، ونقل قواعد البيانات بـ DMS والسيرفرات بـ AWS Transform MGN، مع تجربة عملية تحذف فيها البيانات وترجعها.

في هذا المقال
  1. RPO وRTO
  2. أربع استراتيجيات
  3. AWS Backup: كل شي في مكان واحد
  4. ترحيل قواعد البيانات: DMS
  5. ترحيل السيرفرات ومراكز البيانات
  6. عملي: احذف البيانات ورجعها
  7. الخلاصة
  8. اختبر نفسك

في الجزء السابع نجا تطبيقنا من فقدان منطقة توفر. بس لو الكارثة أكبر: منطقة كاملة طاحت، أو DELETE بالغلط، أو برنامج فدية؟ والنص الثاني من هذا الجزء: لو تطبيقك لسا مو على AWS، وتبي تجيبه؟

RPO وRTO

قبل أي قرار تقني، تحتاج رقمين من أصحاب العمل:

RPO: البيانات اللي تضيع RTO: وقت التوقف آخر نسخة الكارثة رجعت الخدمة
RPO يطالع لورا من الكارثة إلى آخر نسخة سليمة، وRTO يطالع لقدام إلى رجوع الخدمة.
الرقم السؤال مثال
RPO (Recovery Point Objective) كم بيانات نقدر نخسر؟ نسخة كل ساعة تعني خسارة حتى ساعة بيانات
RTO (Recovery Time Objective) كم نقدر نبقى واقفين؟ حتى أربع ساعات توقف

كل ما صغر الرقمين، ارتفعت التكلفة. فالسؤال مو "وش الأفضل؟"، بل "كم تسوى ساعة التوقف عندنا؟"

أربع استراتيجيات

هذي للتعافي في منطقة ثانية، مرتبة من الأرخص للأغلى. والفرق بينها كم شي شغال هناك قبل الكارثة:

Backup البيانات نسخ احتياطية السيرفرات لا شي الزوار لا شي Pilot Light البيانات منسوخة السيرفرات واقفة الزوار لا شي Warm Standby البيانات منسوخة السيرفرات قليلة شغالة الزوار عند التحويل Multi-Site البيانات منسوخة السيرفرات بالحجم الكامل الزوار دايماً تكلفة أعلى، وبيانات ضايعة أقل، وتعافي أسرع
وش شغال في المنطقة الثانية قبل الكارثة: كل ما كان الجاهز أكثر، كان التعافي أسرع والتكلفة أعلى.
الاستراتيجية RPO تقريبي RTO تقريبي تناسب
Backup and Restore ساعات حتى 24 ساعة الأنظمة غير الحرجة
Pilot Light دقايق عشرات الدقايق البيانات الأساسية لازم تكون جاهزة دايماً
Warm Standby ثواني دقايق أنظمة مهمة بميزانية محدودة
Multi-Site (نشط نشط) قريب من الصفر قريب من الصفر لما دقيقة التوقف تكلف ثروة
  • Backup and Restore: نسخ تنتقل لمنطقة ثانية، وكل شي ينبني منها وقت الكارثة. والقوالب تساعد، زي ما بنشوف في الجزء الجاي.
  • Pilot Light: البيانات تتنسخ باستمرار، مثل Aurora Global Database أو نسخ S3، والسيرفرات جاهزة بس واقفة.
  • Warm Standby: نسخة كاملة صغيرة شغالة وتقدر تستقبل على طول، ثم تكبر بـ Auto Scaling.
  • Multi-Site: المنطقتين يخدمون المستخدمين طول الوقت، مثل Route 53 مع Global Tables.

نصائح تفرق

  • اختبر تعافيك. النسخة اللي ما رجعتها ولا مرة مجرد أمل. سوّ تدريبات، واستفد من AWS Fault Injection Service عشان تسبب أعطال متعمدة.
  • أتمت. ابن البيئة من قوالب، لأن وقت الكارثة ما أحد يتذكر الخطوات.
  • احمِ نسخك من نفسك. حطها في حساب ثاني ومنطقة ثانية، لأن المهاجم اللي يدخل حسابك بيبدأ فيها.
  • فكر في Elastic Disaster Recovery. AWS DRS ينسخ سيرفراتك باستمرار لتخزين رخيص، ويشغلها بس لما تحتاجها، بـ RPO ثواني وRTO دقايق.
  • راجع الحصص في منطقة الاحتياط. الحصص لكل منطقة، فالنسخة الصغيرة ممكن توصل حدها وقت ما تحتاج تكبر. ارفعها هناك قبلها من صفحة Service Quotas.

AWS Backup: كل شي في مكان واحد

كل خدمة لها نسخها، بس AWS Backup يديرها مركزياً، لـ EC2 وEBS وS3 وRDS وAurora وDynamoDB وEFS وFSx وغيرها:

الجزء وش يسوي
Backup Plan جدول ومدة حفظ، مثل يومي لـ 35 يوم، ثم انتقال لتخزين بارد
Vault مكان حفظ النسخ، مشفرة بـ KMS
الوسوم انسخ أي شي عليه backup=daily، فالموارد الجديدة تنضم لحالها
النسخ لمنطقة ثانية أو حساب ثاني، لحماية حقيقية من الكوارث
Vault Lock يمنع أي أحد، حتى Root في وضع Compliance، من حذف النسخ قبل انتهائها

وVault Lock أقوى دفاع عندك ضد برامج الفدية وضد اللي معه بيانات مدير مسروقة.

ترحيل قواعد البيانات: DMS

AWS DMS (Database Migration Service) ينقل قاعدة البيانات وهي مستخدمة: ينسخ البيانات الموجودة، ثم يستمر يرسل التغييرات (تعرف بـ CDC) لين تكون جاهز تحوّل.

النوع مثال الأدوات
نفس المحرك MySQL على سيرفر إلى RDS for MySQL DMS لحاله يكفي
محرك مختلف Oracle إلى Aurora PostgreSQL DMS Schema Conversion أو SCT لتحويل الجداول والكود أول، ثم DMS للبيانات

والمصادر والوجهات كثيرة، منها قواعد مكتبك وRDS وS3 وDynamoDB وRedshift وOpenSearch. ويقدر يشتغل بـ Multi-AZ مع نسخة احتياطية في منطقة ثانية، أو Serverless عشان ما تحتاج تحدد حجمه.

النقل إلى RDS أو Aurora

لو تنقل MySQL أو PostgreSQL، عندك طرق أبسط:

الطريقة التوقف متى
لقطة من RDS إلى Aurora نعم، وقت النقل التوقف مقبول
نسخة قراءة Aurora ثم ترقيتها قصير جداً من RDS بدون توقف حقيقي
نسخة من S3 نعم من خارج RDS: Percona XtraBackup لـ MySQL
DMS قصير جداً نسخ مستمر من أي مكان

ترحيل السيرفرات ومراكز البيانات

تبي استخدم
نقل السيرفرات زي ما هي (Lift and Shift) AWS Transform MGN
استيراد صورة جهاز افتراضي واحد VM Import/Export
نقل VMware زي ما هو Amazon Elastic VMware Service، أو VMware Cloud on AWS من Broadcom
مساعدة في تخطيط ترحيل كبير AWS Transform
نقل الملفات DataSync
وضع تطبيقات Java أو .NET في حاويات App2Container

AWS Transform MGN كان اسمه Application Migration Service لين 2026. وكيل على سيرفرك ينسخ أقراصه باستمرار إلى موارد AWS منخفضة التكلفة، وتجرب كم ما تبي، ثم تحوّل في دقايق. وغالباً هو أسرع طريق للخروج من مركز بيانات.

ولو عندك بيانات ضخمة، حسبناها في الجزء الثامن عشر.

عملي: احذف البيانات ورجعها

بنمثل كارثة صغيرة: جدول، ونسخة، وحذف بالغلط، ثم استعادة. من CloudShell، أنشئ الجدول بطلب واحد:

Bash
aws dynamodb create-table --table-name series-orders \
  --attribute-definitions AttributeName=id,AttributeType=S \
  --key-schema AttributeName=id,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST \
  --query TableDescription.TableStatus

aws dynamodb wait table-exists --table-name series-orders

aws dynamodb put-item --table-name series-orders \
  --item '{"id":{"S":"1001"},"total":{"N":"120"}}'

TABLE_ARN=$(aws dynamodb describe-table --table-name series-orders \
  --query Table.TableArn --output text)

AWS Backup يحتاج دور وVault:

Bash
cat > trust.json <<'EOF'
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"Service": "backup.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }]
}
EOF

ROLE_ARN=$(aws iam create-role --role-name series-backup-role \
  --assume-role-policy-document file://trust.json \
  --query Role.Arn --output text)

aws iam attach-role-policy --role-name series-backup-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
aws iam attach-role-policy --role-name series-backup-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores

aws backup create-backup-vault --backup-vault-name series-vault \
  --query BackupVaultName --output text

ابدأ النسخ، ثم انتظره. ولو جاك خطأ عن الدور، انتظر كم ثانية وأعد الأمر الأول. وهذا ياخذ عادةً كم دقيقة:

Bash
JOB=$(aws backup start-backup-job --backup-vault-name series-vault \
  --resource-arn $TABLE_ARN --iam-role-arn $ROLE_ARN \
  --query BackupJobId --output text)

while true; do
  STATE=$(aws backup describe-backup-job --backup-job-id $JOB \
    --query State --output text)
  echo $STATE
  case $STATE in COMPLETED|FAILED|ABORTED|EXPIRED) break ;; esac
  sleep 15
done

POINT=$(aws backup describe-backup-job --backup-job-id $JOB \
  --query RecoveryPointArn --output text)

الحين الكارثة. الطلب راح:

Bash
aws dynamodb delete-item --table-name series-orders \
  --key '{"id":{"S":"1001"}}'

aws dynamodb get-item --table-name series-orders \
  --key '{"id":{"S":"1001"}}'

الأمر الثاني ما يطبع شي. استعد النسخة إلى جدول جديد، ولاحظ الوقت اللي تاخذه، لأن هذا هو RTO الحقيقي حقك:

Bash
RESTORE=$(aws backup start-restore-job --recovery-point-arn $POINT \
  --iam-role-arn $ROLE_ARN \
  --metadata targetTableName=series-orders-restored,encryptionType=Default \
  --query RestoreJobId --output text)

while true; do
  STATE=$(aws backup describe-restore-job --restore-job-id $RESTORE \
    --query Status --output text)
  echo $STATE
  case $STATE in COMPLETED|FAILED|ABORTED) break ;; esac
  sleep 15
done

aws dynamodb get-item --table-name series-orders-restored \
  --key '{"id":{"S":"1001"}}' --query Item

الطلب رجع. وأي شي انكتب بعد النسخة ضاع، وهذا هو RPO حقك.

Bash
aws backup delete-recovery-point --backup-vault-name series-vault \
  --recovery-point-arn $POINT
aws backup delete-backup-vault --backup-vault-name series-vault

aws dynamodb delete-table --table-name series-orders \
  --query TableDescription.TableStatus
aws dynamodb delete-table --table-name series-orders-restored \
  --query TableDescription.TableStatus

aws iam detach-role-policy --role-name series-backup-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
aws iam detach-role-policy --role-name series-backup-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores
aws iam delete-role --role-name series-backup-role

الخلاصة

  • RPO البيانات اللي تخسرها، وRTO وقت توقفك، وأصحاب العمل يحددونهم.
  • الاستراتيجيات الأربع: النسخ، وPilot Light، وWarm Standby، وMulti-Site، والتكلفة ترتفع كل ما تحسنت.
  • AWS Backup يدير النسخ مركزياً، وVault Lock يحميها.
  • DMS ينقل قواعد البيانات وهي شغالة، وAWS Transform MGN ينقل السيرفرات.
  • اختبر تعافيك، وإلا ما عندك تعافي.

اختبر نفسك

قبل ما تكمل، جرّب هذي الأسئلة عشان تتأكد إنك فهمت الجزء. كل سؤال موقف عملي، وبعد ما تجاوب يطلع لك الشرح.

السؤال 1 من 6

شركة تاخذ نسخة احتياطية من قاعدتها كل ست ساعات، والاسترجاع الكامل ياخذ ساعتين. في أسوأ حالة، كم الـ RPO والـ RTO عندها؟

اعرض الجواب

الجواب الصحيح: D

الـ RPO هو البيانات اللي ممكن تخسرها، وهي حتى الست ساعات من آخر نسخة. والـ RTO هو وقت التوقف، وهو ساعتين الاسترجاع.

  • A: هذا يبدل الرقمين.
  • B: الرقمين يقيسون شيئين مختلفين، فما ينجمعون.
  • C: أي شي انكتب بعد آخر نسخة يضيع، فالـ RPO مو صفر.

للمراجعة: RPO وRTO في هذا الجزء، وBusiness Continuity Plan (BCP) في وثائق AWS.

السؤال 2 من 6

تطبيق لازم يرجع في Region ثانية خلال ساعة ويخسر دقايق من البيانات فقط، بأقل تكلفة تحقق هذا. أي استراتيجية تناسب؟

اعرض الجواب

الجواب الصحيح: B

Pilot Light يبقي البيانات تتنسخ باستمرار والسيرفرات جاهزة بس واقفة، وهذا يرجعك خلال عشرات الدقايق بتكلفة تشغيل قليلة.

  • A: الاسترجاع ممكن ياخذ حتى 24 ساعة، وبتخسر ساعات من البيانات.
  • C: هذا يحقق المطلوب كمان، بس بتدفع على نسخة كاملة شغالة طول الوقت.
  • D: هذا يحققه كمان، بأعلى تكلفة بفارق كبير.

للمراجعة: أربع استراتيجيات في هذا الجزء، وDisaster recovery options in the cloud في وثائق AWS.

السؤال 3 من 6

شركة خايفة من برامج الفدية: مهاجم معه بيانات مدير مسروقة ممكن يحذف نسخها الاحتياطية. أي خطوة تحميها أكثر؟

اعرض الجواب

الجواب الصحيح: A

في وضع Compliance ما أحد يقدر يحذف نسخة قبل انتهائها، ولا حتى المستخدم الجذر.

  • B: المدير يقدر يغير السياسة ببساطة.
  • C: النسخ المشفرة لسا ممكن تنحذف.
  • D: بتعرف عن الحذف، بس النسخ بتكون راحت.

للمراجعة: AWS Backup: كل شي في مكان واحد في هذا الجزء، وAWS Backup Vault Lock في وثائق AWS.

السؤال 4 من 6

شركة تبي تنقل 200 سيرفر من مركز بياناتها إلى AWS زي ما هي، وتختبرها هناك كل ما تبي، وتنتقل خلال دقايق. وش يناسب؟

اعرض الجواب

الجواب الصحيح: C

Agent على كل سيرفر ينسخ أقراصه باستمرار إلى AWS، فتقدر تختبر براحتك، ثم تنتقل خلال دقايق.

  • A: هذا ينقل قواعد البيانات، مو السيرفرات كاملة.
  • B: هذا ينقل الملفات.
  • D: هذا يستورد صور أجهزة افتراضية، بدون نسخ مستمر.

للمراجعة: ترحيل السيرفرات ومراكز البيانات في هذا الجزء، وWhat Is AWS Transform MGN? في وثائق AWS.

السؤال 5 من 6

شركة تنقل قاعدة Oracle مشغولة إلى Aurora PostgreSQL، بتوقف قليل جداً. أي أداتين تحتاج؟ (اختر اثنين.)

اعرض الجواب

الجواب الصحيح: C + E

المحركين مختلفين، فتتحول الجداول والكود أول. ثم DMS ينسخ البيانات ويستمر يرسل التغييرات لين تكون جاهز للانتقال.

  • A: هذا ينقل السيرفرات زي ما هي، فتبقى القاعدة على Oracle.
  • B: هذا ينقل الملفات، وما يقدر يبقي قاعدة شغالة متزامنة.
  • D: نسخ قراءة Aurora تجي من RDS for MySQL أو PostgreSQL، مو من Oracle.

للمراجعة: ترحيل قواعد البيانات: DMS في هذا الجزء، وWhat is AWS Database Migration Service? وConverting database schemas using DMS Schema Conversion في وثائق AWS.

السؤال 6 من 6

في تجربة تعافي، نسخة Warm Standby في منطقة ثانية بدأت تكبر، بس السيرفرات الجديدة فشلت بسبب حد في الحساب أقل هناك من المنطقة الرئيسية. وش يسوي الفريق؟

اعرض الجواب

الجواب الصحيح: A

الحصص لكل منطقة، فمنطقة الاحتياط لازم تكون حدودها كافية لسعة الإنتاج قبل الكارثة. وترفعها من صفحة Service Quotas.

  • B: هذا يشغّل أقل من كذا، وبيوصل لنفس الحد لما يكبر.
  • C: هذا يحمي البيانات، وما يغير الحد.
  • D: الحصص لكل منطقة، فهذا ما يفيد منطقة الاحتياط.

للمراجعة: نصائح تفرق في هذا الجزء، وDisaster recovery options in the cloud وWhat is Service Quotas? في وثائق AWS.

تطبيقك الحين مبني ومحمي وقابل للتعافي. يبقى سؤال أخير: كم يكلف، وهل هو مصمم صح؟ في الجزء التاسع والعشرين نختم السلسلة بالتكلفة والتصميم الجيد.