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

تبادل لینک

لینک مجاز خود را ارسال نمائید

درباره وبلاگ

جمعه 13 بهمن 1391

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

نویسنده:   طبقه بندی: درباره وب و ابزار وب، 

پشتیبان‌گیری خودكار از دیتابیس
 
 
اسكریپت 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

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

لینک ویژه

صفحات جانبی

آمار - آرشیو وبلاگ

  • "archive - آرشیو"
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :