Инкрементальный backup баз mySQL

Июнь 9, 2008 at 1:28 пп (помойка справочной инфы) (, , , )

На днях на одном из моих рабочих серверов возникла острая нехватка свободного места на винте. Пришлось в срочном порядке фантазировать. После пары часов активной мозговой деятельности решил принципиально переделать систему резервного копирования БД mysql. Решил сделать инкрементальный бэкап с diff’ом. Ниже скрипт, который в воскресенье делает полный бэкап баз, а в остальные дни инкрементальный с воскресним.

#!/bin/sh

# В воскресенье – полный бэкап баз mysql (список баз
# в переменной databases), по другим дням делается
# diff с бэкапом от воскресенья

# Сохраняются файлы
# по вскр. – имябазы.full.mysql.bz2
# по другим дням – имябазы.день.mysql.diff.bz2

# — General, 07/2006 –

mysqldump=”/usr/local/bin/mysqldump”
mysqlparam=”-u root -ppassword”
bzip2=”/usr/bin/bzip2″
bunzip2=”/usr/bin/bunzip2″
diff=”/usr/bin/diff -bBu”

databases=” dbmail trafd pureftpd “
dstdir=”/usr/home/backup/db” # куда сохранять архивы

day=`date +%w` # номер дня недели

if [ ${day} -eq "0" ]; then

# do full backup

for FLS in ${databases}
do
${mysqldump} ${mysqlparam} ${FLS}| ${bzip2} -c -9 > \ ${dstdir}/${FLS}.full.mysql.bz2
done

else
# do diff with last backup
for FLS in ${databases}
do
${mysqldump} ${mysqlparam} ${FLS} > ${dstdir}/${FLS}.${day}.mysql
${bunzip2} ${dstdir}/${FLS}.full.mysql.bz2
${diff} ${dstdir}/${FLS}.full.mysql ${dstdir}/${FLS}.${day}.mysql|${bzip2} -c -9 \ > ${dstdir}/${FLS}.${day}.mysql.diff.bz2
${bzip2} ${dstdir}/${FLS}.full.mysql
/bin/rm -f ${dstdir}/${FLS}.${day}.mysql
done
fi
Кому надо – пользуйтесь наздоровье.

Вот сейчас написал и подумал: а неплохо было-бы сделать diff не с бэкапом за воскресенье, а с бэкапом за предыдущий день.

нашел тут

Постоянная ссылка Добавить комментарий

Follow

Get every new post delivered to your Inbox.