MYSQL 自动备份脚本
1.编辑mysql备份脚本
vim test.sh
1 #!/bin/bash
2 USER=ws
3 PASSWORD=********
4 DATABASE=ws-test1
5 BACKUP_DIR=/root/backup #数据库备份sql文件的绝对路径
6 LOGFILE=/root/backup/data_backup.log #备份数据库的脚本的日志文件
7 DATE=`date +%Y%m%d-%H%M` #获取当前系统时间
8 DUMPFILE=$DATE-ws-test1.sql #备份数据库的sql文件名
9 ARCHIVE=$DUMPFILE-tar.gz #备份的数据库压缩后的文件名
10 MYHOST=118.190.184.140 #备份的数据库所在主机地址
11
12 if [ ! -d $BACKUP_DIR ]; #判断路径是否存在,不存在的话创建此路径
13 then
14 mkdir -p "$BACKUP_DIR"
15 fi
16 echo -e "\n" >> $LOGFILE
17 echo "------------------------------------" >> $LOGFILE
18 echo "BACKUP DATE:$DATE">> $LOGFILE
19 echo "------------------------------------" >> $LOGFILE
20
21 cd $BACKUP_DIR #进入备份路径
22 /usr/bin/mysqldump -h$MYHOST -u$USER -p$PASSWORD $DATABASE > $DUMPFILE #使用mysqldump命令备份数据库
23
24 if [[ $? == 0 ]]; then
25 tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1 #判断是否备份成功,若备份成功,则压缩备份数据库,否则将错误日志写入日志文件中去。
26 echo "$ARCHIVE BACKUP SUCCESSFUL!" >> $LOGFILE
27 rm -f $DUMPFILE
28 else
29 echo "$ARCHIVE Backup Fail!" >> $LOGFILE
30 fi
~
2.定期删除超过一段时间的备份
vim test2.sh
#!/bin/bash
BACKUPDIR="/root/backup" #备份数据库sql文件的绝对路径
KEEPTIME=1 #定义需要删除的文件距离现在时间的天数
DELFILE=`find $BACKUPDIR -type f -mtime +$KEEPTIME -exec ls {} \;`
for delfile in ${DELFILE}
do
rm -f $delfile
done
3.编辑定时任务
crontab -e
#分 时 日(每个月的那一天1-31) 月(一年中的那个月份1 -12)周(一周中的那一天0-6,0代表周日)
00 00 * * * sh test.sh #每天12点本分数据库
00 00 * * 1 sh test2.sh #每个周日12执行删除数据库的脚本