النسخ الاحتياطي للخادم: قاعدة 3-2-1 وطريقة الاستعادة
تقول قاعدة 3-2-1: احتفظ بثلاث نسخ من بياناتك المهمة (الأصل ونسختان احتياطيتان)، على نوعين مختلفين من التخزين، مع نسخة واحدة على الأقل في مكان آخر. وعلى VPS يعني ذلك أن تكون لديك نسخة واحدة على الأقل خارج الخادم، إضافة إلى البيانات الموجودة على الخادم نفسه.
وتوصي بالقاعدة نفسها وثيقة Data Backup Options التي أُعدّت لـ US-CERT ونُشرت على موقع CISA. والغرض منها ألا يتمكن عطل واحد أو خطأ واحد أو هجوم واحد من إتلاف كل النسخ دفعة واحدة.
النسخة الاحتياطية واللقطة وتكرار الأقراص أشياء مختلفة
- النسخة الاحتياطية: نسخة منفصلة من بياناتك، وغالبًا مع إصدارات أقدم. تعيد لك ملفًا حُذف أو تلف بالخطأ.
- اللقطة: تسجّل حالة الخادم في تلك اللحظة. وهي مفيدة للرجوع سريعًا قبل تحديث كبير. لكنها تعتمد على القرص الأصلي، فلا تغني عن النسخة الاحتياطية.
- تكرار الأقراص: كتابة البيانات نفسها على قرصين في آن واحد. يحميك عند تعطل أحد القرصين. أما الملف الذي تحذفه فيُحذف من القرصين، والبيانات التي يشفّرها برنامج فدية تُشفَّر على القرصين. لذلك فهو ليس نسخة احتياطية.
كيف تطبّق 3-2-1 على VPS
| النسخة | المكان | الطريقة |
|---|---|---|
| البيانات الأصلية | قرص الخادم | نظامك العامل |
| نسخة اللوحة | تبويب الإدارة، النسخ الاحتياطية | تُؤخذ تلقائيًا كل ليلة وتُحفظ آخر 7 أيام. مشمولة في السعر. |
| نسخة خارج الخادم | حاسوبك الخاص أو خادم آخر أو تخزين كائنات | تعدّها بنفسك. مثال restic أدناه. |
يمكنك احتساب النسخة الاحتياطية اليومية للّوحة إحدى نسخك. لكن النسخة التي تحقق شرط "مكان آخر" هي التي تعدّها وتتحكم بها بنفسك. كما تطلب شروط الخدمة في Seturack أن تحتفظ بنسخة من بياناتك المهمة بشكل منفصل.
ما الذي تنسخه احتياطيًا
نسخ ملفات قاعدة بيانات تعمل قد يعطيك نسخة احتياطية غير متسقة. خذ تفريغًا (dump) أولًا. تعمل هذه الأوامر بصلاحيات root كما لو كانت في سكربت cron:
mysqldump --single-transaction --all-databases | gzip > /var/backups/mysql-$(date +%F).sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg-$(date +%F).sql.gz
أما الملفات فيكفي هذا: /etc وملفات موقعك ومجلد بيانات تطبيقك وأحجام Docker إن كنت تستخدمه وملفات .env. ولا تنسخ ما يمكنك تنزيله من جديد، كالحزم وصور Docker. وإذا كان لتطبيقك مفتاح تشفير فاحفظه منفصلًا أيضًا. ففي بعض التطبيقات لا فائدة من نسخة احتياطية بلا المفتاح.
يتوقف تكرار النسخ على مقدار البيانات الذي تتحمل خسارته. نسخة واحدة في اليوم تعني خسارة تصل إلى يوم من البيانات في أسوأ الأحوال. وفي تطبيق يسجّل الطلبات أو المدفوعات يكون الأسلم أن تفرّغ قاعدة البيانات كل ساعة وترسلها خارج الخادم.
نسخة احتياطية خارج الخادم باستخدام restic
restic أداة نسخ احتياطي مفتوحة المصدر تشفّر نسخك وتخزّن البيانات المتكررة مرة واحدة. يكتب المثال أدناه النسخة على خادم آخر عبر SFTP. يحتاج الهدف إلى دخول SSH بالمفتاح بلا كلمة مرور، لأن النسخ الآلي لا يستطيع الرد على طلب كلمة مرور. أنشئ ملف كلمة المرور (/root/.restic-password) في محرر نصوص ونفّذ عليه chmod 600.
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:[email protected]:/backups/vps
export RESTIC_PASSWORD_FILE=/root/.restic-password
restic init
restic backup /etc /var/www /var/backups
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
تحذّر وثائق restic من أنك إذا فقدت كلمة المرور ضاعت بياناتك إلى الأبد. فاحفظ كلمة المرور في مدير كلمات المرور أيضًا. ضع سطرَي export وتفريغات قواعد البيانات وrestic backup وrestic forget في سكربت مثل /usr/local/bin/backup.sh بهذا الترتيب، واجعله قابلًا للتنفيذ بالأمر chmod +x. ولا تنسَ إضافة سطر أخير يحذف التفريغات القديمة، find /var/backups -name '*.sql.gz' -mtime +2 -delete، وإلا امتلأ القرص بملفات التفريغ. ثم شغّل السكربت كل ليلة، مثلًا من /etc/cron.d/backup بهذا السطر:
30 3 * * * root /usr/local/bin/backup.sh
borg أداة مشابهة. ولنسخ الملفات العادية يمكنك استخدام rsync، ولإرسال البيانات إلى تخزين الكائنات يمكنك استخدام rclone.
الاختبار الحقيقي: الاستعادة
النسخة الاحتياطية التي لا تستطيع استعادتها لا قيمة لها. جرّب ذلك بعد الإعداد مباشرة، ثم على فترات منتظمة:
- مع restic، استخرج آخر نسخة إلى مجلد فارغ وتحقق من الملفات:
restic restore latest --target /tmp/restore-test - حمّل تفريغ قاعدة البيانات في قاعدة مؤقتة وانظر إلى الجداول.
- في اللوحة، انقر على أيقونة إنقاذ الملفات منها بجانب نسخة احتياطية، وتصفّح داخلها ونزّل ملفًا واحدًا. الاستعادة الكاملة تستبدل القرص الحالي بأكمله، لذا فإنقاذ ملف واحد هو الطريقة الأسلم للاختبار.
حدّد مدة الاحتفاظ بالنسخ بحسب أقصى تأخر قد تلاحظ فيه وجود مشكلة. تحتفظ نسخة اللوحة بآخر 7 أيام، ولا يمكنك الرجوع أبعد من ذلك. وإذا احتجت إلى إصدارات أقدم فاحتفظ بإصدارات أسبوعية وشهرية في نسختك الخاصة. ولتفاصيل نسخة اللوحة راجع مقالة النسخ الاحتياطية اليومية.
أخطاء شائعة
- كتابة النسخة الاحتياطية على قرص الخادم نفسه. إذا امتلأ القرص أو ضاع الخادم، ضاعت النسخة معه.
- حفظ كلمة مرور النسخة الاحتياطية أو مفتاحها في المكان نفسه الذي تُحفظ فيه النسخة.
- عدم الانتباه إلى أن السكربت يفشل. أضف إشعارًا إلى السكربت، أو تحقق من تاريخ آخر نسخة بين حين وآخر بالأمر
restic snapshots. - عدم مراقبة امتلاء وجهة النسخ. وجهة ممتلئة تعني نسخًا تفشل بصمت.
التعليقات0
لا توجد تعليقات بعد
كن أول من يشارك رأيه.
يرجى تسجيل الدخول أو إنشاء حساب لترك تعليق.