
Мой небольшой скрипт, который переходит у меня по наследству с сервера на сервер.
1. Бекап mysql.
Бекап будет жить в «/opt/backup/mysql/» папки с именами баз создаются автоматически. В зависимости от целей и размеров базы, необходимо решить, как мы будем бекапиться:
«month day» — создаст архивы с затиркой по дням месяца
«week day» — создаст архивы по дням недели.
#!/bin/sh
mysqldump="mysqldump"
mysqlparam="-u <user_from_backup> -p<password_from_backup>"
bzip2="bzip2"
mysqlcheck -Ao ${mysqlparam}
databases=`echo "show databases" | mysql ${mysqlparam} | grep -v "^D"`
dstdir="/opt/backup/mysql/"
# back it up
for dbs in $databases
do
mkdir ${dstdir}/$dbs
#month day
mysqldump $mysqlparam $dbs | gzip > ${dstdir}/$dbs/`date +%d.$dbs.sql`.gz
#week day
#mysqldump $mysqlparam $dbs | gzip > ${dstdir}/$dbs/`date +%u.$dbs.sql`.gz
done
Восстановление из бекапа:
Дописываем в начало выгрузки строчку
CREATE DATABASE IF NOT EXISTS `mydatabase`;
mysql -u <user_from_backup> -p < sql_file.sql
В приглашении вводит пароль.
Или если у нас архив:
gunzip -c дамп.gzip | mysql -u <user_from_backup> -p