النسخ الاحتياطي هو شبكة الأمان الخاصة بك، وليس استراتيجية الترحيل الخاصة بك

قام فريقك للتو بتشغيل ترحيل قاعدة بيانات أدى إلى حذف جدول orders_archive. تم نقل البيانات إلى جدول جديد، لذا بدا كل شيء نظيفًا. لكن نظامًا قديمًا لم يتذكره أحد كان لا يزال يقرأ من ذلك الجدول. الآن الجدول اختفى، والبيانات اختفت، والترحيل الجديد لإعادة إنشائه ليس لديه ما يستعيده.

أو ربما قمت بتغيير عمود price من INTEGER إلى DECIMAL، ووظيفة دفعية تعمل كل ساعة لا تزال تكتب أعدادًا صحيحة في ذلك العمود، مما يؤدي إلى إتلاف السجلات بصمت.

في لحظات كهذه، يكون رد الفعل مفهومًا: "لدينا نسخ احتياطية. دعنا فقط نستعيد قاعدة البيانات إلى ما قبل الترحيل."

هذا يبدو معقولاً. لكن العواقب غالبًا ما تكون أسوأ من المشكلة الأصلية.

ما هي النسخ الاحتياطية في الواقع؟

النسخ الاحتياطية موجودة للسيناريوهات الكارثية. حريق في غرفة الخادم. فشل في مصفوفة تخزين. قرص تالف. مسؤول يحذف جدولًا مهمًا عن طريق الخطأ. في تلك الحالات، الاستعادة من النسخ الاحتياطي هي القرار الصحيح. ليس لديك خيار آخر، وتكلفة عدم الاستعادة هي فقدان كامل للبيانات.

لكن فشل الترحيل ليس كارثة. إنه حدث تشغيلي روتيني. ومعاملته ككارثة يخلق مشاكل جديدة.

المشكلتان في التراجع القائم على النسخ الاحتياطي

فقدان البيانات

النسخ الاحتياطي هو لقطة من بياناتك في نقطة زمنية محددة. إذا أخذت النسخ الاحتياطي في الساعة 2:00 صباحًا وفشل الترحيل في الساعة 10:00 صباحًا، فلديك ثماني ساعات من نشاط المستخدم موجودة فقط في قاعدة بيانات الإنتاج الخاصة بك. طلبات تم تقديمها. ملفات شخصية تم تحديثها. تذاكر دعم تم إنشاؤها. تغييرات في التكوين تم إجراؤها.

عند استعادة النسخ الاحتياطي للساعة 2:00 صباحًا، تختفي كل تلك البيانات. لا توجد طريقة لاستعادتها ما لم يكن لديك مصدر آخر. هذه الفجوة تكبر كلما زاد الوقت بين النسخ الاحتياطي والاستعادة. حتى إذا استخدمت الاستعادة إلى نقطة زمنية واستعدت إلى الساعة 9:59 صباحًا، فستظل تفقد كل ما حدث في تلك الدقيقة الأخيرة.

التوقف

استعادة قاعدة البيانات ليست فورية. بالنسبة لقواعد البيانات في نطاق مئات الجيجابايت، يمكن أن تستغرق الاستعادة ساعات. خلال ذلك الوقت، لا يمكن لتطبيقك خدمة الزيارات بشكل طبيعي. البيانات غير متناسقة، أو محملة جزئيًا، أو مقفلة بواسطة عملية الاستعادة.

قارن ذلك بنهج الترحيل الأمامي، حيث تقوم بتشغيل ترحيل جديد يستغرق دقائق. أو برنامج نصي تعويضي يضبط البيانات دون إيقاف التطبيق. التراجع القائم على النسخ الاحتياطي يجبر فريقك على الاختيار بين فقدان البيانات والتوقف المطول، وغالبًا كلاهما.

الاستعادة إلى نقطة زمنية تقلل ولكن لا تحل

تستخدم بعض الفرق الاستعادة إلى نقطة زمنية (PITR) لتقليل فجوة البيانات. بدلاً من الاستعادة إلى آخر نسخ احتياطي كامل، يستعيدون إلى موضع سجل معاملة محدد، مثل دقيقة واحدة قبل تشغيل الترحيل.

هذا يساعد. تفقد بيانات أقل. لكنك لا تزال تفقد بعضًا منها. المعاملات التي اكتملت في الثواني التي سبقت الترحيل تختفي. والاستعادة نفسها لا تزال تستغرق وقتًا. PITR أفضل من استعادة النسخ الاحتياطي الكامل، لكنها ليست آلية تراجع نظيفة.

أين ينتمي النسخ الاحتياطي في هرم الاسترداد الخاص بك

للنسخ الاحتياطي دور واضح في استرداد قاعدة البيانات: إنه الملاذ الأخير. شبكة الأمان عندما يفشل كل شيء آخر وتكون مستعدًا لقبول فقدان البيانات والتوقف لأن البديل أسوأ.

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

يلخص المخطط الانسيابي التالي عملية اتخاذ القرار هذه:

flowchart TD A[فشل الترحيل] --> B{هل يمكنك الترحيل للأمام؟} B -- نعم --> C[كتابة ترحيل جديد أو برنامج نصي تعويضي] B -- لا --> D{هل الترحيل للخلف آمن؟} D -- نعم --> E[تشغيل الترحيل للخلف للعودة] D -- لا --> F[النظر في استعادة النسخ الاحتياطي] F --> G[⚠️ فقدان البيانات والتوقف متوقع]
  1. الترحيل الأمامي: كتابة ترحيل جديد يعكس التغيير أو يضيف الجزء المفقود.
  2. البرنامج النصي التعويضي: تشغيل برنامج نصي يضبط البيانات دون ترحيل كامل.
  3. استعادة النسخ الاحتياطي: فقط بعد تقييم مفاضلات فقدان البيانات والتوقف.

قائمة تحقق عملية قبل اللجوء إلى النسخ الاحتياطي

قبل الاستعادة من النسخ الاحتياطي، اطرح هذه الأسئلة:

  • هل يمكننا كتابة ترحيل يضيف الجدول أو العمود المحذوف؟
  • هل يمكننا تشغيل برنامج نصي تعويضي يعيد بناء البيانات المفقودة من السجلات أو مصادر أخرى؟
  • ما مقدار البيانات التي سنفقدها إذا استعدنا من آخر نسخ احتياطي؟
  • كم من الوقت ستستغرق الاستعادة، وهل يمكن للعمل قبول ذلك التوقف؟
  • هل هناك طريقة لإبقاء التطبيق يعمل جزئيًا أثناء إصلاح البيانات؟

إذا كانت الإجابة على أول سؤالين هي "نعم"، فلن تحتاج إلى استعادة نسخ احتياطي. إذا كانت الإجابة على الأسئلة الثلاثة الأخيرة هي "غير مقبول"، فأنت بحاجة إلى إيجاد طريقة أخرى.

الخلاصة

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