بناء للإنتاج: تطبيقات الشبكة العنكبوتية — ال respaldos

المقدمة

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

الحلول المماثلة مثل تخزينات قلمات DigitalOcean (نسخ تصور لجميع القلمات) سهلة الإنشاء وقد تكون كافية لتوانيك إذا كان بحاجة إلى نسخ أسبوعية فقط. إذا اخترت تخزينات DigitalOcean، تأكد من تكوين نسخ ساخنة لقاعدة البيانات بتتبع الأجزاء إنشاء نسخ ساخنة لقاعدة البيانات الخاصة بك.

في هذا الجزء من التutorial، سنقوم بتأسيس نظام باكولا لمحاملة نسخ التخزين اليومية للنسخ المطلوبة للخوادم التي تتكون منها إعدادات تطبيقك (db1. app1. app2. و lb1)، التي تم تعريفها مسبقا في خطة التنقل الخاصة بنا — بشكل أساسي، هذا التutorial الذي يوضح كيفية استخدام باكولا لإنشاء نسخ الأحجية اللامع. سنستخدم أيضًا بركونا XtraBackup لإنشاء النسخ الساخنة لقاعدة بياناتك الموجودة في MySQL. وأخيرًا، سنستخدم rsync لإنشاء نسخة من نسخك، على خوادم في مركز بيانات بعيد. هذا سيضيف خوادمين إلى إعداداتك: النسخ و النسخ البعيدة (والتي تقع في مركز بيانات منزوي).

دعونا نبدأ.

Installing Bacula on Backups Server

Set up Bacula on your backups server by following this tutorial: How To Install Bacula Server on Ubuntu 14.04.

فعليًا تتبع القسم تنظيم 配置 Bacula Director (Server) من هذا التutorial: كيف تحفظ سerver Ubuntu 14.04 بواسطة Bacula. سوف تحتاج إلى أسم المدير الرئيسي أثناء إعداد الزائرين الباكولا (على السerverers التي تريد حفظها). توقف عندما تصل إلى القسم Install and Configure Bacula Client.

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

Install Bacula Client on Each Server

قم بتثبيت مستخدم الباكولا على كل ماكينة تريد حفظها (db1، app1، app2، و lb1) من خلال القسم Install and Configure Bacula Client من هذا التutorial: كيف تحفظ سerver Ubuntu 14.04 بواسطة Bacula. توقف عندما تصل إلى القسم Add FileSets (Server).

توجه إلى أنك ستحتاج إلى اسم الFileDaemon (عادةً يتم إضافة “appended by “-fd”” إلى اسم المضيف) وكلمة المرور للمدير (الكلمة المرور التي سيستخدمها مخزون الBacula للاتصال بكل مستخدم) من ملف bacula-fd.conf على كل مخزون.

إضافة مستخدمي Bacula إلى مخزون الاحجياء

على backups, مخزون Bacula, إضافة مورد مستخدم إلى ملف /etc/bacula/conf.d/clients.conf لكل مخزون تم تثبيت مستخدم Bacula فيه.

افتح ملف clients.conf:

  1. sudo vi /etc/bacula/conf.d/clients.conf

هذا مثال عن تعريف مورد المستخدم لمستخدم القاعدة البياناتية db1. تلاحظ أن قيمة Name يجب أن تتطابق مع اسم المورد FileDaemon وقيمة Password يجب أن تتطابق مع كلمة المرور لمورد Director على المخزون المستخدم—تلك القيمتين يمكن إيجادهم في /etc/bacula/bacula-fd.conf على كل مستخدم Bacula المخزوني:

