تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه پشتیبان‌گیری از سرور LAMP با باکولا در اوبونتو 24.04


۱۹ فروردین ۱۴۰۴

مقدمه

پس از راه‌اندازی سرور، قدم بعدی تنظیم بکاپ‌گیری است. با بکاپ‌گیری می‌توانید نسخه‌های پشتیبان منظم از داده‌های خود ایجاد کرده و آن‌ها را بازیابی کنید. در این آموزش نحوه ایجاد پشتیبان‌گیری صحیح از یک برنامه PHP در حال اجرا بر روی سرور LAMP با استفاده از Bacula را در یک سرور پشتیبان جداگانه را به شما نشان خواهیم داد. یکی از مزایای استفاده از سیستم پشتیبان‌گیری مانند Bacula این است که به شما کنترل کامل بر روی انتخاب فایل‌ها برای پشتیبان‌گیری و زمان‌بندی آن را می‌دهد. همچنین، پشتیبان‌گیری فایل به شما این امکان را می‌دهد که فقط فایل‌های مورد نیاز را بکاپ‌گیری کرده و فضای دیسک را ذخیره کنید.

نحوه پشتیبان‌گیری از سرور LAMP با باکولا در اوبونتو 24.04

پیش‌نیازها

این آموزش فرض می‌کند که شما یک برنامه PHP مانند وردپرس را روی یک سرور Ubuntu 24.04 با استفاده از استک LAMP (Linux, Apache, MySQL, PHP) اجرا می‌کنید. ما این سرور را سرور LAMP می‌نامیم. این مقاله نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu را مطالعه کنید.
برای نصب نرم‌افزار سرور Bacula، به دسترسی sudo به یک سرور نیاز خواهید داشت که آن را سرور پشتیبان‌ها می‌نامیم. بهترین کار این است که این سرور در همان دیتاسنتر سرور LAMP قرار داشته باشد و شبکه خصوصی فعال باشد. پشتیبان‌هایی که ایجاد می‌شوند، بر روی این سرور ذخیره خواهند شد، بنابراین این سرور باید فضای دیسک کافی برای ذخیره چندین نسخه از پشتیبان‌ها داشته باشد.

در ادامه بخوانید:

  • گام اول: انتخاب بکاپ‌گیری
  • گام دوم: ایجاد بکاپ‌های جدید از دیتابیس
  • گام سوم: نصب Bacula روی سرور بکاپ
  • گام چهارم: نصب کلاینت Bacula روی سرور LAMP
  • گام پنجم: افزودن کلاینت بکاپ‌گیری به سرور بکاپ
  • گام ششم: پیکربندی FileSets در Bacula
  • گام هفتم: بکاپ‌گیری توسط Bacula
  • گام هشتم: راه‌اندازی مجدد سرویس Bacula Director
  • گام نهم: مرور جدول بکاپ‌ها
  • جمع‌بندی

گام اول: انتخاب بکاپ‌گیری

در این گام، برای بکاپ‌گیری، باید فقط فایل‌هایی که برای بازگرداندن سرور به وضعیت قبلی نیاز داریم را انتخاب کنیم. این فایل‌ها شامل موارد زیر هستند:

  • فایل‌های پیکربندی Apache و MySQL.
  • فایل‌های اپلیکیشن PHP (که معمولاً در مسیر /var/www/html قرار دارند).
  • پایگاه داده MySQL (که باید یک بکاپ جدید از آن تهیه کنیم).

در آخر، هدف این است که فقط داده‌هایی که برای بازسازی اپلیکیشن و سرور ضروری هستند را بکاپ‌گیری کنیم و بقیه فایل‌ها را می‌توانیم دوباره نصب و تنظیم کنیم.

در گام بعدی بیایید بکاپ‌گیری جدید دیتابیس‌مان را پیکربندی کنیم.

گام دوم: ایجاد بکاپ‌های جدید از دیتابیس

