mysql备份策略(包括mysql备份脚本,crontab定时任务的完整备份策略)
1. 策略
- 要备份的库
iot 和 analytics 库
- 每日备份
每天23:00备份一次
- 每小时临时备份
每个小时临时备份一次,每天凌晨删除一天之前的备份
2. 操作
2.1 文件准备
data
目录下准备mysql_dump
目录,用于备份data/mysql_dump
目录下 创建hour_tmp
目录存放每日临时备份文件data/mysql_dump
目录下 创建mysql_dump.sh
脚本(备份脚本)
2.2 备份脚本
#!/bin/bash
#####定义变量#######
date_now=`date +%Y%m%d%H%M`
dump_dir=$1
mysql_user="root"
mysql_ip="127.0.0.1"
mysql_port=3306
mysql_passwd="liubei@161"
####### 定义要备份库库 #################
#要备份的库名一行一个
back_dbs=(
iot
analytics
)
#######开始备份##########
cd ${dump_dir}
### 备份各库##
for back_db in ${back_dbs[@]};
do
mysqldump -h${mysql_ip} -P${mysql_port} -u${mysql_user} -p${mysql_passwd} -l -F ${back_db} > ./${back_db}.sql
tar czf ${back_db}-${date_now}.tar.gz ${back_db}.sql --remove-files
done
2.3 定时任务
策略:
1)每日备份到/data/mysql_dump
,保留15天
2)每小时备份到/data/mysql_dump/hour_tmp
,每天凌晨清空
###########################
# mysql备份相关 #
###########################
#每小时临时备份
30 * * * * /bin/bash /data/mysql_dump/mysql_dump.sh /data/mysql_dump/hour_tmp > /dev/null 2&>1
#每日备份
00 23 * * * /bin/bash /data/mysql_dump/mysql_dump.sh /data/mysql_dump > /dev/null 2&>1
#每天删除按小时临时备份的文件
10 01 * * * /bin/find /data/mysql_dump/hour_tmp -name \*.tar.gz -mtime +1| xargs -I {} rm -rf {}
#保留15天备份
05 01 * * * /bin/find /data/mysql_dump -maxdepth 1 -name \*.tar.gz -mtime +15| xargs -I {} rm -rf {}