clients.conf — Example Client resource definition
Client {
  Name = db1-fd
  Address = db1.nyc3.example.com
  FDPort = 9102
  Catalog = MyCatalog
  Password = "PDL47XPnjI0QzRpZVJKCDJ_xqlMOp4k46"          # password for Remote FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

قم بإنشاء مورد مستخدم مماثل لكل من المستخدمين الباقيين من مستخدمي Bacula المخزوني. في مثالنا, يجب أن يكون هناك أربعة موارد مستخدم بمجرد الانتهاء: db1-fd, app1-fd, app2-fd, وlb1-fd. هذا يConfigure المدير Bacula في المخزون backups لتمكن من الاتصال بمستخدم Bacula على كل مخزون…

إنشاء وحل خطوات البريمج ثم إرساله.

يمكننا في قسمة إinstall وConfigure Bacula Client في دراسة How To Back Up an Ubuntu Server with Bacula.

إنشاء باكياسات حاسمة للمعلومات

لتأكيد أننا نصب باكياسات مستقبة (معنى ذلك سيستمات مستقبة مستخدمة). طريقة مستخدمة من سيناء باكياسات حاسمة مع ميكروسوفت هي سيناء باكياسات حاسمة بإستخدام Percona XtraBackup.

إinstall Percona XtraBackup

في سيرة إنstalation وإكمال إعدادت Percona XtraBackup على سيرة إنstalation وإكمال إعدادتها بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفيق بالتوفي

إنشاء خطوة لXtraBackup

يعتمد Percona XtraBackup على إنشاء نسخ احتجاجية ساخنة لقاعدة البيانات MySQL الخاصة بك، التي ستتم نسخها مرة أخرى من قبل Bacula (أو DigitalOcean Backups), لكن يتوجب تخطيط نوعاً ما للنسخ الاحتجاجية الساخنة. سنقوم بإنشاء الحل الأبسط: خطوة bash ومهمة cron.

قم بإنشاء خطوة bash تدعى run_extra_backup.sh في /usr/local/bin:

  1. sudo vi /usr/local/bin/run_xtrabackup.sh

أضف الخطوة التالية. والتأكد من إعادة تعيين المستخدم وكلمة المرور بما أنك قمت بتنصيب XtraBackup:

/usr/local/bin/run_xtrabackup.sh
#!/bin/bash

# pre xtrabackup
chown -R mysql: /var/lib/mysql
find /var/lib/mysql -type d -exec chmod 770 "{}" \;

# حذف النسخ الكاملة الموجودة
rm -r /data/backups/full

# xtrabackup create backup
innobackupex --user=bkpuser  --password=bkppassword --no-timestamp /data/backups/full

# xtrabackup prepare backup
innobackupex --apply-log /data/backups/full

حفظ وخروج. تشغيل هذه الخطوة (بالموارد العاملة الأعلى) سيحذف النسخة الاحتجاجية الموجودة في /data/backups/full وسيتم إنشاء نسخة كاملة جديدة. يمكن الحصول على تفاصيل أكثر حول إنشاء النسخ مع XtraBackup في قسم إنشاء نسخة احتجاجية كاملة من درس XtraBackup.

جعل الخطوة قابلة للتنفيذ:

  1. sudo chmod +x /usr/local/bin/run_xtrabackup.sh

لجعل نسخ نظام البيانات بشكل صحيح، يجب أن نشغل (ونقم بتنفيذ) 脚本 XtraBackup قبل أن تحاول Bacula نسخ مخزون البيانات. أحسن حل هو تكوين مهمة نسخ Bacula الخاص بك لتشغل القائمة ك”قائمة من قبل النسخ”, لكننا سنختار استخدام مهمة cron لكي نبسط الأمر.

إنشاء ملف ت配置 cron (الملفات في /etc/cron.d تم إضافتها إلى قائمة crontab المستخدم الرئيسي):

  1. sudo vi /etc/cron.d/xtrabackup

إضافة المهمة cron التالية:

/etc/cron.d/xtrabackup
30 22    * * *   root    /usr/local/bin/run_xtrabackup.sh

هذا الحجج يجبر القائمة على تشغيلها كروot كل يوم في الساعة 10:30 مساء (الساعة العشرين، الدقيقة الثالثة). اخترنا هذه الساعة لأن Bacula مجبرة في الآن على تشغيل مهام نسخها في الساعة 11:05 مساء يوميا—سنتحدث عن تغيير هذا مستقبلا. هذا يتيح 35 دقيقة لإنتهاء قائمة XtraBackup.

حينما تم إنشاء نسخ البيانات الحارة، دعونا ننظر إلى مجموعات ملفات Bacula الخاصة بالنسخ.

تكوين مجموعات ملفات Bacula

سيقوم Bacula بإنشاء نسخ احتياطية من الملفات المحددة في مجموعات الملفات التي ترتبط بمهام النسخ الاحتياطي التي سيتم تنفيذها. سيغطي هذا القسم إنشاء مجموعات الملفات التي تشمل النسخ الاحتياطية المطلوبة التي تحددناها في خطط الاستعادة الخاصة بنا. يمكن العثور على تفاصيل إضافية حول إضافة مجموعات الملفات إلى Bacula في قسم إضافة مجموعات الملفات (الخادم) من دليل Bacula.

على خادم النسخ الاحتياطي الخاص بك، افتح ملف filesets.conf

  1. sudo vi /etc/bacula/conf.d/filesets.conf

مجموعة ملفات خادم قاعدة البيانات

النسخ الاحتياطية المطلوبة لخادم قاعدة البيانات الخاص بنا، وفقًا لخطة استعادة خادم قاعدة البيانات الخاصة بنا، تشمل:

  • قاعدة بيانات MySQL: يتم إنشاء نسخة احتياطية بواسطة سكربت XtraBackup الخاص بنا في /data/backups/full، يوميًا عند الساعة 10:30 مساءً
  • تكوين MySQL: الموجود في /etc/mysql

سنقوم أيضًا بتضمين سكربت XtraBackup: /usr/local/bin/run_xtrabackup.sh، وملف cron المرتبط.

مع توقفنا على النسخ الاحتياطية المطلوبة، سنقوم بإضافة هذه “مجموعة ملفات قاعدة بيانات MySQL” إلى إعداد Bacula الخاص بنا:

filesets.conf — MySQL Database
FileSet {
  Name = "MySQL Database"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = /data/backups
    File = /etc/mysql/my.cnf
    File = /usr/local/bin/run_xtrabackup.sh
    File = /etc/cron.d/xtrabackup
  }
  Exclude {
    File = /data/backups/exclude
  }
}

