shell定时备份mysql数据库中mysqldump文件

#!/bin/bash
#完成定时备份,定义路径
BACKUP=/data/backup/db
#当前时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#调试时间
#echo "${DATETIME}"
echo "----------开始备份------------"
echo "----------备份的路径是 $BACKUP/$DATETIME.tar.gz"
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=123456
#创建备份路径,如果路径存在就是有,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#准备备份
#备份数据库名称
DATABASE=mydemo
#执行备份指令,存放在临时目录$DATETIME文件夹中
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时文件
rm -rf $DATETIME
#删除10天前备份的内容
fing $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "----------备份成功------------"
然后启动定时任务crontab -e

输入下面的语句,表示每天凌晨1点备份一次。

wq保存退出就ok了(就开始执行了)!
可以看到下面的任务已经开启了
[root@hadoop1 sbin]# crontab -l
0 1 * * * /usr/sbin/mysql_db_backup.sh
扩展内容:
crontab[选项]
-e 编辑
-l 查询
-r 删除当前用户的所有crontab任务
service crond restart 重启任务调度
如果只是简单的任务,可以不写脚本,直接在crontab中写入任务即可
crontab -e
输入如下:
*/1 * * * * ls -l /etc >> /tmp/to.txt
五个*号的意思如下:
几分,几点,几号,哪月,哪天
-
5个占位符参数说明
-
第一个* 一小时当中的第几分钟 0-59
-
第二个* 一天中的第几小时 0-23
-
第三个* 一月中的第几天 1-31
-
第4个* 一年中的第几月 1-12
-
第5个* 一周当中的星期几 0-7(0和7都代表星期日)
-
-
特殊字符
-
*代表任何时间,比如一个*就代表一个小时中的每分钟都执行 -
,代表不连续的时间,比如0 8,12,16 * * * *表示每天的8点0分,12点0分,16点0分都执行一次 -
-代表连续的时间范围。比如0 5 * * 1-6代表周一到周六的凌晨5点0分执行一次 -
/n代表每隔多久一次。比如*/10 * * * *命令,代表每隔10分钟执行一次命令
-
-
任务调度案例
- 每隔1分钟,就将日期信息,追加到/tmp/mydate中
1. 编写/home/mytask1.sh date >> /tmp/mydate 2. 给mytask1.sh一个可执行权限 3. crontab -e 4. */1 * * * * /home/mytask1.sh
- 每隔1分钟,就将日期信息,追加到/tmp/mydate中
本文介绍了一种使用Shell脚本实现MySQL数据库定时备份的方法。通过定义备份路径、时间戳、数据库连接信息等,脚本能够自动执行数据库备份,并压缩归档。此外,还介绍了如何设置crontab定时任务,确保每天凌晨1点自动执行备份。
11万+

被折叠的 条评论
为什么被折叠?



