Mysql日常备份
下面shell脚本循环备份MySQL数据库中的所有库,使用时根据情况调整备份目录和mysql的root密码,保留最近14天记录,超过14天备份进行删除,配置在crontab中每天23:30进行备份,备份完之后发送成功邮件
-bash-3.2$ crontab -l
30 23 * * * sh /home/mysql/backup_script/backup_mysql.sh
-bash-3.2$ more /home/mysql/backup_script/backup_mysql.sh
#!/bin/sh
#Author : eymitwu
#Last Modified : 2012-05-18
# mysql_backup.sh: backup mysql databases and keep newest 14 days backup.
# -----------------------------
db_user="root"
db_passwd="test"
db_host="localhost"
logfile=/home/mysql/backup_script/backup.log
# the directory for story your backup file.
backup_dir="/nfsbackup/mysql"
# date format for backup file (dd-mm-yyyy)
time="$(date +"%d-%m-%Y")"
# mysql, mysqldump and some other bin's path
MYSQL="/usr/bin/mysql"
MYSQLDUMP="/usr/bin/mysqldump"
MKDIR="/bin/mkdir"
RM="/bin/rm"
MV="/bin/mv"
GZIP="/bin/gzip"
ADMIN_MAIL="eymitwu@hotmail.com "
echo ".............Backup Script. Running on $time............" >> $logfile
# check the directory for store backup is writeable
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0
# the directory for story the newest backup
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"
# get all databases
all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"
for db in $all_db
do
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"
done
# delete the oldest backup
test -d "$backup_dir/backup.14/" && $RM -rf "$backup_dir/backup.14"
# rotate backup directory
for int in 13 12 11 10 9 8 7 6 5 4 3 2 1 0
do
if(test -d "$backup_dir"/backup."$int")
then
next_int=`expr $int + 1`
$MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"
fi
done
echo ".............Backup Script. Completed,Exiting Now $time............" >> $logfile
SUBJECT="Successfully checking backup mysql log on :`hostname`"
function message {
echo -e "Today's $time checking of backup log has been done \n"
echo -e " See /home/mysql/backup_script/backup.log for more information! \n"
}
message|mail -s "$SUBJECT" "$ADMIN_MAIL"
exit 0;
-bash-3.2$
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21605631/viewspace-742269/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21605631/viewspace-742269/