linux设置crontab定时执行脚本备份mysql

时间:2023-03-08 20:18:51

前言:mysqldump备份数据库命令

mysqldump -u root -psztx@2018 fengliuxiaosan > /dbbackup/fengliuxiaosan.sql
###mysqldump -u 用户 -p密码 数据库名 > 存放路径/数据库名.sql

使用命令 crontab -e 然后直接编辑定时脚本。

这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。

如:

[root@localhost ~]# crontab -l
*/ * * * * /usr/bin/curl http://www.xxx.com/Scheduled/Index
* * * /bin/sh /dbbackup/backup.sh ##就是这一条定时任务,

新建备份目录和创建backup.sh脚本文件,这些命令和目录都可以自定义

mkdir /dbbackup
cd /dbbackup/
vi backup.sh

下面看这个backup.sh的代码

#!/bin/bash
user=root ##数据库用户名
passwd=fengliuxiaosan ###数据库密码
back_dir="/dbbackup" ##指定保存备份数据库的目录
dbname="fengliuxiaosan" ###指定数据库名
date=`date +%F` ##指定命名
mysqldump -u $user -p$passwd $dbname > $back_dir/$dbname-$date.sql ###使用mysqldump来执行备份指定数据库
tar -czvf $back_dir/$dbname-$date.tar.gz $back_dir/$dbname-$date.sql ##打包压缩备份的sql文件为.tar.gz格式
rm -f $back_dir/$dbname-$date.sql ###删除备份的sql文件,因为上面已经压缩了。这个就不需要了
find $back_dir -mtime + -name "*.tar.gz" -exec rm -rf {} \; ###执行指定时间查找命令,删除时间格式多的压缩包。不然每天压缩一个,磁盘会占满。

最后别忘了给执行的权限!

chmod +x backup.sh

完成,就等时间查看目录的压缩包文件。