برای ایجاد بکاپ جدید از پایگاه داده MySQL با استفاده از Percona XtraBackup، باید یک اسکریپت بنویسید که به صورت خودکار این بکاپ‌ها را ایجاد کند. پس از آن، باید این اسکریپت را زمان‌بندی کنید تا به طور منظم اجرا شود. ساده‌ترین روش این است که از یک اسکریپت bash و cron job استفاده کنید.

برای ایجاد اسکریپت bash به نام run_extra_backup.sh در مسیر /usr/local/bin، دستور زیر را وارد کنید:

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

سپس، برای اضافه کردن اسکریپت بکاپ‌گیری جدید با Percona XtraBackup، می‌توانید از اسکریپت زیر استفاده کنید.

توجه داشته باشید که باید نام کاربری (your_mysql_user) و رمز عبور (your_mysql_password) را با مقادیری که هنگام نصب XtraBackup تنظیم کرده‌اید، جایگزین کنید.

اسکریپت زیر را به فایل اضافه کنید:

#!/bin/bash

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

# delete existing full backup
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

فایل را ذخیره کرده و خارج شوید.

حالا با دستور زیر، اسکریپت را اجرا کنید:

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

برای بکاپ‌گیری درست از پایگاه داده، ابتدا باید اسکریپت XtraBackup اجرا و تکمیل شود، سپس Bacula بکاپ‌گیری را انجام دهد. به جای تنظیم پیش‌فرض در Bacula، از یک کرون‌جاب برای اجرای اسکریپت XtraBackup قبل از پشتیبان‌گیری استفاده می‌کنیم.

برای ایجاد یک فایل کرون که به crontab ریشه اضافه شود، دستور زیر را وارد کنید:

sudo vi /etc/cron.d/xtrabackup

کرون جاب زیر را اضافه کنید:

30 22    * * *   root    /usr/local/bin/run_xtrabackup.sh

این کرون‌جاب اسکریپت را هر روز ساعت ۱۰:۳۰ شب به‌عنوان کاربر root اجرا می‌کند. زمان انتخاب شده به‌گونه‌ای است که کار پشتیبان‌گیری پیش‌فرض Bacula هر شب ساعت ۱۱:۰۵ شب اجرا می‌شود. در ادامه، به تنظیمات مربوط به این فرآیند خواهیم پرداخت. این زمان ۳۵ دقیقه را برای تکمیل اسکریپت XtraBackup در اختیار قرار می‌دهد.

حالا که بکاپ‌های جدید پایگاه داده تنظیم شدند، بیایید Bacula را روی سرور بکاپ نصب کنیم.

فایل ها و اطلاعات خود را در فضایی سریع، مقیاس‌پذیر و امن ذخیره کنید!
✅ سازگار با پروتکل S3 ✅ رابط کاربری ساده ✅ امنیت بالا
خرید فضای ذخیره‌سازی ابری

گام سوم: نصب Bacula روی سرور بکاپ

ابتدا باید Bacula Server را روی سرور بکاپ نصب کنید. برای این کار دستور زیر را اجرا کنید:

sudo apt update
sudo apt install bacula-server bacula-director bacula-sd bacula-fd

بعد از نصب، سرویس‌های Bacula را فعال و راه‌اندازی کنید:

sudo systemctl enable bacula-director bacula-sd bacula-fd
sudo systemctl start bacula-director bacula-sd bacula-fd

وضعیت سرویس‌ها را با دستور زیر بررسی کنید:

sudo systemctl status bacula-director bacula-sd bacula-fd

برای مدیریت بکاپ‌گیری، باید فایل تنظیمات Bacula Director را ویرایش کنید:

sudo nano /etc/bacula/bacula-dir.conf

در این فایل، نام Director را تعیین کنید و تنظیمات مربوط به سرور بکاپ و کلاینت را بررسی کنید.

سپس فایل پیکربندی ذخیره‌سازی را ویرایش کنید:

sudo nano /etc/bacula/bacula-sd.conf

باید مطمئن شوید که مسیر ذخیره‌سازی و دسترسی‌های لازم به درستی تنظیم شده‌اند.

برای تست عملکرد Bacula و اطمینان از اجرای صحیح پشتیبان‌گیری، از ابزار bconsole استفاده کنید:

sudo bconsole

