linux编写定时任务定期备份数据库
参考博客:https://blog.csdn.net/weixin_60531485/article/details/123453445
1、编写脚本
#如果脚本文件从win编辑完再上传到linux,执行时可能会提示‘\r’未找到命令,需vim编辑时:set fileformat=unix 并回车
#获取开始时间
NOW=$(date "+%Y%m%d_%H-%M-%S")
echo "*- 当前时间:$NOW -*"
#备份文件的目录
BACKUP=/usr/local/mysql/data/backup
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=123456
#备份的数据库
DATABASE=test
echo "*- 正在进行备份数据库$DATABASE......"
#创建备份文件目录,若不存在则创建
#每次备份的文件放在/usr/local/mysql/data/backup下,对应备份时的时间
[ ! -d $BACKUP/$NOW ] && mkdir -p $BACKUP/$NOW
#创建备份文件的变量,数据库备份文件以.sql结尾,备份后还需将文件压缩为.gz文件,所以改文件名定义为备份时间.sql.gz
FILE=$BACKUP/$NOW/$NOW.sql.gz
#进行备份并使用gzip压缩
mysqldump -u$DB_USER -p$DB_PWD --host=$HOST -q -R --database $DATABASE | gzip > $FILE
# docker备份数据库使用命令
# docker exec mysql sh -c "exec mysqldump -u$DB_USER -p$DB_PWD linlian" | gzip > $FILE
#检验文件是否备份成功
if [ -f $FILE -a -s $FILE ]
then
echo "***备份成功"
else
echo "***备份失败!在查看到此提示信息后请及时检查并处理!"
fi
#打包备份文件的压缩文件及上级目录
FILE=$NOW.tar.gz
#切到/usr/local/mysql/data/backup/目录,并发送提示信息
cd $BACKUP
echo "*- 正在将备份资源打包为$FILE"
#打包
tar -zvcf $BACKUP/$FILE $NOW
#备份结束,删除备份目录
rm -rf $NOW
#找到指定目录下,120天以前的文件并删除
find $BACKUP -atime +120 -name "*.tar.gz" -exec rm -rf {} \;
#获取结束时间
NOW=$(date "+%y-%m-%d_%H:%M:%S")
echo "*- 数据库$DATABASE备份已完成"
echo "*- 当前时间:$NOW -*"
2、linux编写定时任务
- crontab -e:进入定时任务编辑模式
2)写入:[linux的cron表达式] * 3 * * * [脚本路径]
3)退出保存
cron表达式参考:cron表达式在线工具
3、crontab -l 查看检查任务是否建立