العودة إلى المقالات

خطة نسخ احتياطي لسيرفر يجمع VPN وتطبيقات وقواعد بيانات

خطة نسخ احتياطي لسيرفر VPN وتطبيقات وقواعد بيانات | مرام هوست - خطة نسخ احتياطي لسيرفر يجمع VPN وتطبيقات وقواعد بيانات

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

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

قبل الأدوات: حدّد رقمين

لا يمكن تصميم نسخ احتياطي دون قرارين تتخذهما إدارة العمل لا الفني وحده:

  • الخسارة المقبولة في البيانات (RPO): كم من آخر البيانات يمكنك تحمّل فقدانه؟ إن كان الجواب «لا شيء تقريباً» فالنسخ اليومي لا يكفي.
  • زمن العودة المقبول (RTO): كم ساعة يمكن أن تبقى الخدمة متوقفة؟ هذا يحدد هل تكفي نسخة بعيدة بطيئة أم تحتاج سيرفراً جاهزاً.

حدّد الرقمين لكل مكوّن على حدة. قد تتحمل تطبيقاً متوقفاً ساعة، لكن لا تتحمل ضياع يوم كامل من الفواتير.

لكل مكوّن طريقته

المكوّنماذا تنسخكيفالتكرار المقترح
VPNإعدادات النفق والمفاتيح وقواعد الجدارأرشيف مشفّربعد كل تغيير
التطبيقالكود في Git، وملفات الإعداد، والملفات المرفوعةGit مع نسخ تزايدي للملفات المرفوعةمع كل نشر، ويومياً للملفات
قاعدة البياناتنسخة متماسكة، وسجلات المعاملات عند الحاجةpg_dump أو mysqldump أو نسخ مستمريومياً على الأقل، وحسب RPO
الجهاز الافتراضي كاملاًالنظام والإعدادات وكل ما سبقمهمة نسخ في Proxmoxيومياً أو أسبوعياً
مخطط طبقات النسخ الاحتياطي لسيرفر يجمع VPN وتطبيقات وقاعدة بيانات وتجمعها نسخة خارج السيرفر
كل طبقة لها تكرارها الخاص، لكن لاحظ أنها جميعاً تصب في مكان واحد خارج السيرفر الأصلي

قاعدة البيانات: لا تنسخ ملفاتها وهي تعمل

نسخ مجلد البيانات أثناء تشغيل القاعدة قد ينتج نسخة غير متماسكة لا تعمل عند الاستعادة. استعمل أداة القاعدة نفسها. المثال التالي افتراضي، واسم القاعدة appdb:

# PostgreSQL: نسخة بصيغة مضغوطة قابلة للاستعادة الجزئية
pg_dump -Fc -f /backup/appdb-$(date +%F).dump appdb

# MySQL أو MariaDB: نسخة متماسكة لجداول InnoDB بلا قفل طويل
mysqldump --single-transaction appdb | gzip > /backup/appdb-$(date +%F).sql.gz

إن كان RPO أقصر من يوم، فالنسخ الدوري وحده لا يكفي، وتحتاج سجلات المعاملات المستمرة في PostgreSQL أو binlog في MySQL لتعود إلى لحظة قريبة من العطل.

VPN: صغير الحجم وخطير المحتوى

نسخة إعدادات النفق لا تتجاوز ملفات قليلة، لكنها تحوي مفاتيح خاصة. من يحصل عليها يستطيع انتحال سيرفرك، لذلك تُشفَّر قبل أن تغادر السيرفر:

tar -czf - /etc/wireguard | gpg --symmetric --cipher-algo AES256 \
  -o /backup/wg-$(date +%F).tar.gz.gpg

واحفظ عبارة فك التشفير في مكان منفصل عن النسخة، فالنسخة التي لا تستطيع فك تشفيرها لا قيمة لها.

مهمة النسخ في Proxmox

إن كانت المكوّنات تعمل في أجهزة أو حاويات على Proxmox، فمهمة نسخ مجدولة تغطي النظام كله. وضع Snapshot يأخذ النسخة والخدمة تعمل، لكنه لا يُغني عن pg_dump إن أردت استعادة جدول واحد.

نافذة إنشاء مهمة نسخ احتياطي في Proxmox وفيها التخزين والجدول والضغط ووضع Snapshot وقائمة الأجهزة
نافذة Create: Backup Job في مختبر Proxmox: اختر التخزين والموعد ووضع Snapshot، وحدّد بالضبط الأجهزة المشمولة من القائمة

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

قائمة مهام النسخ في Proxmox تعرض مهمة بموعد 02:30 وسياسة احتفاظ
مهمة مجدولة في المختبر عند 02:30، وعمود Retention يبدأ بـkeep-daily=7: أي الاحتفاظ بآخر سبع نسخ يومية

أين تحفظ النسخة؟

النسخة الموجودة على قرص السيرفر نفسه تحميك من حذف ملف بالخطأ، لكنها تضيع مع عطل القرص أو اختراق السيرفر. القاعدة المعروفة 3-2-1 بسيطة: ثلاث نسخ من البيانات، على نوعين من التخزين، وواحدة منها خارج المكان الأصلي.

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

ولا تنسَ أن زمن الاستعادة يعتمد على العتاد أيضاً، كما هو حال سرعة الخدمة نفسها. زمن الشبكة في العراق بين 70 و150ms وتوليد الصفحة بين 150ms وأكثر من ثانيتين، أي أن المسافة تكلّف عشرات الملّي ثانية والعتاد الضعيف يكلّف آلافاً. اسأل عن المعالج والتخزين لا عن المدينة وحدها، سواء للسيرفر الأساسي أو سيرفر النسخ.

الاختبار هو الخطة الحقيقية

النسخة التي لم تُستعد قط هي افتراض لا نسخة. نفّذ بروفة دورية تتبع هذا المسار:

ترتيب استعادة الخدمة: الشبكة والنفق ثم قاعدة البيانات ثم التطبيق ثم فحص نهائي
الترتيب مهم: لا فائدة من تشغيل التطبيق قبل قاعدة البيانات، ولا من أي منهما قبل وصولك إلى الشبكة
  1. أنشئ جهازاً معزولاً لا يصل إلى الإنتاج.
  2. استعد النسخة بالخطوات المكتوبة فقط، لا من الذاكرة.
  3. تحقق من البيانات: آخر سجل، وعدد الصفوف في الجداول المهمة، وفتح ملف مرفوع.
  4. سجّل الزمن الفعلي وقارنه بـRTO، ثم صحّح الوثيقة.

لمن تناسب هذه الخدمة؟

  • شركة تجمع خدماتها على سيرفر واحد وتريد خطة تعافٍ واضحة.
  • مزوّد إنترنت أو مكتب شبكات يعتمد على نفق الإدارة في عمله اليومي.
  • فريق تطوير يدير قواعد بيانات فيها بيانات مالية أو تشغيلية.

أخطاء شائعة

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

أسئلة شائعة

كم نسخة أحتفظ بها؟

يعتمد ذلك على بياناتك وعلى متى تكتشف الخطأ عادة. مزيج من نسخ يومية حديثة وأسبوعية وشهرية أقدم يغطي الأعطال الفورية والأخطاء التي تُكتشف متأخرة.

هل تؤثر النسخة على أداء الخدمة؟

نعم، فهي تقرأ كماً كبيراً من القرص. جدولها فجراً، وراقب عمليات القرص، ووزّع المهام على أوقات مختلفة.

هل تكفي نسخة الجهاز الكاملة وحدها؟

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

اجعل نسختك خارج السيرفر

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

Powered by WHMCompleteSolution