perl-скрипт для автоматизации бэкапов mysql

Прислано: nleo

ср, 25/02/2009 - 18:18


Собрался наконец автоматизировать некоторые рутинные операции. Скрипт предназначен для ручного запуска из консоли.

#!/usr/bin/perl
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime(time);
 
$date = sprintf("%d.%02d.%02d_%02d-%02d-%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec);
print "Date is $date\n";
 
@databases  = ("bd1", "bd2");# имена баз данных которые надо забэкапить
$mysql_user = 'username';
$mysql_pass = 'pass';
$path       = '/home/www/mysite.ru';
$archive_name = "$date.tar.gz";
$http_link = 'http://mysite.ru';
 
#создаем катаклог, в качестве имени - текущяя дата
system "mkdir '$date'";
 
#делаем дампы каждой БД
foreach $database (@databases){
  print "Backuping database: $database... ";
  system "mysqldump -u $mysql_user -p$mysql_pass $database > $date/$database.sql";
  print "Done.\n";
}
 
#архивиреем дампы и перемещаем в папку, которую до этого создали
system "tar -czf $archive_name $date";
system "mv $archive_name $date";
#копируем архив в корень нашего домена и предлагаем его скачать
system "cp $date/$archive_name $path/$archive_name";
print "You can download archive: $http_link/$archive_name\n";
# после нажатия enter, архив из корня домена будет удален и удалены промежуточные файлы с дампами баз данных.
<>;
system "rm $path/$archive_name";
system "rm $date/*.sql";
print  "Cleared. Tasks done.\n";

почему perl? я влюблен в его синтаксис, жаль, что друпал не на перле)

PS а подсветка не предусмотренна? ( < code type="perl" > )

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Master of Tragedy в ср, 25/02/2009 - 18:28.

Здесь не лучше решение?


Опубликовано nleo в ср, 25/02/2009 - 18:40.

спасибо, хорошая информация

но мое решение именно для меня лучше, потому что оно целиком делает то, что мне нужно не больше не меньше)

единстевенное наверно надо --add-drop-table добавить


Опубликовано Ильич Рамирес Санчес в ср, 25/02/2009 - 18:41.

Все проще. создаем в mysql пользователя backup который имеет доступы к базам на чтение.
и пишем такой скрипт:

#!/bin/sh
backupuser='backupuser'
backuppasswd='тут идет пароль но мы ваем его не покажем'
mysqldump='/usr/bin/mysqldump'
#this function makes mysqldump of the given database to the given directory
# and makes chmod and chown of file to the given group
make_dump(){
    _database=$1;
    _directory=$2;
    _user=$3;
    _group=""$4;
    _mod=""$5;
    _path="${_directory}/${_database}.sql";
    _command="${mysqldump} --skip-extended-insert -u${backupuser} -p${backuppasswd} ${_database}";
    ${_command}  > ${_path};
    if [ "a${_user}" != "a" ] && [ "a${_group}" != "a" ]; then
        chown ${_user}:${_group}  ${_path}
    fi
    if [ "a${_mod}" != "a" ]; then
        chmod ${_mod} ${_path}
    fi
}
 
# а теперь просто вызываем функцию которую нарисовали с нужными параметрами.
#my sites
mypath=/home/brainstorm
make_dump brainstorm ${mypath} brainstorm www-data 640
make_dump insourcing ${mypath} brainstorm www-data 640
make_dump projectpier ${mypath} brainstorm www-data 640
#remstroy
make_dump remstroy /mnt/brainstorm/projects/remstroy brainstorm www-data 640
#timon
make_dump timon /mnt/timon/backup timon www-data 640

вот собственно и все. надо еще базу бекапить и класть в каталог пользователя - добавляем еще строку make_dump


Опубликовано Ильич Рамирес Санчес в ср, 25/02/2009 - 21:14.

да кстати. БД лучше не сжимать а тащить rsync несжатый файл.
очень удобно.


Опубликовано nleo в ср, 25/02/2009 - 21:55.

точно! что-то я недодумался, пошел искать rsync для виндоус

если есть ссылки про настройку бекапа на домашний комп под windows c сайта кидайте


Опубликовано Master of Tragedy в ср, 25/02/2009 - 22:31.

Тут где-то была тема. Ищите.


Опубликовано Demimurych в чт, 26/02/2009 - 07:25.

по больше ВЕЛОСИПЕДОВ хороших и разных.

На том же сайте myqsl есть все необходимое.


Опубликовано Ильич Рамирес Санчес в чт, 26/02/2009 - 07:40.

"Demimurych" написал(а):

На том же сайте myqsl есть все необходимое.

да ну? такие же велосипеды. :)


Новое на сайте

Ссылки партнёров