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

 

اسكريپت 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

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





تاريخ : سه شنبه 23 آبان 1391برچسب:, | | نویسنده : مقدم |