معمارية النسخ الاحتياطي في Yaomy ERP: نظرة تقنية أعمق

مقدمة: لماذا تحتاج إلى فهم “كيف” يعمل النسخ الاحتياطي، لا مجرد “أنه موجود”؟

مقدمة: لماذا تحتاج إلى فهم “كيف” يعمل النسخ الاحتياطي، لا مجرد “أنه موجود”؟

في المقالة العامة عن النسخ الاحتياطي والاستعادة (id 522) شرحنا سياسة النسخ من منظور مديري التقنية وصناع القرار.

هذه الصفحة تتعمق أكثر في:

– كيف تُنفَّذ عمليات النسخ فعلياً في Yaomy ERP.

– ما هي المكوّنات الفنية التي تتعاون لتنفيذ نسخ احتياطية آمنة وقابلة للاستعادة.

هذه التفاصيل تهم بشكل خاص:

– مهندسي البنية التحتية.

– مسؤولي قواعد البيانات.

– فرق DevOps في الشركات المتوسطة والكبيرة في الخليج.

أولاً: المكوّنات الرئيسية لمعمارية النسخ

إطار النسخ الاحتياطي في Yaomy مبني حول مجموعة خدمات ووظائف متعاونة:

– BackupManager:

– العقل المركزي الذي ينسق عملية النسخ والرفع والاستعادة.

– BackupCompanyJob وBatchBackupJob:

– مهام الطوابير (Queue Jobs) المسؤولة عن تنفيذ النسخ الفعلي للشركات.

– ResourceMonitor:

– فحص الموارد (مساحة القرص، الذاكرة، الوقت) قبل وأثناء النسخ.

– BackupRateLimiter:

– التحكم في معدل تنفيذ عمليات النسخ لكل مستخدم وشركة.

– CompressionService:

– ضغط ملفات النسخ لتقليل الحجم وتسهيل النقل.

– BackupProgressService:

– تتبع تقدم العملية ومدة كل مرحلة.

ثانياً: مسار إنشاء نسخة احتياطية لشركة واحدة

عند بدء عملية إنشاء نسخة احتياطية لشركة معيّنة:

1) تهيئة العملية وتسجيلها

– يُنشئ BackupManager:

– سجل Backup في قاعدة بيانات النظام يحتوي على:

– company_id.

– نوع النسخة (كاملة/تزايدية).

– حالة البداية (processing).

– اسم ملف النسخة المتوقع.

– سجل Activity Log يوضح:

– أن عملية النسخ بدأت.

– من طلبها (إن كان مستخدماً معيناً).

2) فحص الموارد

– ResourceMonitor يفحص:

– مجلد التخزين (storage) للتأكد من توفر مساحة كافية.

– إعدادات الذاكرة والوقت الأقصى للتنفيذ.

– لو لم ينجح الفحص:

– تُلغى العملية برسالة واضحة.

– يُحدّث سجل النسخ إلى حالة failed مع رسالة خطأ.

3) إنشاء نسخة قاعدة البيانات (Dump)

– يستخدم BackupManager أداة mysqldump عبر SecureCommandBuilder:

– يبني أمراً آمناً يشمل:

– المعرف وكلمة المرور.

– اسم قاعدة بيانات الشركة.

– خيارات أداء (مثل استخدام خيارات محددة للـ mysqldump).

– يُكتب الناتج في ملف SQL على القرص:

– مع تسجيل مدة عملية الـ dump في BackupProgressService.

4) الضغط والتجزئة (Compression & Checksum)

– تُستخدم CompressionService:

– لضغط الملف (مثلاً gzip أو zstd) إلى ملف أصغر.

– يُحسب checksum (SHA-256) للملف المضغوط:

– للتأكد لاحقاً من أن الملف لم يُفسد أثناء النقل أو التخزين.

5) الرفع إلى مزود تخزين (اختياري)

– إن تم تحديد مزود تخزين خارجي:

– يستخدم BackupManager مشغلاً (Driver) ملائماً:

– لرفع الملف إلى مسار خاص بالشركة (مثل backups/company_42/…).

– يُسجل BackupStorageLog تفاصيل الرفع:

– المزود المستخدم.

– الحجم المنقول.

– زمن العملية.

6) إنهاء العملية وتسجيل النتيجة

– تُحدّث سجلات:

– Backup: بحالة completed، المسار النهائي، الحجم، checksum.

– Activity Log: بحالة completed، مدة التنفيذ، البيانات الأساسية عن النسخة.

ثالثاً: النسخ التزايدي (Incremental Backup)

لتحسين الأداء في قواعد البيانات الكبيرة:

