Skip to content

Instantly share code, notes, and snippets.

@mgratch
Created March 2, 2018 15:15
Show Gist options
  • Save mgratch/1f5232f75ee357ce31fd3ed7d88e63c3 to your computer and use it in GitHub Desktop.
Save mgratch/1f5232f75ee357ce31fd3ed7d88e63c3 to your computer and use it in GitHub Desktop.
Prompt to backup DBs over 100mb -- if timeout default to backup
#!/bin/bash
#
# Create individual SQL files for each database automatically,
# but give me a chance to skip it. These files
# are imported automatically during an initial provision if
# the databases exist per the import-sql.sh process.
echo 'Starting custom vagrant halt...';
mysql -e 'show databases' | \
grep -v -F "information_schema" | \
grep -v -F "performance_schema" | \
grep -v -F "mysql" | \
grep -v -F "test" | \
grep -v -F "Database" | \
while read dbname; do
db_size=$(mysql -uroot -ss -N -e "SELECT COALESCE(ROUND(SUM(data_length + index_length) / 1024 / 1024),0) AS 'size' FROM information_schema.TABLES WHERE table_schema = '$dbname'");
if [ 100 -lt $db_size ]; then
while [ -z "$answer" ]; do
read -t 10 -p "$dbname seems large, back it up now? " answer </dev/tty
case "$answer" in
[yY]* ) answer='';
mysqldump -uroot "$dbname" > /srv/database/backups/"$dbname".sql
echo "Database $dbname backed up..."
break;;
[nN]* ) answer=''
break;;
'') answer='';
mysqldump -uroot "$dbname" > /srv/database/backups/"$dbname".sql
echo "Database $dbname backed up..."
break;;
* ) answer=''
echo "Dude, just enter Y or N, please."
continue;;
esac
done
else
mysqldump -uroot "$dbname" > /srv/database/backups/"$dbname".sql && echo "Database $dbname backed up...";
fi
done;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment