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" > )
- nleo's blog
- Для комментирования войдите или зарегистрируйтесь
Здесь не лучше решение?
- Для комментирования войдите или зарегистрируйтесь
спасибо, хорошая информация
но мое решение именно для меня лучше, потому что оно целиком делает то, что мне нужно не больше не меньше)
единстевенное наверно надо --add-drop-table добавить
- Для комментирования войдите или зарегистрируйтесь
Все проще. создаем в 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
- Для комментирования войдите или зарегистрируйтесь
да кстати. БД лучше не сжимать а тащить rsync несжатый файл.
очень удобно.
- Для комментирования войдите или зарегистрируйтесь
точно! что-то я недодумался, пошел искать rsync для виндоус
если есть ссылки про настройку бекапа на домашний комп под windows c сайта кидайте
- Для комментирования войдите или зарегистрируйтесь
Тут где-то была тема. Ищите.
- Для комментирования войдите или зарегистрируйтесь
по больше ВЕЛОСИПЕДОВ хороших и разных.
На том же сайте myqsl есть все необходимое.
- Для комментирования войдите или зарегистрируйтесь
На том же сайте myqsl есть все необходимое.
да ну? такие же велосипеды. :)
- Для комментирования войдите или зарегистрируйтесь



Комментарии