سپس دستورات زیر را اجرا کنید:

status director
status storage
status client

این دستورات وضعیت Bacula را نمایش داده و در صورت وجود مشکل، اطلاعات مفیدی ارائه می‌دهند.

گام چهارم: نصب کلاینت Bacula روی سرور LAMP

برای اینکه سرور LAMP شما بتواند تحت مدیریت Bacula پشتیبان‌گیری شود، باید Bacula Client را نصب و پیکربندی کنید. مراحل زیر را دنبال کنید.

ابتدا پکیج‌های لازم را نصب کنید:

sudo apt update
sudo apt install bacula-client

بعد از نصب، باید فایل bacula-fd.conf را ویرایش کنید:

sudo nano /etc/bacula/bacula-fd.conf

در این فایل، موارد زیر را بررسی و در صورت لزوم تغییر دهید:

  • FileDaemon Name: نامی که معمولاً برابر با نام هاست سرور است، با پسوند -fd
  • Director Password: رمز عبوری که سرور Bacula برای اتصال به این کلاینت استفاده می‌کند.
Director {
  Name = "bacula-dir"
  Password = "your-secure-password"
}

رمز عبور (Password) را با مقدار صحیح از روی سرور Bacula جایگزین کنید.

بعد از انجام تغییرات، سرویس Bacula Client را مجدداً راه‌اندازی کنید:

sudo systemctl restart bacula-fd

باید در خروجی active (running) را مشاهده کنید.

حالا باید مطمئن شوید که سرور Bacula می‌تواند با این کلاینت ارتباط برقرار کند. وارد bconsole در سرور Bacula شوید:

sudo bconsole

دستور زیر را اجرا کنید:

status client

اگر همه چیز به‌درستی پیکربندی شده باشد، باید وضعیت کلاینت نمایش داده شود.

شاید برای شما مفید باشد: نحوه ارتقای نسخه اوبونتو 22.04 به 24.04 در سرور مجازی Ubuntu

گام پنجم: افزودن کلاینت بکاپ‌گیری به سرور بکاپ

روی سرور بکاپ (سرور Bacula)، یک کلاینت جدید برای سرور LAMP به فایل /etc/bacula/conf.d/clients.conf اضافه کنید.

فایل clients.conf را باز کنید:

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

در سرور بکاپ، باید یک کلاینت برای سرور LAMP در فایل clients.conf تعریف کنید. مقدار Name باید با نام FileDaemon در فایل bacula-fd.conf روی سرور LAMP یکی باشد و مقدار Password نیز باید با رمز Director در همان فایل مطابقت داشته باشد.

Client {
  Name = lamp-fd
  Address = lamp_private_IP_or_hostname
  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 Director در سرور بکاپ می‌تواند به کلاینت Bacula روی هر سرور دیگری متصل شود.

گام ششم: پیکربندی FileSets در Bacula

Bacula از FileSets برای مشخص کردن فایل‌هایی که باید در بکاپ‌گیری گنجانده شوند، استفاده می‌کند. هر FileSet به یک Job متصل است که هنگام اجرای بکاپ اجرا می‌شود. در این بخش، FileSets را ایجاد می‌کنیم که شامل فایل‌هایی هستند که قبلاً برای بکاپ انتخاب کرده‌ایم.

برای تنظیم این مورد، در سرور بکاپ فایل filesets.conf را باز کنید.

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

بکاپ‌های موردنیاز برای سرور LAMP شامل موارد زیر هستند:

  • فایل‌های برنامه PHP: مسیر /var/www/html
  • پایگاه داده MySQL: مسیر /data/backups/full که هر شب ساعت ۱۰:۳۰ با اسکریپت XtraBackup بکاپ‌گیری می‌شود

همچنین برای راحتی بیشتر، این فایل‌ها هم در بکاپ گنجانده می‌شوند:

  • تنظیمات MySQL: مسیر /etc/mysql
  • تنظیمات Apache: مسیر /etc/apache2
  • اسکریپت XtraBackup: مسیر /usr/local/bin/run_xtrabackup.sh
  • فایل زمان‌بندی کرون برای XtraBackup: مسیر /etc/cron.d/xtrabackup

حالا، با در نظر گرفتن مواردی که برای بکاپ انتخاب کرده‌ایم، FileSet زیر را به تنظیمات Bacula اضافه می‌کنیم:

FileSet {
  Name = "LAMP Files"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = /var/www/html
    File = /data/backups
    File = /etc/mysql
    File = /etc/apache2    
    File = /usr/local/bin/run_xtrabackup.sh
    File = /etc/cron.d/xtrabackup
  }
  Exclude {
    File = /data/backups/exclude
  }
}

