Бэкап баз mysql с помощью скрипта

Автор: Admin | 30.09.2013

Способ автоматического бэкапа баз mysql при помощи утилиты mysqldump

Сам скрипт бэкапа без предисловий:

#!/bin/sh
########################
### Переменные
# Текущая дата
TIME=`date +%Y-%m-%d`
# Логин пользователя мускула
USER=root
# Пароль пользователя мускула
PASS=root_password
# Куда кладем бэкап
WHERE=/home/backup/mysql
# Куда копируем бэкап (бэкапов много не бывает:)
COPY=/dyrectory/mysql
########################
### Базы которые надо бэкапить
for base in base_name1 base_name2
do
########################
### Сам бэкап
# Делаем дамп баз
mysqldump -u$USER -p$PASS -B $base > $WHERE/$base-$TIME.sql
########################
### Дополнительные команды
# Копируем дампы 
cp $WHERE/$base-$TIME.sql $COPY
# Удаляем файлы месячной давности
find $WHERE -mtime +30 -print -delete
find $COPY -mtime +30 -print -delete
done

В результате выполнения скрипта в /home/backup/mysql появятся два дампа баз base_name1-2013-09-30.sql и base_name2-2013-09-30.sql, которые будут скопированы в /dyrectory/mysql.


Дампы можно сразу сжимать, если мало места или они больших размеров:

# Если надо, то сжимаем дампы
gzip -cf9 $WHERE/$base-$TIME.sql > $WHERE/$base-$TIME.gz
# И удаляем их, оставив только архивы
rm $WHERE/$base-$TIME.sql

Естественно, в этом случае, надо копировать вместо дампов $WHERE/$base-$TIME.sql архивы — $WHERE/$base-$TIME.gz:

cp $WHERE/$base-$TIME.gz $COPY

Восстановление базы из бэкапа
Восстановить базу из бэкапа можно следующим образом:

mysql -u root -p root_password -f base_name1 < /home/backup/mysql/base_name1.sql

Где
base_name1 — название базы в mysql сервере которую надо восстановить
base_name1.sql — дамп базы, сделанный сриптом

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *