أنشئ تفريغًا متسقًا مع التطبيق وتحقق منه قبل السماح لبرنامج التحديث باستبدال حاويات قاعدة البيانات أو التطبيق.
هذا مهم في مكدس Compose غير المراقَب، حيث قد تُجري صورة جديدة عمليات ترحيل مخطط غير قابلة للعكس عند التشغيل الأول. تتمثل المخاطرة التشغيلية في أن تلتقط لقطة وحدة تخزين ملفات متسقة مع التعطل فقط، بينما يحتاج التطبيق إلى نقطة تراجع منطقية متوافقة مع الصورة القديمة. ابدأ بخط أساس محفوظ، وأجرِ تغييرًا واحدًا قابلًا للعكس في كل مرة، وتوقف كلما لم يعد الفرع المرصود يطابق مسار الإعداد المقصود.
إنشاء خط أساس لتفريغات قاعدة البيانات قبل التحديث
قبل تغيير الإعدادات، سجّل رمز خروج التفريغ، وحجم الإخراج، وعمر اختبار الاستعادة، وإصدار قاعدة البيانات، وبصمة الصورة، وحالة الترحيل. التقط الإعداد الأصلي وتشغيلًا واحدًا شبيهًا بالإنتاج حتى تُقارن التحسينات اللاحقة مع عبء العمل نفسه بدلًا من الاعتماد على الذاكرة أو حالة الخمول الاصطناعية.
استخدم سير عمل النسخ الاحتياطي لوحدة التخزين الحالي للتأكد من عنصر التحكم المدعوم ودلالاته. اعتبر القيم الافتراضية نقطة بداية معروفة، لا دليلًا على أن الإعداد يطابق هذا الخادم أو مزيج العملاء أو هدف الاستعادة.
حدّد شروط القبول والتوقف قبل التحرير. يجب أن تكون إشارة القبول مرئية في السجلات أو حالة البروتوكول أو مخرجات التطبيق أو البيانات المستعادة؛ ويجب أن يمنع شرط التوقف زيادة الوصول أو فقدان البيانات أو استنزاف الموارد أو انقطاعًا يستهلك نافذة الاستعادة التالية.
تطبيق تغيير تفريغات قاعدة البيانات قبل التحديث على مراحل مضبوطة
الخطوة 1: شغّل التفريغ الأصلي لقاعدة البيانات باستخدام حساب نسخ احتياطي بأقل الامتيازات، واكتب إلى اسم ملف مرحلي. بعد التغيير، افحص الحالة المتوقعة فورًا؛ وإذا لم تظهر، فتراجع عن هذه الخطوة قبل تطبيق الخطوة التالية.
الخطوة 2: تحقّق من التفريغ، وسجّل قيم التجزئة والإصدارات، ثم أعد تسميته ذريًا إلى مسار النسخ الاحتياطي المحمي. بعد التغيير، افحص الحالة المتوقعة فورًا؛ وإذا لم تظهر، فتراجع عن هذه الخطوة قبل تطبيق الخطوة التالية.
الخطوة 3: اجعل برنامج التحديث يعتمد على علامة نجاح حديثة، وأوقفه عند فشل التفريغ أو فحص المساحة الحرة أو خطوة الاحتفاظ. بعد التغيير، افحص الحالة المتوقعة فورًا؛ وإذا لم تظهر، فتراجع عن هذه الخطوة قبل تطبيق الخطوة التالية.
pg_dump --format=custom --file=/backup/app.tmp appdb
pg_restore --list /backup/app.tmp >/dev/null
mv /backup/app.tmp /backup/app.dump
تفسير فروع النجاح والفشل والاستثناء
يعني النجاح أن التفريغ يُستعاد في قاعدة بيانات معزولة ومطابقة، وأن التحديث لا يتقدم إلا بعد أن تكون العلامة حديثة. سجّل عبء العمل والإصدار والتوقيت الدقيق الذي أنتج النتيجة؛ فالاختبار الأخف ليس دليلًا على حل المشكلة الأصلية.
يعني الفشل أن التفريغ فارغ أو غير متسق أو قديم جدًا أو يتعذر فتحه بواسطة إصدار الاستعادة المختبَر. لا تعوّض عن ذلك بإضعاف كل عناصر التحكم المجاورة. عُد إلى آخر خط أساس سليم، واعزل ما إذا كان عدم التطابق يتعلق بالهوية أو الشبكة أو التخزين أو جاهزية التطبيق أو السعة.
في حالة وجود استثناء أو نتيجة ملتبسة، أوقف التحديث، وحافظ على وحدات التخزين الحالية وبصمة الصورة، ولا تُجرِ الاستعادة إلا في نسخة مستنسخة معزولة حتى معرفة السبب. صعّد الأمر فقط بعد أن يصبح المُميّز منخفض المخاطر قابلًا للتكرار وتُظهر الأدلة أن تغييرًا أعمق في المنصة أو العتاد ضروري.
التحقق من الاستمرارية تحت عبء خادم المنزل الأصلي
كرّر مسار العميل نفسه، وحجم الملف نفسه، والتزامن نفسه، وحدث السكون أو إعادة التشغيل نفسه، وعبء العمل المتنافس المستخدم في خط الأساس. أجرِ دورتين على الأقل حتى لا يُظن أن نجاحًا مع ذاكرة تخزين مؤقت دافئة أو إعادة اتصال محظوظة واحدة أو بدء تشغيل نظيفًا واحدًا دليل على الاستمرارية.
تحقق من النجاح والاحتواء معًا: تُستعاد النسخة إلى قاعدة بيانات معزولة ومطابقة، ولا يتقدم التحديث إلا بعد أن تكون العلامة حديثة، مع احتفاظ المستخدمين والخدمات والمشاركات والمسارات الإدارية غير المرتبطة بسلوكها الأصلي. راجع سير عمل ZimaSpace ذي الصلة عندما يمس التغيير حدود التخزين أو الشبكة أو الاستعادة المجاورة.
أغلق التغيير فقط عندما تستمر إشارة القبول ويظل التراجع قابلًا للاستخدام. إذا كان التفريغ فارغًا أو غير متسق أو قديمًا جدًا أو يتعذر فتحه بواسطة إصدار الاستعادة المختبَر، فأوقف الأتمتة، وحافظ على السجلات والإعداد المحفوظ، وعُد إلى آخر حالة تم التحقق منها بدلًا من تراكم مزيد من التغييرات.
الأسئلة الشائعة حول توزيع الاستعلامات، وقرار الإغلاق، والاختبار النهائي
تغطي أسئلة توزيع الاستعلامات هذه القرارات التالية التي يبحث عنها المستخدمون عادةً بعد نجاح الإعداد الرئيسي. وهي توسّع النطاق دون إدخال مسار إصلاح غير مختبَر.
طبّق كل إجابة فقط عندما يطابق شرطها البيئة المقاسة. قد تؤدي الاختلافات في الإصدار والبروتوكول ونظام الملفات والعميل وحدود الثقة إلى تغيير الفرع الصحيح.
احتفظ بالإجابات مع دليل التشغيل وحدّثها بعد الترقيات أو تغييرات البنية. يتطلب أي استثناء يوسّع صلاحية الكتابة أو إمكانية الوصول إلى الشبكة أو صلاحية الحذف اختبارًا جديدًا للتراجع والاستعادة.
هل تكفي لقطة لنظام الملفات لـ PostgreSQL أو MariaDB؟
فقط عندما توفر قاعدة البيانات وطريقة أخذ اللقطة صراحةً حدًا متسقًا للاستعادة. ويكون التفريغ المنطقي أسهل في الفحص والنقل.
هل ينبغي تشغيل التفريغ داخل حاوية قاعدة البيانات؟
يمكن ذلك، لكن اكتب النتيجة إلى تخزين محمي وثبّت إصدار العميل حتى لا تؤدي عملية استبدال الحاوية إلى إزالة النسخة الوحيدة.
ما الذي ينبغي أن يمنع التحديث؟
أي فشل في التحقق، أو انهيار غير متوقع في الحجم، أو غياب سجل الإصدار، أو تجاوز اختبار الاستعادة للفاصل الزمني المعتمد.
الخلاصة: يكتمل الإعداد عندما تُستعاد النسخة إلى قاعدة بيانات معزولة ومطابقة، ولا يتقدم التحديث إلا بعد أن تكون العلامة حديثة، ويكون فرع الفشل مفهومًا، ولا يعتمد التراجع الموثق على المكوّن الذي يجري تغييره.
بروتوكول الاختبار النهائي: استعد خط الأساس المحفوظ، وطبّق التغيير المعتمد مرة واحدة، وكرّر عبء العمل الأصلي الشبيه بالإنتاج، وتحقق من إشارة النجاح وحدود الاحتواء، ثم نفّذ التراجع باستخدام بيانات قابلة للتخلص منها. احتفظ بالتغيير فقط عندما تتفق الملاحظات الخمس جميعًا.
الدعم والنصائح
المزيد للقراءة

هل يمكن لمعرض مُستضاف ذاتيًا الحفاظ على اقتران الصور الحية من Apple؟
قرار مشروط للخادم المنزلي بشأن إقران Live Photo من Apple، مع اختبارات مضبوطة وتفسير للنتائج وإمكانية التراجع وأسئلة شائعة مركزة.

هل يمكنك استيراد Google Takeout ونسخ الهاتف الاحتياطية إلى مكتبة صور واحدة؟
قرار مشروط لخادم منزلي لاستيراد الصور الموحّد، مع اختبارات مضبوطة وتفسير للنتائج والتراجع وأسئلة شائعة مركّزة.

هل يستطيع Immich استخدام مكتبة خارجية دون تولّي ملكية الملفات؟
قرار مشروط لخادم منزلي بشأن ملكية المكتبة الخارجية في Immich، مع اختبارات مضبوطة وتفسير للنتائج وإمكانية التراجع وأسئلة شائعة مركزة.

