Автоматизация бэкапа БД с помощью mysqldump



В дополнение mysqldump примерам хотелось бы привести пример реализации автоматического бэкапа базы данных. Он будет реализован на простом shell скрипту. Который удобно настраивается, что позволяет делать бэкапы ежедневно, еженедельно, ежемесячно. Процесс дампа осуществляется с помощью программы mysqldump. Скачать shell скрипт вы можете у нас automysqlbackup-v3.0_beta3.tar.gz.

После скачивания и распаковки архива настраиваем работу скрипта: automysqlbackup.conf. Файл на английском, но при помощи переводчика все становится понятно.

Но здесь одна проблема: не хочется использовать чужие скрипты на собственном сервере, поэтому, попробуем написать собственный скрипт для автоматизации бэкапов БД. Будем использовать известную нам программу mysqldump. Сделаем так, что-бы скрипт сохранял копию через FTP на удаленный сервер. Вот собственно пример скрипта, назовем его backup.sh:

#!/bin/sh
Date=`date +%d%m%y`
 LastDay=`date -v-7d +%d%m%y`
 ArcCmd="/usr/bin/tar -cjpvf"
 ArcDir="/root/backups" #директория в которую будут сохранятся резервные копии
 City="GorodX" #город, для удобства
 bzip2="/usr/bin/bzip2"
 mysqldump="/usr/local/bin/mysqldump"
 lftp="/usr/local/bin/lftp"
 user="userdb" #пользователь БД
 passwd="passwddb" #пароль пользователя БД
 FtpUser="username" #пользователь фтп
 FtpPass="password" #пароль
 FtpServ="**.**.**.**" #ip сервера
 email="mail@example.com"
 $mysqldump -u $user --password=$passwd -l --all-databases | $bzip2 -c -9 > $ArcDir/$City-DB-$Date.sql.bz2
 /usr/local/bin/lftp -u $FtpUser,"$FtpPass" -e "mput -O /$D/ $ArcDir/$City-DB-$Date.sql.bz2; rm $City-DB-$LastDay.sql.bz2; exit" $FtpServ
 rm $ArcDir/$City-DB-$LastDay.tar.bz2
 echo "Backup DB $City finished" | mail -s "DB $City" $email


После завершения бэкапа, скрипт отправляет письмо на адрес прописанный у скрипте. Дляработыскриптанеобходим lftp:

# cd /usr/ports/ftp/lftp/ && make install clean && rehash


Делаем скрипт исполняемым:

# chmod +x backup.sh


И автоматизируем с помощью добавления задания в CRON:

# crontab -e 0 4 * * * /root/backup.sh


Скрипт backup.sh будет запускаться в 4 часа ночи ежедневно. Что может быть лучше? Разве что дописать скрипт, чтобы отправлял ошибки и копию БД на email. Но это в будущем.
Теги:
Автоматизация бэкапа, mysqldump
Добавлено: 01 Марта 2015 10:54:04 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...