Skip to content

Instantly share code, notes, and snippets.

@evansims
Created November 13, 2012 01:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evansims/4063280 to your computer and use it in GitHub Desktop.
Save evansims/4063280 to your computer and use it in GitHub Desktop.
SQL Backups0rz
#!/bin/bash
mysql_user="root"
mysql_password="ROOT_PASSWORD"
backup_dir=/home/you/backups
mysqldump_options="--skip-opt --add-drop-database --add-drop-table --add-locks --compact --complete-insert --create-options --disable-keys --events --extended-insert --flush-logs --flush-privileges --lock-tables --quick --quote-names --routines --set-charset --single-transaction --triggers"
####################
stamp=$(date +%s)
temp="/tmp/backup_temp"
touch "$temp"
mkdir $backup_dir/$stamp
####################
echo -ne "Enumerating databases ... "
databases=( $(mysql --user=$mysql_user --password=$mysql_password --skip-column-names --batch -e "show databases;" 2>"$temp") );
echo "found ${#databases[@]}.";
tables=0
echo -ne "Backing up databases ... "
for i in ${databases[@]}; do
if [ $i != "performance_schema" ] && [ $i != "information_schema" ] && [ $i != "phpmyadmin" ] && [ $i != "test" ]; then
echo -ne "$i "
mysqldump --user=$mysql_user --password=$mysql_password $mysqldump_options --databases $i | pigz > "$backup_dir/$stamp/$i.sql.gz"
fi
done
echo "Done"
0 */4 * * * sudo /your/path/backup.sh > /dev/null
apt-get install pigz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment