التعافي من الكوارث والترحيل
وش يعني RPO وRTO، وأربع استراتيجيات للتعافي من الكوارث وتكلفتها، والنسخ المركزي بـ AWS Backup، ونقل قواعد البيانات بـ DMS والسيرفرات بـ AWS Transform MGN، مع تجربة عملية تحذف فيها البيانات وترجعها.
- الفكرة الأساسية
- تعريف
- متى يُستخدم
- تنبيه
في هذا المقال
في الجزء السابع نجا تطبيقنا من فقدان منطقة توفر. بس لو الكارثة أكبر: منطقة كاملة طاحت، أو DELETE بالغلط، أو برنامج فدية؟ والنص الثاني من هذا الجزء: لو تطبيقك لسا مو على AWS، وتبي تجيبه؟
RPO وRTO
قبل أي قرار تقني، تحتاج رقمين من أصحاب العمل:
| الرقم | السؤال | مثال |
|---|---|---|
| RPO (Recovery Point Objective) | كم بيانات نقدر نخسر؟ | نسخة كل ساعة تعني خسارة حتى ساعة بيانات |
| RTO (Recovery Time Objective) | كم نقدر نبقى واقفين؟ | حتى أربع ساعات توقف |
كل ما صغر الرقمين، ارتفعت التكلفة. فالسؤال مو "وش الأفضل؟"، بل "كم تسوى ساعة التوقف عندنا؟"
أربع استراتيجيات
هذي للتعافي في منطقة ثانية، مرتبة من الأرخص للأغلى. والفرق بينها كم شي شغال هناك قبل الكارثة:
| الاستراتيجية | 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، أنشئ الجدول بطلب واحد:
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:
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
ابدأ النسخ، ثم انتظره. ولو جاك خطأ عن الدور، انتظر كم ثانية وأعد الأمر الأول. وهذا ياخذ عادةً كم دقيقة:
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)
الحين الكارثة. الطلب راح:
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 الحقيقي حقك:
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 حقك.
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.
تطبيقك الحين مبني ومحمي وقابل للتعافي. يبقى سؤال أخير: كم يكلف، وهل هو مصمم صح؟ في الجزء التاسع والعشرين نختم السلسلة بالتكلفة والتصميم الجيد.