Skip to content

Instantly share code, notes, and snippets.

@dyp2000
Created February 5, 2020 06:29
Show Gist options
  • Save dyp2000/c703bce411e883d971ea5546fca5a57f to your computer and use it in GitHub Desktop.
Save dyp2000/c703bce411e883d971ea5546fca5a57f to your computer and use it in GitHub Desktop.
Резервное копирование MySQL баз данных. Универсальный скрипт.
#!/bin/bash
echo "Резервное копирование БД mySQL. Версия 1.0 (20201229)"
echo "Автор: Денис Парыгин (dyp2000@mail.ru)"
echo ""
read -p "Укажите путь к архиву: " dest
read -p "Имя базы данных: " database
read -p "Имя пользователя для БД $database: " user
read -sp 'Пароль: ' password
echo ""
now=$(date +%Y-%m-%d_%H%M%S)
filename=$dest/$database/$database\_$now
mkdir -p $dest/$database
echo "Файл архива БД [$database] будет сохранен в $filename"
db_size=$(mysql -u"$user" -p"$password" \
--silent --skip-column-names \
-e "SELECT COALESCE(ROUND(SUM(data_length)/1024/1024, 0), 0) \
FROM information_schema.TABLES \
WHERE table_schema='$database';")
echo "Размер базы данных $db_size Мб"
echo "Копирование базы данных..."
float=`echo "$db_size-$db_size*0.23" | bc`
real_size=${float/.*}
mysqldump -u"$user" -p"$password" $database -C -c -e \
--compress | pv -b -r -e --progress --size "$real_size"m > $filename.sql
echo "Упаковка базы данных..."
pv $filename.sql | pbzip2 -9 > $filename.zip
rm -f $filename.sql
echo "Для распаковки архива используйте pbunzip2"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment