پشتیبان‌گیری خودکار از دیتابیس

اسکریپت AutoMySQLBackup اسکریپت هوشمندی است که می‌تواند کارهای پشتیبان‌گیری روزانه، هفتگی و ماهانه را به روشی منظم انجام دهد.
کد خبر: ۵۱۵۶۹۷

تنها نیاز این اسکریپت دستور mysqldump است که از طریق نصب بسته mysql-client انجام می‌شود. AutoMysqlBackup می‌تواند در فواصل زمانی تعیین شده دیتابیس را dump کرده و نتیجه را در یک فایل tar قرار دهد. این فایل‌ها را می‌توان بعدا به مدیاهای دیگر منتقل و رمزگذاری کرد.

دریافت اسکریپت

به نشانی زیر بروید و فایل زیر را دریافت کنید:

http://sourceforge.net/projects/automysqlbackup/

سپس با کمک دستور زیر، فایل را از حالت فشرده خارج کنید:

$ tar zxvf automysqlbackup-v3.0_rc6.tar.gz

حالا باید یک دایرکتوری با عنوان automysqlbackup-v3.0_rc6 داشته باشید که داخلش شش فایل automysqlbackup، automysqlbackup ، CHANGELOG، install.sh، LICENSE و README وجود دارد.

قدم بعدی خواندن فایل README است چراکه اطلاعات مربوط به شیوه نصب و اطلاعات مفید دیگر در این فایل وجود دارد. اگر اطلاعاتی در آنجا ناقص بود، امیدواریم این مطلب کمکی کرده باشد.

قدم بعدی اجرای اسکریپت نصب install.sh است. برای این کار به دسترسی روت نیاز دارید. اگر اسکریپت نصب به هر دلیلی کار نکرد، می‌توان از طریق دستی و به کمک اجرای دستورات زیر، آن را نصب کرد:

# chown root:root automysqlbackup

# chmod 0700 automysqlbackup

# cp automysqlbackup /usr/local/bin/

# mkdir /etc/automysqlbackup

# cp automysqlbackup.conf /etc/automysqlbackup/automysqlbackup.conf

# cd /etc/automysqlbackup

# cp automysqlbackup.conf servername.conf

می‌توانید فایل servername.conf را با هر نام دیگری جایگزین کنید. بعد از انجام این‌کارها، یک نمونه موفق و یک فایل پیکربندی خواهید داشت.

گزینه‌های پیکربندی

فایل پیکربندی طولانی است و بخوبی مستندسازی شده است و برای راه‌اندازی این اسکریپت و همخوانی آن با MySQL فقط به تغییر چند چیز کوچک نیاز دارید. اول از همه شناسه کاربری MySQL، سطح دسترسی SELECT را به سیستم بدهیم:

# Username to access the MySQL server e.g. dbuser

CONFIG_mysql_dump_username='db_user'

# Password to access the MySQL server e.g. password

CONFIG_mysql_dump_password='sekkritpassword'

اگر از Parallels Plesk 10.2 یا جدیدتر در سرور خود استفاده می‌کنید و می‌خواهید از طریق شناسه ادمین این کارها را انجام دهید، بهتر است از شناسه دیگری به‌جز شناسه اصلی MySQL خود این کار را انجام دهید. مثلا یک شناسه با کمترین دسترسی ممکن با نام AutoMYSQLBackup ایجاد کنید، اما اگر انجام این کار برایتان مقدور نیست، مجبورید رمز عبور ادمین‌تان را در این فایل بنویسید.

# /usr/local/psa/bin/admin --show-password

اما اگر نمی‌توانید از این پسورد هم استفاده کنید، از پسورد رمزگذاری شده استفاده کنید:

# Password to access the MySQL server e.g. password

CONFIG_mysql_dump_password=`cat /etc/psa/.psa.shadow`

سرور شما localhost است و برای قرار گرفتن فایل‌های پشتیبان، باید دایرکتوری‌هایش را مشخص کنید:

# Host name (or IP address) of MySQL server e.g localhost

CONFIG_mysql_dump_host='localhost'

# Backup directory location e.g /backups

CONFIG_backup_dir='/home/mysqlbackups'