فایل را ذخیره کرده و خارج شوید.

فایل‌هایی که در بخش Include قرار دارند، برای بکاپ انتخاب شده‌اند. اگر بخواهید فایل‌هایی را از بکاپ حذف کنید، آن‌ها را در بخش Exclude قرار دهید. حالا FileSet تنظیم شده است و باید یک Job در Bacula ایجاد کنیم که از این FileSet استفاده کند.

همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

گام هفتم: بکاپ‌گیری توسط Bacula

در این گام، یک Bacula backup job ایجاد خواهیم کرد که برای بکاپ‌گیری از سرور LAMP اجرا شود.

برای این کار، با دستور زیر یک فایل به نام jobs.conf در مسیر /etc/bacula/conf.d بسازید:

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

برای بکاپ‌گیری از سرور LAMP نیز، یک Job جدید به نام Backup LAMP مانند زیر ایجاد خواهیم کرد. نکته مهم این است که باید Client (lamp-fd) و FileSet (LAMP Files) صحیح را مشخص کنیم.

Job {
  Name = "Backup LAMP"
  JobDefs = "DefaultJob"
  Client = lamp-fd
  Pool = RemoteFile
  FileSet="LAMP Files"
}

فایل را ذخیره کرده و خارج شوید.

حالا که بکاپ ما تنظیم شد، آخرین قدم راه‌اندازی مجدد Bacula Director است.

گام هشتم: راه‌اندازی مجدد سرویس Bacula Director

روی سرور بکاپ، Bacula Director را با دستور زیر ری‌ستارت کنید تا تمامی تغییرات اعمال شوند:

sudo service bacula-director restart

در آخر باید سرور بکاپ را تست کنیم:)

گام نهم: مرور جدول بکاپ‌ها

زمان‌بندی بکاپ‌های Bacula را می‌توان با تغییر تنظیمات Bacula Director (فایل /etc/bacula/bacula-dir.conf) تنظیم کرد. این زمان‌بندی به‌صورت زیر تعریف شده است:

  • بکاپ‌گیری کامل در اولین یکشنبه هر ماه ساعت ۱۱:۰۵ شب
  • بکاپ‌گیری تفاضلی در سایر یکشنبه‌ها ساعت ۱۱:۰۵ شب
  • بکاپ‌گیری افزایشی در سایر روزهای هفته (دوشنبه تا شنبه) ساعت ۱۱:۰۵ شب

برای بررسی این موضوع، می‌توانید از کنسول 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 lamp         Remote-0002

در آخر، برای جلوگیری از ناسازگاری بین بکاپ‌های اپلیکیشن و پایگاه داده، بهتر است بکاپ پایگاه داده را جداگانه از دیگر بکاپ‌ها زمان‌بندی کنید. می‌توانید زمان‌بندی بکاپ فایل‌های اپلیکیشن را با زمان اجرای اسکریپت XtraBackup هماهنگ کنید و سپس بکاپ پایگاه داده را بعد از اتمام آماده‌سازی آن بگیرید.

جمع‌بندی

حالا باید بکاپ‌های روزانه و (در صورتی که تنظیم کرده‌باشید) نسخه ریموت این بکاپ‌ها از سرور LAMP شما وجود داشته باشد. حتماً فرایند بازیابی را بررسی کرده و اطمینان حاصل کنید که قادر به بازگرداندن فایل‌های پشتیبان هستید. این کار به شما کمک می‌کند تا در مواقع ضروری بدون نگرانی از داده‌هایتان استفاده کنید.

به اشتراک بگذارید