نسخة احتياطية أخرى - أكثر من نص ، أبسط من نظام

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

نسخة احتياطية أخرى - أكثر من نص ، أبسط من نظام

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

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

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

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

كانت شروط المهمة كما يلي:

  1. مثيل النسخ الاحتياطي الأساسي غير متصل بالإنترنت ، ويعمل محليًا
  2. تخزين النسخ الاحتياطية والسجلات دائمًا داخل شبكة العميل
  3. يتكون المثيل من وحدات - مثل هذا النوع من "المُنشئ"
  4. التوافق مع توزيعات Linux المستخدمة ، بما في ذلك التوزيعات القديمة ، من المستحسن أن تعمل الأنظمة الأساسية المشتركة
  5. وصول ssh كافٍ للعمل مع المثيل ، وفتح منافذ إضافية اختياري
  6. أقصى قدر من السهولة في الإعداد والتشغيل
  7. من الممكن (ولكن ليس ضروريًا) أن يكون لديك مثيل منفصل يتيح لك عرض حالة النسخ الاحتياطية مركزيًا من خوادم مختلفة

ما حصلنا عليه يمكن رؤيته هنا: github.com/javister/krista-backup
البرنامج مكتوب بلغة python3 ؛ يعمل على Debian و Ubuntu و CentOS و AstraLinux 1.6.

يتم نشر الوثائق في دليل المستندات الخاص بالمستودع.

المفاهيم الأساسية التي يعمل عليها النظام:
الإجراء - إجراء ينفذ عملية ذرية واحدة (النسخ الاحتياطي لقاعدة البيانات ، النسخ الاحتياطي للدليل ، النقل من الدليل A إلى الدليل B ، إلخ). الإجراءات الحالية موجودة في الدليل الأساسي / الإجراءات
مهمة - مهمة ، مجموعة من الإجراءات التي تصف "مهمة نسخ احتياطي" منطقية
الجدول الزمني - الجدول الزمني ، مجموعة المهام مع إشارة اختيارية لوقت تنفيذ المهمة

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

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

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

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

  • العمليات الرئيسية لنا مدعومة: النسخ الاحتياطي لـ 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 ، ونطرحها أولاً على بعض الخوادم الأقل أهمية ، وبعد اختبارها على البقية.

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

المصدر: www.habr.com

إضافة تعليق