简单的MySQL数据库定时备份Shell脚本

这是一个简单的MySQL数据库备份shell脚本,适用于单台Linux服务器或者VPS的mysql数据库备份工作,工作原理是使用mysql的mysqldump工具来导出数据库为.sql文件,然后将所有导出的文件打包归档。使用crontab定时执行脚本即可!

脚本内容:

#!/bin/bash
# description:  MySQL buckup shell script
# author:       sunkai
# web site:     http://www.1987.name/505.html
# last update:  2012-12-03

cd /data/backup   #之前需要创建一个目录用于保存备份数据。
#Set
st=$(date +%s)
user="root"                              #mysql数据库root用户。
password="password"                      #root用户密码。
database="1987_www linuxde_www test"     #需要备份的数据库名,使用空格分隔
mail="abc@gmail.com"                     #备份结果邮件通知,填写需要通知到的邮件地址。
data_dir="/data/mysqldata/database"      #mysql的数据库目录。
mysql_dir="/usr/local/webserver/mysql"   #mysql的安装目录。

#以下不需要做任何修改。
#buckup
list=`echo $database | xargs -n1`
tf=`date +%Y%m%d`
for i in $list
do
        if [ -e $data_dir/$i ];
        then
                $mysql_dir/bin/mysqldump -u$user -p$password $i > $i.sql
                if [ $? -ne 0 ];
                then
                        echo "$i" >> sqldump.log
                fi
        fi
done
tar czf ${tf}-database.tar.gz ./*.sql
rm -fr ./*.sql
et=$(date +%s)
difference=$(( et - st ))
#Mail
if [ -e sqldump.log ];
then
        error=`cat sqldump.log | xargs | tr ' ' '/'`
        echo -ne "
        [VPS数据库] 备份报告
        ------------------------------------------------------
        备份有误!
        错误的库:$error
        备份用时:$difference秒
        文件大小:$(du -sh ${tf}-database.tar.gz | awk '{print $1}')
        备份说明:${tf}-database.tar.gz文件有效期为3天,将在$(date -d "+3 day" +"%Y-%m-%d")删除!
        ------------------------------------------------------
        $(date +"%y/%m/%d  %H:%M:%S")
        " > mail.txt
        mail -s "VPS Database Buckup Report" $mail < mail.txt
        rm -f sqldump.log; rm -f mail.txt
else
        echo -ne "
        [VPS数据库] 备份报告
        -----------------------------------------------------
        备份完成!
        备份用时:$difference秒
        文件大小:$(du -sh ${tf}-database.tar.gz | awk '{print $1}')
        备份说明:${tf}-database.tar.gz文件有效期为3天,将在$(date -d "+3 day" +"%Y-%m-%d")删除!
        -----------------------------------------------------
        $(date +"%y/%m/%d  %H:%M:%S")
        " > mail.txt
        mail -s "VPS Database Buckup Report" $mail < mail.txt
        rm -f sqldump.log; rm -f mail.txt
fi

#删除3天以上的备份文件。
#Cleaning
find /data/backup/ -type f -mtime +2 -name "*-database.tar.gz" -exec rm -f {} \;

添加到定时任务,每天凌晨3天执行备份:

00 03 * * * root /data/backup/dump.sh

最后是要保证mail命令(用于发邮件)可执行即可。

暂无评论

写评论

您必须登录后才可以发表评论。

本人从事电脑网络维护工作多年,对电脑配置较为熟悉,闲暇之余精心搜罗了目前主流电脑配置清单推荐给大家。紧跟市场动态,定期更新电脑硬件配置方案,扫除一切垃圾坑爹配置,提供最具性价比的电脑配置清单!本站涵盖内容包括:电脑组装机配置单、电脑组装机报价、电脑组装机教程等,另外还提供很多技术文章供您学习!