هل يستطيع تطبيق أعمالك إصلاح خطأ دون خسارة العمل الذي أُنجز بعده؟
قد يستطيع تطبيق الأعمال استعادة حالة قديمة لقاعدة البيانات دون أن يتيح إلغاء خطأ واحد بأمان داخل النظام الحالي. اسأل عن طريقة الاستعادة المهيأة فعلا، وما الذي تعيده، وكيف سيُحفظ العمل الصحيح الذي أُنجز لاحقا. عبارة «لدينا نسخ احتياطية» لا تجيب عن هذه الأسئلة.
تظهر أهمية ذلك عندما يُكتشف استيراد خاطئ أو حذف بعد أن يكون الموظفون قد واصلوا العمل. فحص حالة سابقة في بيئة منفصلة، وإصلاح بيانات محددة بإجراء مدروس، واستبدال قاعدة البيانات الحية بحالة أقدم ليست العملية نفسها. ولكل منها آثار وموافقة مختلفة.
ما الذي تعيده الاستعادة إلى نقطة زمنية؟
تشرح وثائق PostgreSQL عن الأرشفة المستمرة استخدام نسخة أساسية مع ملفات مؤرشفة لسجل الكتابة المسبقة، المعروف باسم WAL. تعيد عملية الاستعادة تطبيق التغييرات المسجلة، ويمكن إيقافها عند نقطة سابقة للحصول على حالة متسقة لقاعدة البيانات في ذلك الوقت. وجود هذه التقنية في الوثائق لا يثبت أن خطة الاستضافة تتضمنها أو أن أحدا أعدها لتطبيقك.
الحد المهم هنا أن الطريقة الموثقة تستعيد مجموعة قواعد البيانات كاملة، ولا تختار عميلا أو طلبا بعينه. تعني كلمة cluster في هذا السياق مجموعة قواعد PostgreSQL، لا مجموعة حواسيب المكتب. لذلك فإن إرجاع هذه الحالة في النظام الفعلي يختلف عن الضغط على زر تراجع في شاشة واحدة.
ولا تفترض أن كلمة «نسخة احتياطية» تشير إلى هذه الإمكانية تحديدا. توضح PostgreSQL أن النسخ المنطقية التي تنتجها أداتا pg_dump وpg_dumpall لا تصلح بوصفها النسخة الأساسية على مستوى نظام الملفات لهذا النوع من الأرشفة. اطلب تحديد طريقة الاستعادة المستخدمة بدلا من استنتاجها من امتداد ملف أو رمز أخضر بجانب مهمة النسخ.
طلب صحيح أُضيف لاحقا يغير القرار
لنأخذ مثالا افتراضيا. يغير استيراد خاطئ بيانات العملاء صباحا. وقبل اكتشافه، يسجل الفريق طلبا جديدا صحيحا ويرسل رسالة بشأنه. إرجاع قاعدة البيانات الحية كاملة إلى ما قبل الاستيراد يعيدها أيضا إلى ما قبل ذلك الطلب. لكنه لا يلغي الرسالة التي أُرسلت.
حدد مصير الأنشطة التي تقع بين نقطة الاستعادة المختارة ووقت معالجة الحادث. يشمل ذلك السجلات الجديدة والتعديلات والملفات المرفوعة والإجراءات لدى الخدمات المتصلة. اتساق قاعدة البيانات في وقت سابق لا يعني أن سير العمل الحالي خارجها يطابق تلك الحالة.
اسأل أولا عن إمكانية استعادة الحالة السابقة في بيئة معزولة للفحص، مع الحفاظ على الحالة الحالية. هذا إجراء تشغيلي مقترح، وليس وعدا تلقائيا ضمن ميزة قاعدة البيانات المذكورة. وإذا تقرر إصلاح سجلات محددة، فيجب مراجعة علاقاتها والتغييرات الأحدث قبل كتابة أي شيء في النظام الفعلي. نسخ صف عميل قديم فوق الصف الحالي ليس خطة إصلاح مكتملة.
إلى أي وقت تستطيع العودة فعلا؟
تحتاج طريقة PostgreSQL إلى تسلسل متصل من ملفات WAL المؤرشفة يمتد إلى بداية النسخة الأساسية على الأقل. وجود نسخة أساسية تبدو حديثة لا يثبت أن سلسلة السجل اللازمة متاحة.
اطلب توضيح أقدم وأحدث نقطتين يمكن للنظام المهيأ استعادتهما فعليا، وكيف يجري التحقق من ذلك، ومن يتصرف عند تعطل الأرشفة. افصل وقت حدوث الخطأ عن وقت اكتشافه. إذا خرج التاريخ المطلوب من نافذة الاستعادة المتاحة، يصبح الوعد بالعودة «إلى أي وقت» مضللا.
لا تضع رقما جذابا وموحدا بالدقائق في المواصفات. حدد مقدار فقد البيانات ومدة التوقف اللذين يمكن للنشاط تحملهما، ثم اطلب من المزود إثبات قدرة الترتيب المختار على تلبية ذلك. يجب أن يبقى الهدف التخطيطي منفصلا عن نتيجة تجربة فعلية في مستند التسليم.
لا تجعل نسخة الفحص تتصرف كنظام فعلي
من الضوابط المقترحة أن تكون بيئة التجربة خاصة ومعزولة عن إرسال البريد الحقيقي والمدفوعات وإجراءات الأتمتة الحية. استخدم بيانات مختلقة عند القبول، تتضمن تغييرا خاطئا سابقا وعملا صحيحا لاحقا. لا ينبغي أن تتواصل النسخة المستعادة مع العملاء لمجرد ظهور مهام قديمة معلقة.
اتفق على من يوافق على الانتقال الفعلي، وكيف تتوقف الكتابة مؤقتا عند الحاجة، وأي حالة حالية ستُحفظ أولا، وكيف سيُفحص التطبيق بعد الاستعادة. تحتاج الملفات المخزنة خارج قاعدة البيانات إلى قرار مستقل بشأن استعادتها وتوافق تاريخها مع البيانات. لا يدعي هذا الدليل أن استعادة PostgreSQL تعيد تلقائيا الملفات المرفوعة أو إعدادات الاستضافة أو معاملات الخدمات الأخرى.
ما الدليل الذي تقبله عند التسليم؟
اطلب سجلا مؤرخا للتجربة يبين النقطة الزمنية المختارة، وبيئة الاستعادة، وما عاد فعليا، وما حدث للعمل التجريبي اللاحق. يجب أن يشرح المطور غياب أي جزء من الأرشيف، أو تعذر الوصول إلى وقت معين، أو فشل الاستعادة، بدلا من استبدال النتيجة بصورة تؤكد نجاح النسخ الاحتياطي فقط.
اختبر نقطة سابقة محددة وافحص السجلات التجريبية المتأثرة. واطلب عرض المعالجة المتفق عليها للعمل الصحيح اللاحق والإجراءات الخارجية. وثق ما نوقش فقط وما جُرب بالفعل. أحضر هذا السيناريو إلى مناقشة مشروع تطبيق الويب. الالتزام المفيد هو إجراء استعادة محدد الحدود ومثبت بالتجربة، لا زر تراجع بلا حدود.