前言
本篇主要用于介绍如何在linux服务器下编写备份mysql数据库文件和清理过期备份文件的脚本,以及设置定时任务启动脚本,做到每天定时备份数据库和清理过期备份文件的需求,同时也是一个踩坑记录,本以为网上会有很多相关的博客可以一下子就弄好,没想到花了半天时间,踩了不少坑,有些博客没有写清楚,只是简单地贴了一下命令,应该注意的地方也没有提示,所以这里记录下,希望可以帮到更多人。
整个流程主要分为:
创建备份数据库的文件夹;
编写备份数据库以及清理过期文件的脚本;
编写定时任务,定时启动脚本
创建备份文件夹
# 创建备份文件存放目录
mkdir /home/mysql_data_back
##自动备份,删除过期的脚本
#创建脚本文件autobackupmysql.sh
vim /home/autobackupmysql.sh
#将下面的文本贴入到autobackupmysql.sh,生成文件格式 STAR_D1_20200606_012530.sql;保留7天的数据
db_user="root"
db_pwd="root"
db_name1="STAR_D1"
db_name2="STAR_D2"
bak_dir="/home/mysql_data_back"
time="$(date +"%Y%m%d_%H%M%S")"
#backup STAR_D1 data
mysqldump -u$db_user -p$db_pwd -h127.0.0.1 -P3306 $db_name1 > $bak_dir/${db_name1}_$time.sql
#backup STAR_D2 data
mysqldump -u$db_user -p$db_pwd -h127.0.0.1 -P3306 $db_name2 > $bak_dir/${db_name2}_$time.sql
#remove out-date backup
find $bak_dir -name "$db_name1*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
find $bak_dir -name "$db_name2*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
# 赋予autobackupmysql.sh 执行权限
chmod 777 /home/autobackupmysql.sh
编写定时任务,定时启动脚本
# 启动定时任务
service crond start
# 赋予开机自动启动
chkconfig --level 345 crond on
# 编写定时任务脚本
crontab -e
# 写入文件--每天凌晨3点执行autobackupmysql.sh
00 03 * * * source /home/autobackupmysql.sh
# 重新启动定时任务
service crond start