هل يمكنك تشغيل تطبيق مستضاف ذاتيًا مع قاعدة بياناته على وحدة NAS منفصلة؟

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

نعم، عندما يتصل التطبيق بخدمة قاعدة بيانات عبر TCP؛ أما وضع ملفات قاعدة البيانات الخام على وحدة NAS عامة فهو تصميم مختلف وأكثر خطورة.

يصبح هذا سؤال توافق حقيقيًا عندما تعمل حاوية التطبيق على خادم منزلي بينما تعمل PostgreSQL أو MariaDB على مضيف آخر، أو عندما يُقترح وضع دليل بياناتها على NFS أو SMB. ابدأ بمسار أو حساب مؤقت، واحتفظ بالحالة السابقة العاملة متاحة، وقيّم التصميم وفقًا لحِمل العمل الأصلي بدلًا من اختبار اتصال لمرة واحدة.

افصل البنية المدعومة عن البنية المحفوفة بالمخاطر

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

تحدد متطلبات تخزين PostgreSQL حد التوافق الأول. استخدمها لتقييد الادعاء، ثم تحقّق من السلوك نفسه على هذا الخادم المنزلي المحدد بدلًا من اعتبار ميزة موثقة دليلًا على أن التصميم الكامل يعمل.

اكتب قاعدة القرار قبل الاختبار: يجب أن يحقق النجاح بقاء المعاملات المؤكدة دائمة، وإعادة اتصال التطبيق بصورة سليمة، واستعادة النسخ الاحتياطية على نسخة معزولة؛ ويشمل الفشل ظهور أخطاء fsync أو القفل، أو تعلّق الطلبات أثناء الانقطاع، أو إرجاع قاعدة البيانات حالة غير متسقة بعد إعادة الاتصال. يمنع ذلك إساءة تفسير اتصال جزئي أو خروج أمر بنجاح على أنه توافق شامل من البداية إلى النهاية.

أعد إنتاج مسار التخزين والشبكة الدقيق

استخدم عاملًا تمييزيًا واحدًا مضبوطًا: انشر خدمة قاعدة بيانات مؤقتة على مضيف NAS، وقِس زمن استجابة المعاملات، واقطع الشبكة، وتحقق من إعادة اتصال التطبيق ومن استرداد الأعطال. ثبّت العميل وحِمل العمل ومجموعة الملفات والحساب والتوقيت، بحيث يكون المكوّن المتغير هو التفسير المحتمل الوحيد.

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

كرّر الاختبار بعد حدث دورة الحياة المذكور في العنوان - إعادة الإنشاء أو إعادة الاتصال أو إعادة التحميل أو إعادة التشغيل أو التحويل عند الفشل أو تغيير العميل. لم ينجح التصميم إذا كان يعمل فقط ما دامت المقابس أو ذاكرات التخزين المؤقت أو بيانات الاعتماد القديمة ما تزال نشطة.

حلقة المعاملة -> انقطاع الشبكة -> إعادة الاتصال -> فحص الاتساق -> استعادة معزولة

فسّر نتائج الاستمرارية والمهلة والاسترداد

نجاح: تبقى المعاملات المؤكدة دائمة، ويعيد التطبيق الاتصال بصورة سليمة، وتُستعاد النسخ الاحتياطية على نسخة معزولة. احفظ الإصدارات والطوبولوجيا الدقيقة التي أنتجت هذه الحالة، لأن الاستنتاج ينطبق على تلك الظروف، لا على كل تطبيق للبروتوكول.

فشل: تظهر أخطاء fsync أو القفل، أو تتعطل الطلبات أثناء الانقطاع، أو تُرجع قاعدة البيانات حالة غير متسقة بعد إعادة الاتصال. افحص التبعيات المشتركة مثل DNS ووحدة النقل القصوى (MTU) والهوية وحالة الجدار الناري وزمن استجابة التخزين والجلسات المخزنة مؤقتًا قبل تحميل المسؤولية على أي من الفرعين الأساسيين.

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

أبقِ التصميم فقط بعد فحص بمستوى قابلية الاستعادة

طبّق الإجراء المطابق للفرع المرصود فقط، ثم أعد تشغيل حِمل العمل الأصلي. أبقِ التصميم فقط عندما تبقى المعاملات المؤكدة دائمة، ويعيد التطبيق الاتصال بصورة سليمة، وتُستعاد النسخ الاحتياطية على نسخة معزولة عبر دورتين ملائمتين من دورة الحياة وتحت الحمل المتزامن المتوقع.

استخدم سير عمل تفريغ قاعدة البيانات للتحقق من سير العمل التابع الأقرب. يجب أن تظل آلية الوصول والتوقيت والاسترداد فيه دون تغيير أثناء تشغيل التصميم الجديد.

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

قارن النتيجة مع سلوك مهلات NFS حتى لا تنتقل المخاطر فحسب إلى طبقة شبكة أو هوية أو نسخ احتياطي أو تخزين أخرى.

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

الأسئلة الشائعة

هل خادم PostgreSQL بعيد هو نفسه دليل بيانات مركّب عبر NFS؟

لا. صُمم بروتوكول PostgreSQL السلكي للعملاء البعيدين؛ أما ملفات بياناته فما زالت تحتاج إلى دلالات نظام ملفات مدعومة.

هل ينبغي أن تبقى النسخ الاحتياطية لقاعدة البيانات على NAS أيضًا؟

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

ما زمن الاستجابة الذي ينبغي قبوله؟

استخدم ميزانية المعاملات وزمن المهلة عند المئين 95 للتطبيق؛ فزمن استجابة ping المنخفض وحده لا يثبت أن زمن تأكيد المعاملة مقبول.

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.