Способ автоматического бэкапа баз 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
- дамп базы, сделанный сриптом
а нельзя сразу бэкапить в gz? не силен, как правильно добавить?
mysqldump -u root -p base| gzip > base.sql.gz
Можно и команда написана верно, должно работать