الآن دعونا ننتقل إلى مجموعة ملفات خادم التطبيق.

مجموعة ملفات المزود التطبيقي

تشمل النسخ المطلوبة لمزوداتنا التطبيقية، وفقاً لخطة إعادة تنظيم مزوداتنا التطبيقية، التالي:

  • ملفات التطبيق: وهي موجودة في /var/www/html في مثالنا

بنظرة لنسخنا المطلوبة، سنإضافة هذه المجموعة “ملفات منشأة الأباكي” إلى 配置ur Bacula:

filesets.conf — Apache DocumentRoot
FileSet {
  Name = "Apache DocumentRoot"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = /var/www/html
  }
  Exclude {
    File = /var/www/html/exclude
  }
}

قد ترغب أيضًا في تضمين ملف 配置ur أباكي للمناصب، ولكن هذا قابل للتبديل بسهولة.

الآن دعونا نتحدث عن مجموعة ملفات 服务器e المتوازي.

مجموعة ملفات 服务器e المتوازي

تشمل النسخ المطلوبة لمزوداتنا الخاصة بالمتوازي، وفقاً لخطة إعادة تنظيم مزوداتنا التطبيقية، التالي:

  • شهادة SSL (PEM) والملفات المرتبطة بها: وهي موجودة في /root/certs في مثالنا
  • ملف 配置ur ل HAProxy: وهو موجود في /etc/haproxy

بنظرة لنسخنا المطلوبة، سنإضافة هذه “ملفات منشأة الأباكي” إلى 配置ur Bacula:

filesets.conf — SSL Certs and HAProxy Config
FileSet {
  Name = "SSL Certs and HAProxy Config"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = /root/certs
    File = /etc/haproxy
  }
  Exclude {
    File = /root/exclude
  }
}

حفظ وخروج.

