Скрипт резервирования БД MySQL

Скрипт архивирует все БД MySQL в отдельный файл вида:
mysqlfull.2015-11-05-21-47.sql.gz

по отдельности каждую БД:
adm.2015-11-05-21-47.sql.gz
otr.2015-11-05-21-47.sql.gz
red.2015-11-05-21-47.sql.gz

создает лог файл:
mysql_backup_all_2015-11-05-21-47.log

удаляет архивные копии старше 32 дней;

Утилитой mysqlcheck восстанавливает и оптимизирует все БД в соответствии с рекомендациями MySQL и OTRS:

#!/bin/bash
h="localhost"
user="debian-sys-maint"
pass="pass"
#Привилегии  SELECT, LOCK TABLES
datename=$(date +%F-%H-%M)
BackupDir="/Backup/sql"
find $BackupDir/ -mtime +32 -exec rm -rf {} \;
LOG="$BackupDir/mysql_backup_all_$datename.log"
touch $LOG
TIMEDUMP=`date '+%T %x'`
echo "Бэкапы всех БД начаты в $TIMEDUMP" > $LOG
echo "Директория с бэкапами: $BackupDir" >> $LOG
datename=$(date +%F-%H-%M)
mysqldump -u $user -h$h -p$pass --lock-tables --add-drop-database --all-databases | gzip -c > $BackupDir/mysqlfull.$datename.sql.gz
echo "Создан бэкап всех БД full.$datename.sql.gz" >> $LOG
db="adm otr red"
for n in $db; do
mysqldump -u $user -h$h -p$pass --lock-tables --add-drop-database $n | gzip -c > $BackupDir/$n.$datename.sql.gz
echo "Создан бэкап БД $n" >> $LOG
done
TIMEDUMP=`date '+%T %x'`
echo "Бэкапы всех БД успешно созданы в $TIMEDUMP" >> $LOG
#восстановление БД
echo "#восстановление БД" >> $LOG
/usr/bin/mysqlcheck --all-databases --medium-check --auto-repair -udebian-sys-maint -p$pass >> $LOG 2>&1
echo "******************************************** " >> $LOG
#оптимизация всех БД
echo "#оптимизация всех БД" >>$LOG
/usr/bin/mysqlcheck -o --all-databases -udebian-sys-maint -p$pass >> $LOG 2>&1
echo "******************************************** " >> $LOG
#EOF

Где пользователь udebian-sys-maint и пароль для него сгенерированы автоматически при установке MySQL сервера для его внутренних нужд. Находится он в /etc/mysql/debian.cnf.

 

Закладка Постоянная ссылка.

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

Ваш e-mail не будет опубликован.

*