linux centos8.2 定时任务备份mysql数据库,sh脚本。

今天写了一个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/ 目录下创建
linux centos8.2 定时任务备份mysql数据库,sh脚本。_第1张图片
linux centos8.2 定时任务备份mysql数据库,sh脚本。_第2张图片

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.如果是在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分都会执行
  注意:星期几和几号最好不要同时出现,他们的意义都是天,容易混淆

编写不易,整理不易,点个赞呗。

你可能感兴趣的:(运维的脚印,shell,ssh,运维,linux)