الآن تم تكوين مجموعاتنا للملفات. دعونا ننتقل إلى إنشاء وظائف النسخ الاحتياطي لـ Bacula التي ستستخدم هذه المجموعات الملفية.

إنشاء وظائف النسخ الاحتياطي لـ Bacula

سنقوم بإنشاء وظائف النسخ الاحتياطي لـ Bacula التي ستتم تشغيلها وإنشاء نسخ احتياطية لأجهزة الخادم الخاصة بنا.

أنشئ ملفًا jobs.conf في /etc/bacula/conf.d:

  1. sudo vi /etc/bacula/conf.d/jobs.conf

وظيفة النسخ الاحتياطي لخادم قاعدة البيانات

بالنسبة لوظيفة النسخ الاحتياطي لخادم قاعدة البيانات الخاصة بنا، سنقوم بإنشاء وظيفة جديدة تُدعى “Backup db1”. الشيء المهم هنا هو تحديد العميل (db1-fd) و مجموعة الملفات (قاعدة بيانات MySQL) بشكل صحيح:

jobs.conf — Backup db1
Job {
  Name = "Backup db1"
  JobDefs = "DefaultJob"
  Client = db1-fd
  Pool = RemoteFile
  FileSet="MySQL Database"
}

الآن سنقوم بإعداد وظائف النسخ الاحتياطي لخادم التطبيقات.

وظائف النسخ الاحتياطي لخادم التطبيقات

بالنسبة لأجهزة خادم التطبيقات الخاصة بنا، سنقوم بإنشاء وظيفتين نسخ احتياطي تُدعى “Backup app1” و “Backup app2”. الشيء المهم هنا هو تحديد العملاء (app1-fd و app2-fd) و مجموعة الملفات (Apache DocumentRoot) بشكل صحيح.

وظيفة App1:

jobs.conf — Backup app1
Job {
  Name = "Backup app1"
  JobDefs = "DefaultJob"
  Client = app1-fd
  Pool = RemoteFile
  FileSet="Apache DocumentRoot"
}

مهمة App2:

jobs.conf — Backup app2
Job {
  Name = "Backup app2"
  JobDefs = "DefaultJob"
  Client = app2-fd
  Pool = RemoteFile
  FileSet="Apache DocumentRoot"
}

سنقوم حالياً بإنشاء مهمة نقل الوزن المساعدة للخوادم.

مهمة نقل الوزن الخاصة بالخوادم

لمهمة نقل الوزن الخاصة بالخوادم، سنخلق مهمة جديدة تسمى “تخزين lb1”. ما يهم هنا هو تحديد العميل (lb1-fd) و مجموعة الملفات (شهادات SSL و 配置 HAProxy):

jobs.conf — Backup lb1
Job {
  Name = "Backup lb1"
  JobDefs = "DefaultJob"
  Client = lb1-fd
  Pool = RemoteFile
  FileSet="SSL Certs and HAProxy Config"
}

حفظ وخروج.

الآن تم إعداد جobs التخزين. الخطوة الأخيرة هي إعادة بدء مدير Bacula.

إعادة بدء مدير Bacula

على السرور التخزيني، إعادة بدء مدير Bacula لتنفيذ جميع التغييرات التي قمنا بها:

  1. sudo service bacula-director restart

بعد الآن، 您需要测试您的客户端连接和备份作业,这两个都在“如何使用Bacula备份服务器”教程中有所涵盖。该教程还涵盖了如何恢复Bacula备份。请注意,恢复MySQL数据库将需要您遵循Percona XtraBackup教程中的“执行备份恢复”步骤

检查备份计划

Bacula备份计划可以通过修改Director配置(/etc/bacula/bacula-dir.conf)进行调整。我们创建的所有备份作业都使用“DefaultJob”JobDef,该作业使用“WeeklyCycle”调度,其定义如下:

  • 每月第一个星期天的晚上11:05进行全备份
  • 其他每个星期天晚上11:05进行差异备份
  • 周一至周六的其他时间晚上11:05进行增量备份

