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