إنتقل إلى المحتوى الرئيسي

النسخ الاحتياطية لقاعدة البيانات

يتضمن FeedbackPulse نظام نسخ احتياطي مدمج (Admin → Backups) يتيح لك إنشاء وتنزيل وإدارة النسخ الاحتياطية لقاعدة البيانات مباشرةً من لوحة الإدارة.


🔧 كيف يعمل

يكتشف FeedbackPulse بيئة الاستضافة تلقائياً ويختار أفضل طريقة للنسخ الاحتياطي:

البيئةالطريقةالسرعة
VPS/خادم مخصص (exec متاح)أمر mysqldump ← gzipسريعة
Windows (Laragon/XAMPP)mysqldump ← PHP gzencodeسريعة
الاستضافة المشتركة (exec معطّل)تفريغ PHP/PDO النقي ← gzencodeمتوسطة

يتراجع النظام تلقائياً إلى الطريقة المستندة إلى PHP في حال كان exec() معطّلاً أو لم يُعثر على mysqldump. وهذا يعني أن النسخ الاحتياطية تعمل على جميع أنواع الاستضافة، بما في ذلك الاستضافة المشتركة حيث تكون أوامر الشل مقيّدة.


📋 الميزات

إنشاء نسخة احتياطية

انقر على Create Backup لإنشاء تفريغ جديد لقاعدة البيانات. يُحفظ الملف في storage/app/backups/ باسم ملف مختوم بالتاريخ والوقت.

تنزيل نسخة احتياطية

انقر على أيقونة التنزيل بجانب أي نسخة احتياطية لتنزيل ملف .sql.gz.

حذف نسخة احتياطية

انقر على أيقونة الحذف لإزالة ملف النسخة الاحتياطية. يؤثر هذا على ملف النسخة الاحتياطية فقط — ولا تتأثر قاعدة البيانات الحية بأي شكل.

قائمة النسخ الاحتياطية

تعرض جميع النسخ الاحتياطية الموجودة مع:

  • اسم الملف
  • حجم الملف
  • تاريخ الإنشاء
  • إجراءات التنزيل/الحذف

🔐 الأمان

  • تُخزَّن النسخ الاحتياطية داخل storage/app/backups/ (غير متاحة للعموم)
  • تُعالَج كلمات مرور قاعدة البيانات عبر ملفات .my.cnf مؤقتة تُحذف بعد الاستخدام
  • يمكن للمشرفين الرئيسيين (superadmins) فقط الوصول إلى ميزة النسخ الاحتياطي

💡 أفضل الممارسات

  1. إنشاء نسخ احتياطية منتظمة — قبل التحديثات والتغييرات الكبرى أو بشكل دوري
  2. تنزيل النسخ الاحتياطية — لا تكتفِ بحفظها على الخادم فقط
  3. اختبار الاستعادة — تحقق بصفة دورية من إمكانية استعادة النسخ الاحتياطية
  4. الأتمتة — قم بإعداد مهمة cron للنسخ الاحتياطي اليومي التلقائي عند الحاجة

النسخ الاحتياطي اليدوي عبر سطر الأوامر

cd /var/www/feedbackpulse-saas
mysqldump -u feedbackpulse -p feedbackpulse | gzip > storage/app/backups/manual_$(date +%Y%m%d).sql.gz

استعادة نسخة احتياطية

gunzip < storage/app/backups/backup_file.sql.gz | mysql -u feedbackpulse -p feedbackpulse

⏭️ الخطوات التالية