نسخة احتياطية أخرى - أكثر من مجرد نص ، أسهل من نظام

هناك العديد من أنظمة النسخ الاحتياطي ، ولكن ماذا لو كانت الخوادم المخدومة منتشرة عبر مناطق وعملاء مختلفين وتحتاج إلى الإدارة باستخدام وسائل نظام التشغيل؟







مساء الخير يا حبر !

اسمي ناتاليا. أنا رئيس فريق مجموعة مسؤولي التطبيق في NPO Krista. نحن عمليات لمجموعة مشاريع شركتنا. لدينا موقف غريب نوعًا ما: نقوم بتثبيت برامجنا وصيانتها على خوادم شركتنا وعلى الخوادم الموجودة في أماكن عمل العملاء. في هذه الحالة ، ليست هناك حاجة لعمل نسخة احتياطية من الخادم بأكمله. فقط "البيانات الأساسية" مهمة: نظام إدارة قواعد البيانات (DBMS) والأدلة الفردية لنظام الملفات. بالطبع ، لدى العملاء (أو ليس لديهم) لوائح النسخ الاحتياطي الخاصة بهم وغالبًا ما يوفرون نوعًا من التخزين الخارجي لتخزين النسخ الاحتياطية هناك. في هذه الحالة ، بعد إنشاء نسخة احتياطية ، نوفر الإرسال إلى وحدة التخزين الخارجية.



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



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



بدا لنا أنه كان من الأسهل كتابة شيء خاص بنا. في الوقت نفسه ، كنت أرغب في الحصول على شيء يكون كافيًا لوضعنا في السنوات N القادمة ، ولكن مع إمكانية توسيع النطاق المحتمل.



كانت ظروف المشكلة كما يلي:



  1. مثيل النسخ الاحتياطي الأساسي مستقل ويعمل محليًا
  2. تخزين النسخ الاحتياطية والسجلات دائمًا داخل شبكة العميل
  3. – «»
  4. Linux, ,
  5. ssh,
  6. ( ) ,


يمكنك ان ترى ما وصلنا إلى هنا: github.com/javister/krista-backup و

يتم كتابة البرنامج في python3. يعمل على Debian و Ubuntu و CentOS و AstraLinux 1.6.



الوثائق متاحة في دليل docs للمستودع.



المفاهيم الأساسية التي يستخدمها النظام:

الإجراء - إجراء ينفذ عملية ذرية واحدة (نسخ احتياطي لقاعدة البيانات ، نسخ احتياطي للدليل ، نقل من الدليل A إلى الدليل B ، إلخ). توجد الإجراءات الحالية في

مهمة الدليل الأساسية / الإجراءات - مهمة ، مجموعة من الإجراءات تصف

جدولًا منطقيًا "لمهمة النسخ الاحتياطي" - جدول زمني ، مجموعة مهام مع إشارة اختيارية لوقت تنفيذ المهمة ،



يتم تخزين تكوين النسخ الاحتياطي في ملف yaml ؛ هيكل التكوين العام:



  • الاعدادات العامة
  • إجراءات القسم: وصف الإجراءات المستخدمة على هذا الخادم
  • قسم الجدول الزمني: وصف لجميع المهام (مجموعات الإجراءات) والجدول الزمني لإطلاقها بواسطة التاج ، إذا كان هذا الإطلاق مطلوبًا


يمكن العثور على مثال للتكوين هنا



ما يمكن للتطبيق القيام به في الوقت الحالي:



  • العمليات الرئيسية لنا مدعومة: النسخ الاحتياطي لـ PostgreSQL عبر pg_dump ، النسخ الاحتياطي لدليل نظام الملفات عبر tar ؛ عمليات مع التخزين الخارجي ؛ rsync بين الدلائل ؛ تدوير النسخ الاحتياطية (حذف النسخ القديمة)
  • استدعاء نص خارجي
  • التنفيذ اليدوي لمهمة واحدة



    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • يمكنك إضافة (أو إزالة) مهمة منفصلة أو الجدول بأكمله في crontab



    /opt/KristaBackup/KristaBackup.py enable all
  • إنشاء ملف مشغل بناءً على نتائج النسخ الاحتياطي. هذه الميزة مفيدة مع Zabbix لمراقبة النسخ الاحتياطية
  • يمكن أن تعمل في الخلفية في webapi أو وضع الويب



    /opt/KristaBackup/KristaBackup.py web start [--api]


الفرق بين الأوضاع: لا يحتوي webapi على واجهة ويب مناسبة ، لكن التطبيق يستجيب للطلبات من مثيل آخر. بالنسبة لوضع الويب ، تحتاج إلى تثبيت flask والعديد من الحزم الإضافية ، وهذا غير مقبول في كل مكان ، على سبيل المثال ، في AstraLinux SE معتمد.



من خلال واجهة الويب ، يمكنك عرض حالة وسجلات النسخ الاحتياطية للخوادم المتصلة: تطلب "نسخة الويب" البيانات من "النسخ الاحتياطية" عبر واجهة برمجة التطبيقات. يتطلب الوصول إلى الويب إذنًا ، ولا يتطلب الوصول إلى webapi.







يتم تمييز سجلات النسخ الاحتياطية التي تم تمريرها بشكل غير صحيح بالألوان: تحذير - أصفر ، خطأ - أحمر.











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



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



نتيجة لذلك ، حصلنا على أداة نسخ مدمجة ومستقلة ، قابلة للتشغيل الآلي ومناسبة للتشغيل حتى من قبل المسؤولين عديمي الخبرة. إنه مناسب لنا - ربما يكون مفيدًا لك أيضًا؟



All Articles