Меню сайта





Календарь новостей
«  Апрель 2010  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930


Форма входа


Поиск


Друзья сайта



Приветствую Вас, Гость · RSS 25.04.2024, 20:05
Главная » 2010 » Апрель » 1 » Комментарии к скрипту по бэкапу MySQL.
Комментарии к скрипту по бэкапу MySQL.
17:29

По просьбам друзей, выкладываю скрипт для бэкапа MySQL с подробными комментариями. Точнее, в основном выкладываю комментарии для этого скрипта

Сам скрипт можно найти здесь: http://rm-rf.ucoz.ru/publ/5-1-0-5

Code
# Set vars (PLEASE CHANGE IF REQUIRED)  
bckpdir='/var/backup'  
bckplist='mysql_databases_list.txt'  
bckppath=$bckpdir/$bckplist  
adminemail=' admin@ep.com '

bckpdir = директория в которую будут делаться бэкапы
bckplist = список баз мускула
bckppath = полный путь к файлу со списком баз для бэкапа
adminemail = адрес, на который будут приходить отчеты об архивации

Code

# Set formatted date  
dede=`date "+%d"`  
meme=`date "+%m"`  
yeye=`date "+%Y"`  
todaydate="$yeye$meme$dede"

# Set formatted date
dede=`date "+%d"` - день недели в формате ДД
meme=`date "+%m"` - месяц в формате ММ
yeye=`date "+%Y"` - год в формате ГГ
todaydate="$yeye$meme$dede" - полная дата в формате ГГММДД ))))
Можно было сделать проще в одну строчку, но так нагляднее, возможно у кого-то другой формат даты в бэкапах

Code

# Check if directory for backup not exist  
if test -d $bckpdir  
then  
echo "Dir exists" > /dev/null  
else  
mkdir $bckpdir  
fi

Проверка, существует ли папка для бэкапов. Если да,то печатает "Dir exist", если нет, то создает $bckpdir (см. первый параграф)

Code

# Creating file with databases names inside  
echo "show databases;" | /usr/local/bin/mysql -u root | sed '1,1d' > $bckppath

# Creating file with databases names inside
echo "show databases;" | /usr/local/bin/mysql -u root | sed '1,1d' > $bckppath
Самое сложное в скрипте, сделал в одну строчку.
В общем, заходим в базу под рутом "/usr/local/bin/mysql -u root", печатаем "show databases;" и вытаскиваем "sed '1,1d'" названия баз мускула. Вывод перенаправляем в файл $bckppath.

Code
[b]# Creating dump file of all databases  
/usr/local/bin/mysqldump --all-databases > $bckpdir/all-databases.sql[/b]

Этой командой делаем бэкап всех баз данных, на случай того, если крякнет весь мускул. Далее делаем отдельно бэкап каждой базы, на случай, если крякнет одна из баз.

Code
# Set vars  
parse=`cat $bckppath`  
# Creating dump files of every databases who listed in "show databases"  
for i in $parse  
do /usr/local/bin/mysqldump --databases $i > $bckpdir/$i.sql  
done

Переменной parse ставим значение "cat $bckppath", она будет перечислять построчно в цикле каждую строчку файла $bckppath
Далее делаем цикл, с присвоением переменной i значений из $parse и подстановкой в
/usr/local/bin/mysqldump --databases $i > $bckpdir/$i.sql
То есть под $i подразумевается название базы данных из строчки $bckppath.
Если у нас три базы данных, перечисленных в $bckppath:

Quote
onotole
zhopa
ololo

то, соответственно, у нас и будет такая последовательность:

Code

i=onotole
/usr/local/bin/mysqldump --databases onotole > $bckpdir/onotole.sql  
i=zhopa
/usr/local/bin/mysqldump --databases zhopa > $bckpdir/zhopa.sql  
i=ololo
/usr/local/bin/mysqldump --databases ololo > $bckpdir/ololo.sql

Code

# Creating archive with dumps  
# use "tar -xvf archivename.tar" for unpack  
tar -cvf $bckpdir/$todaydate.wwwsrv.mysqldump.tar $bckpdir/*.sql

Создаем архив с дампами мускульных баз. Проще говоря, архивируем полученные файлы.

Code
# E-mail list of completed dumps  
ls -l $bckpdir/*.sql $bckpdir/*.tar | awk '{print ($5,$8,$9)}' | sort -n -r | mail -s "BACKUP.GW.MySQL" $adminemail

Отсылка на почту админу списка файлов в $bckpdir. Тут используется переменная $adminemail

Code
# Cleaning up temporary directory  
rm -Rf $bckpdir/*.sql  
rm -Rf $bckpdir/$bckplist

Очищаем директорию с бэкапами

Вот в принципе и всё. Всегда можно упростить и дополнить. Конструктивная критика приветствуется.

Просмотров: 4127 | Добавил: jsand | Рейтинг: 5.0/1 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Сайт управляется системой uCoz