- → Программирование
- → MySQL
- → Статьи
Автоматизация бэкапа БД с помощью mysqldump

После скачивания и распаковки архива настраиваем работу скрипта: 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="[email protected]" $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
Development — Taras Moroz