Войти Регистрация

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


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

После скачивания и распаковки архива настраиваем работу скрипта: 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. Но это в будущем.



Дальше: Определить ajax запрос на PHP


Дискуссия по теме     0 Комментариев
Добавить комментарий
Просмотров: 6488