This is an old revision of the document!
MySQL backup to disk
This script wraps mysqldump to efficiently back up and compress multiple databases to flat files. It supports different passwords and different hosts for each database and a fallback default to simplify configuration if all of the databases are in the same place.
The easiest way to run the script nightly is to use cron, either with a crontab or a reference (link or script) in /etc/cron.daily.
mysql-backup
#!/bin/sh
# Databases
db_list="site_wp"
# Defaults
default_db=""
default_host="localhost"
default_user="mysql-backup"
default_password="1337-pa33w0rd"
# example
#db_dbname_db="dbname"
#db_dbname_host="localhost"
#db_dbname_user="bob"
#db_dbname_password="supersecret"
# site WP
db_site_wp_db="site_wp"
# Directories
#output_dir=.
output_dir=/var/backup/mysql
# End of edit section
# vars to copy
vars="db host user password"
# Process databases
for dbi in $db_list
do
echo "Backing up DB $dbi"
for var in $vars
do
eval val=$`echo db_${dbi}_${var}`
if [ -n "$val" ] ; then
eval $var=${val}
else
eval $var=$`echo default_${var}`
fi
done
mysqldump --opt --host=$host --user=$user --password=$password --compress $db | bzip2 > $output_dir/$dbi.sql.bz2
done