linux定时备份mysql数据库
直接上脚本代码
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/www/wdlinux/mysql/bin
export PATH
#数据库用户名
dbuser='改成自己的用户名'
#数据库密码
dbpasswd='改成自己的密码'
#排除不备份的数据库其他库全部备份
undb="Database|information_schema|performance_schema|mysql"
#数据库名
dbname=`mysql -u$dbuser -p$dbpasswd -e 'show databases;'|grep -Ev "$undb"`
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#备份日期
backdate=`date +%Y%m%d`
#日志备份路径
logpath='/backup/logs/mysql_backup_log.log'
#数据备份路径
backup_path='/backup/mysql'
backup_dir=${backup_path}/${backdate}
[ ! -d ${backup_dir} ] && mkdir -p ${backup_dir}
#日志记录头部
backup_start_time=`date '+%Y-%m-%d %H:%M:%S'`
echo "数据库备份开始!备份开始时间:${backup_start_time}" >> ${logpath}
#正式备份数据库
for db in $dbname; do
source=`mysqldump -u${dbuser} -p${dbpasswd} --databases ${db} > ${backup_dir}/${db}.sql` 2>> ${logpath};
#备份成功以下操作
cd ${backup_dir}
#为节约硬盘空间,将数据库压缩
#tar jcf ${db}${backtime}.tar.bz2 ${db}${backtime}.sql > /dev/null
tar zcf ${db}.tar.gz ${db}.sql
chattr +i ${db}.tar.gz
#删除原始文件,只留压缩后文件
rm -f ${backup_dir}/${db}.sql
backup_db_time=`date '+%Y-%m-%d %H:%M:%S'`
if [ "$?" == 0 ];then
echo "数据库(${db})备份成功!备份时间:${backup_db_time}" >> ${logpath}
else
#备份失败则进行以下操作
echo "数据库(${db})备份失败!备份时间:${backup_db_time}" >> ${logpath}
fi
done
#删除30前天的备份文件
exp_list=`find ${backup_path} -mtime +30 -type d`
chattr -R -i ${exp_list}
rm -rf ${exp_list}
backup_end_time=`date '+%Y-%m-%d %H:%M:%S'`
echo "数据库备份完成!备份完成时间:${backup_end_time}" >> ${logpath}
echo '-------------------------------------------------------------------' >> ${logpath}然后用crontab每天定时执行脚本#每天凌晨四点执行 00 4 * * * /home/ssh/mysqlbackup.sh