روی تک تک دیتابیس‌هایی که عملیات پشتیبان از آنها تهیه می‌شود، می‌توان کنترل داشت. اگر از این دیتابیس‌ها زیاد دارید، بهتر است بدانید خالی گذاشتن ()=CONFIG_db_names باعث می‌شود از همه آنها کپی تهیه شود. اگر می‌خواهید تعدادی را از این فهرست خارج کنید، می‌توانید آنها را درون فهرست قرار دهید. به دستور زیر نگاه کنید:

CONFIG_db_exclude=('information_schema' 'test_db' 'demo_db' )

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

# Which day do you want monthly backups? (01 to 31)

# If the chosen day is greater than the last day of the month, it will be done

# on the last day of the month.

# Set to 0 to disable monthly backups.

CONFIG_do_monthly="03"

# Which day do you want weekly backups? (1 to 7 where 1 is Monday)

# Set to 0 to disable weekly backups.

CONFIG_do_weekly="6"

# Set rotation of daily backups. VALUE*24hours

# If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed.

CONFIG_rotation_daily=7

# Set rotation for weekly backups. VALUE*24hours

CONFIG_rotation_weekly=14

# Set rotation for monthly backups. VALUE*24hours

CONFIG_rotation_monthly=30

دو بخش در تنظیمات وجود دارد که سیستم اطلاع‌رسانی این اسکریپت را کنترل می‌کند.

مثلا اگر بخواهیم فایل‌های log را بعد از هر اجرا ببینیم، مثال زیر را بررسی کنید:

# What would you like to be mailed to you?

# - log : send only log file

# - files : send log file and sql files as attachments (see docs)

# - stdout : will simply output the log to the screen if run manually.

# - quiet : Only send logs if an error occurs to the MAILADDR.

CONFIG_mailcontent='log'

# Email Address to send mail to? (

user@domain.com)CONFIG_mail_address='

admin@somewhere.com'

اجرای اول

در چند قدم اول، وقتی با اسکریپت AutoMySQLBackup کار می‌کنید بهتر است فقط یک یا دو دیتابیس را تحت نظر داشته باشید. این کار امن است و نمی‌تواند به دیتابیس صدمه بزند، اما هر چه حجم دیتا بیشتر باشد، دقیق‌کردن پیکربندی بیشتر به‌طول می‌انجامد. اجرای این اسکریپت از طریق دستور زیر ممکن خواهد بود:

# automysqlbackup /etc/automysqlbackup/servername.conf

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

# ls /home/mysqlbackups/

daily/

fullschema/

latest/

monthly/

status/

tmp/

weekly/

مثلا با اجرای دستور ls –al احتمالا نتیجه‌ای مشابه نتیجه زیر خواهید دید:

-rw-r--r-- 1 root root 66428 Oct 25 00:12 daily_db_name_2012-10-22_00h05m_Monday.sql.gz

این اسکریپت همچنین یک فایل log با اطلاعات جزئی نیز تولید می‌کند. بنابراین هیچ یک از مراحل پشتیبان‌گیری از چشم شما پنهان نخواهد بود و اگر اشتباهی رخ داد، می‌توانید ریشه مشکل را پیدا کنید.

همچنین در فایل README نیز یک نمونه اسکریپت جمع‌وجور و ساده وجود دارد که می‌توانید از آن استفاده کنید:

#!/bin/sh

/usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

chown root.root /var/backup/db* -R

find /var/backup/db* -type f -exec chmod 400 {} \;

find /var/backup/db* -type d -exec chmod 700 {} \;

باید نام myserver را تغییر داده و نام فایل خودتان را جایگزین کنید. در اینجا /var/backup باید با دایرکتوری بک‌آپ شما تغییر پیدا کند.

پشتیبان‌گیری خودکار زمانی

برای آن که این عملیات را در ساعاتی مقرر و بدون نیاز به اجرای هر دفعه اسکریپت انجام دهید، باید سراغ cronهای دوست‌داشتنی برویم. مثال زیر، این اسکریپت را هر روز ساعت 12:05 صبح اجرا می‌کند:

5 0 * * * /usr/local/bin/backupscript

پشتیبان‌گیری از راه‌دور

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

http://www.linux.com/learn/tutorials/653346-multiply-your-encrypted-linux-backups-with-horcrux

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

محمدرضا قربانی

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها