【摘要】 今天写了一个sh脚本备份数据库,使用linux 定时任务每天执行。 sh脚本:
#!/bin/bash
#数据库用户名
DB_USER=’xxxx’
#数据库密码
DB_PASSWD=’xxxx’
#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
DB_NAME=(xxxxxx)
#数据库主机地址
HOST=xxxxx
#数据库端口…
今天写了一个sh脚本备份数据库,使用linux 定时任务每天执行。
sh脚本:
#!/bin/bash
#数据库用户名
DB_USER='xxxx'
#数据库密码
DB_PASSWD='xxxx'
#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
DB_NAME=(xxxxxx)
#数据库主机地址
HOST=xxxxx
#数据库端口号
PORT=xxxx
#备份时间
CURRENT_BACKUP_TIME=`date +%Y%m%d%H%M%S`
#日志备份路径
LOG_PATH='xxxxx/xxxx/xxxxx'
#数据备份路径
DATA_PATH='xxxxx/xxxx/xxxxx'
#日志记录头部
echo "备份时间为$CURRENT_BACKUP_TIME,备份数据库 $DB_NAME 开始" >> $LOG_PATH/xxxxxxx.log
#正式备份数据库$CURRENT_BACKUP_TIME
for DB in ${DB_NAME[@]};do
source=`mysqldump -u$DB_USER -h$HOST -P$PORT -p$DB_PASSWD $DB > $DATA_PATH/$DB-$CURRENT_BACKUP_TIME.sql` 2>> $LOG_PATH/xxxxxxxx.log;
#备份成功以下操作
if [ "$?" == 0 ];then
cd $DATA_PATH
#为节约硬盘空间,将数据库压缩
tar zcf $DB-$CURRENT_BACKUP_TIME.tar.gz $DB-$CURRENT_BACKUP_TIME.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -f $DATA_PATH/$DB-$CURRENT_BACKUP_TIME.sql
echo "数据库 $DB 备份成功!!" >> $LOG_PATH/xxxxx.log
#删除三十天之前的备份
find $DATA_PATH -name $DB-*.tar.gz -type f -mtime +10 -exec rm -rf {} \; > /dev/null 2>&1 echo "数据库 $DB 10天之前的备份数据被删除!!" >> $LOG_PATH/xxxxx.log
else
#备份失败则进行以下操作
echo "数据库 $DB 备份失败!!" >> $LOG_PATH/xxxxxx.log
fi
done
定时任务:
/var/spool/cron/ 目录下创建
30 2 * * * /mydata/datazhgd/xxxx.sh //这代表每天凌晨两点半执行。
小白注意啦:
1.xxxx的地方自己替换掉。
2.记得sh脚本给执行权限chmod x abc.sh
//abc替换为sh脚本名称
3.记得重启定时任务service crond restart
// centos6 和centos7 centos8 是不同的
4.重新加载定时任务systemctl reload crond.service //centos7 centos8
5.重启定时任务systemctl restart crond
6.如果是在windows上面写的sh脚本,需要把文件格式转为unix格式
具体方法:超级程序员!
剩下需要注意的我去网上找了找大家看看就行。
注意点源地址:
https://www.cnblogs.com/fatfatdachao/p/9229891.html
重启Linux定时任务-crond
可以分为两种情况:
1.在系统中有service这个命令时:
这个命令在red hat当中常用,有的linux发行版本中没有这个命令.
$ service crond start //启动服务
$ service crond stop //关闭服务
$ service crond restart //重启服务
2.linux发行版本没有service这个命令时:
/etc/init.d/cron stop
/etc/init.d/cron start
注意点源地址:
https://www.cnblogs.com/413xiaol/p/6821740.html
这个写的挺详细的
1.编写sh文件
创建:vi test.sh
写入:date >> /xiaol/data.txt
2.默认创建的这个sh问件是没有执行权限的,修改权限
chmod 777 test.sh
3.设置crontab定时任务
打开定时任务配置文件:crontab -e
定时调用test.sh:* * * * * /sambashare/test.sh
4.保存退出
5.如果有错,Linux会在执行的时候发送一份邮件给你
cat /var/spool/mail/root
备注:
定时任务需要crond服务的支持 1.启动方法 service crond restart 2.该服务默认是开机启动的
取消定时任务 1.全部取消 crontab -r 2.取消某个 crontab -e 配置文件,删除要取消的哪一行配置
查看目前都有那些定时任务 crontab -l
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表周日)
* 代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
, 代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
- 代表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
*/n 代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次
例子:
45 22 * * * 在22点45分执行
0 17 * * 1 在每周1的17点0分执行
0 5 1,15 * *
在每月1号和15号的凌晨5点0分执行
40 4 * * 1-5
在每周一到周五的凌晨4点40分执行
*/10 4 * * * 在每天的凌晨4点,每隔10分钟执行一次
0 0 1,15 * 1
每月1号和15号,每周1的0点0分都会执行
注意:星期几和几号最好不要同时出现,他们的意义都是天,容易混淆
编写不易,整理不易,点个赞呗。
文章来源: blog.csdn.net,作者:poe咸鱼,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_37071421/article/details/116232431