您可以使用Bacula控制台检查Director的状态以验证此信息。它应该输出所有计划好的作业。

Director Status — Scheduled Jobs
Scheduled Jobs: Level Type Pri Scheduled Name Volume =================================================================================== Incremental Backup 10 20-May-15 23:05 BackupLocalFiles MyVolume Incremental Backup 10 20-May-15 23:05 Backup lb1 Remote-0002 Incremental Backup 10 20-May-15 23:05 Backup app2 Remote-0002 Incremental Backup 10 20-May-15 23:05 Backup app1 Remote-0002 Incremental Backup 10 20-May-15 23:05 Backup db1 Remote-0002

أنت مجهز لإضافة أو تعديل جدولة أي من وظائف النسخ الاحتياطي الخاصة بك. سيكون من المنطق تعديل جدولة خوادم التطبيقات لتتم عند نفس الوقت تنفيذ سكربت Percona XtraBackup (الساعة 10:30 مساءً). سيمنع هذا التعاون من أن يكون النسخ الاحتياطي للتطبيق وقاعدة البيانات غير متطابقة مع بعضهما البعض.

إعداد النسخ الاحتياطي عن بُعد

الآن نحن مستعدون لإعداد خادم عن بُعد سيخزن نسخ من نسخ احتياطية Bacula الخاصة بنا. يجب أن يكون هذا الخادم في منطقة جغرافية منفصلة حتى تحصل على نسخة من النسخ الاحتياطي الحاسم حتى في حالة كوارث في مركز البيانات التنتاجية الخاصة بك. في مثالنا، سنستخدم منطقة سان فرانسيسكو (SFO1) لـ DigitalOcean كخادم remotebackups الخاص بنا.

سنشرح طريقة بسيطة لإرسال النسخ الاحتياطي من خادم backups إلى خادم remotebackups باستخدام مفاتيح SSH العامة، rsync، وcron.

على خادم remotebackups، أنشئ مستخدمًا سيُستخدم للدخول إلى rsync.

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

على الخادم الاحتياطيات، اكتب أمر rsync ينسخ بيانات الاحتياطيات Bacula (/bacula/backup) إلى مكان ما على الخادم الاحتياطيات البعيدة. يتم تغطية استخدام rsync في دليلنا كيفية استخدام Rsync. قد يبدو الأمر على شكل مثل هذا:

  1. rsync -az /bacula/backup remoteuser@remotebackups_public_hostname_or_IP:/path/to/remote/backup

أضف الأمر إلى سكربت، مثل /usr/local/bin/rsync_backups.sh وجعله قابلاً للتنفيذ.

وأخيرًا، ستريد إعداد وظيفة كرون تنفذ سكربت rsync_backups.sh كجذر، بعد انتهاء وظائف الاحتياطيات Bacula عادة. هذا مغطى في دليلنا كيفية جدولة المهام اليومية بواسطة Cron.

بعد إعداد كل ذلك، تحقق من أن لديك نسخة من الاحتياطيات على الخادم الاحتياطيات البعيدة في اليوم التالي.

الاعتبارات الأخرى

لم نتحدث عن حاجيات الأقراص التي يتم بها تخزين النسخ الاحتياطية لمستودعك. سوف ترغب بمراجعة كمية المساحة التي يستخدمها النسخ الاحتياطية لك وتنسيق جدول زمنك وإجراءات نسخ البيانات وإعادة التأكد وإعادة تكوينك وبناء البرمجيات والخ.

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

الخلاصة

يتم إنشاء نسخ يومية ونسخ بعيدة عن المخزونات الخاصة بمخزونات التطبيقات الإنتاجية. تأكد من قابلية تعيين الملفات، وأضف خطوات إعادة تعيين بياناتك إلى خططك الإعادية.

استمر في توجهك الى الدرس التالي لبدء إعداد رصد مخزونات جهازك الإنتاجي: بناء للإنتاج: تطبيقات الويب — الرصد.

Source:
https://www.digitalocean.com/community/tutorials/building-for-production-web-applications-backups