– يمكن استخدام IncrementalBackupService:

– لتحديد الجداول/البيانات التي تغيّرت منذ آخر نسخة كاملة أو آخر نقطة مرجعية.

– يقوم BackupManager في هذه الحالة بـ:

– إنشاء Dump مخصَّص للجداول المتغيرة فقط.

– ربط النسخة التزايدية بنسخة سابقة (parent_backup_id).

النتيجة:

– تقليل:

– زمن تنفيذ النسخة.

– حجم الملفات الناتجة.

– مع الحفاظ على القدرة على:

– استعادة الحالة الكاملة عند دمج النسخة الكاملة مع التزايديات المتتابعة.

رابعاً: الاستعادة (Restore) من النسخ الاحتياطية

عند طلب استعادة نسخة احتياطية لشركة معيّنة:

1) استرجاع معلومات النسخة

– يُحدّد BackupManager:

– قاعدة بيانات الشركة الهدف.

– مسار ملف النسخة.

– ما إذا كانت النسخة مخزنة محلياً أم في مزود تخزين خارجي.

2) تنزيل الملف عند الحاجة

– إذا لم يكن الملف موجوداً محلياً:

– يتم تنزيله مؤقتاً من مزوّد التخزين إلى مجلد مؤقت آمن.

3) فك الضغط

– إذا كان الملف مضغوطاً (gz أو zst):

– يُفك إلى ملف SQL خام لاستعادة القاعدة.

4) تنفيذ الاستعادة على قاعدة بيانات الشركة

– يُستخدم mysql command عبر SecureCommandBuilder:

– لتحميل محتوى ملف الـ SQL في قاعدة بيانات الشركة.

– تُسجل العملية:

– في Activity Log مع:

– مدة الاستعادة.

– ما إذا تم تنزيل الملف من مزوّد تخزين خارجي.

5) تنظيف الملفات المؤقتة

– إزالة الملفات المؤقتة (المضغوطة أو المفكوكة):

– لتقليل استهلاك مساحة القرص.

خامساً: التحكم في معدل النسخ (BackupRateLimiter)

لتفادي الضغط على الخادم أو إساءة الاستخدام:

– BackupRateLimiter يراقب:

– عدد عمليات النسخ لكل مستخدم خلال نافذة زمنية (مثل دقيقة واحدة).

– عدد عمليات النسخ لكل شركة في نفس النافذة.

– لو تجاوزت العمليات الحدود المحددة:

– تُمنع العملية الجديدة.

– يُسجل تحذير في السجلات (Logs).

هذا يمنع:

– سيناريوهات تنفيذ عشرات النسخ في وقت قصير من موظف واحد عن طريق الخطأ.

– أو سكربتات خارجية تستهلك واجهة النسخ بشكل مفرط.

سادساً: ما الذي يهم مدير البنية التحتية عملياً؟

– القدرة على التنبؤ:

– تعرف تقريباً كم من الوقت ستستغرق نسخة معينة وكم من المساحة ستستهلك.

– القدرة على التحكم:

– الجدولة في أوقات منخفضة الأحمال.

– توزيع النسخ على خوادم أو أقراص مختلفة عند الحاجة.

– الشفافية:

– يمكن الرجوع لسجلات النسخ والاستعادة لمعرفة:

– متى تم إنشاء النسخة.

– من طلبها.

– إن كانت هناك أخطاء وآلية حلها.

دعوة لاتخاذ خطوة عملية (CTA)

لو كنت مهندس بنية تحتية أو مسؤول قواعد بيانات في شركة خليجية وتبحث عن فهم دقيق لكيفية عمل النسخ الاحتياطي في Yaomy ERP:

– استخدم هذه الصفحة كأساس لبناء:

– سياسة نسخ احتياطي داخلية مكتوبة.

– إجراءات تشغيل قياسية (Runbooks) لفِرقك في حالات الطوارئ.

– نسّق مع فريق يومي:

– لاختبار خطط استعادة فعلية (Recovery Drills) على بيئة تجريبية، لضمان جهوزية كاملة عند الحاجة.

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

– صفحة: النسخ الاحتياطي والاستعادة (Backup & Recovery) في Yaomy ERP (Cluster 15 – id 522).

– صفحة: أمان البيانات والصلاحيات في يومي ERP (Cluster 15 – id 521).

– صفحة: مراقبة الأداء والتنبيهات في Yaomy ERP (Cluster 15 – id 534).

– صفحة: الذاكرة المؤقتة (Caching) وتحسين أداء التقارير (Cluster 15 – id 532).

Scroll to Top