使用crond定时跑脚本备份数据库 您所在的位置:网站首页 脚本10r 使用crond定时跑脚本备份数据库

使用crond定时跑脚本备份数据库

2023-05-20 05:29| 来源: 网络整理| 查看: 265

前言:

开发环境

服务器:centos 7(腾讯云轻量服务器)

数据库:mysql 5.7

一、crond是什么?

        crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

二、使用步骤 1.crond常用命令  检测系统是否安装crond服务crond服务命令说明service crond start //启动服务service crond stop //关闭服务service crond restart //重启服务service crond reload //重新载入配置service crond status //查看crontab服务状态crontab -e #编辑crontab定时任务crontab -l #查询crontab任务crontab -r #删除当前用户所有的crontab任务systemctl status crond.service #查看crond系统服务的状态  1.1启动服务

service crond start

1.2 添加任务

crontab -e

1.3 查看任务是否添加成功

crontab -l

2.crond定时任务格式

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

0002***/back.shminutehourdaymonthweekcommand #定时脚本 下面的意思就是 每天的凌晨2点执行一次脚本 (根据自己的需求执行脚本) 00 02 * * * /usr/local/mysql/mysqlzip/back.sh

其中:

minute:表示分钟,可以是从0到59之间的任何整数。hour:表示小时,可以是从0到23之间的任何整数。day:表示日期,可以是从1到31之间的任何整数。month:表示月份,可以是从1到12之间的任何整数。week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

注意:脚本的路径必须是脚本全路径(全路径:就是通过pwd命令获取的路径)

3.编写脚本 修改1:数据库用户名修改2:数据库密码修改3:数据库名修改4:备份文件的存储位置修改5:mysqldump 的文件地址(可以使用 whereis mysqldump 查询mysqldump 所在位置)修改6:超过7个文件删除最早备份的文件 ,根据自己的实际需求更改;添加目的为了防止备份太多占用太多存储。 #!/bin/bash echo '##########################################' echo '###### The database is automatically backed up at 01:00 am every day ######' echo '##########################################' # Setting environment variables DATE=$(date +%Y_%m_%d_%H_%M_%S) # $(date +%Y%m%d) # 数据库用户名 USERNAME=修改1 # 密码 PASSWORD=修改2 # 要备份的数据库 DB=修改3 # Docker容器ID #DOCKERID=******** # ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。 # Linux服务器上备份文件目录 修改4 DIR=/usr/local/mysql/mysqlzip echo 'Get system date: ' $DATE if [ ! -d "$DIR" ]; then mkdir $DIR fi cd $DIR echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S") # 使用docker进入mysql容器,执行mysqldump备份数据库文件 # docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称 #docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DB | gzip > $DIR/$DB_$DATE.sql.gz # 备份 直接安装在 linux 系统中的数据库 修改5 /usr/local/mysql/bin/mysqldump -u$USERNAME -p$PASSWORD $DB | gzip > $DIR/$DB_$DATE.sql.gz # just backup the latest 7 days #保留最近文件数7,删除其它多余的文件 修改6 (也可以去掉 主要为了防止备份太多占用太多存储) ReservedNum=7 date=$(date "+%Y%m%d-%H%M%S") FileNum=$(ls -l $DIR|grep ^- |wc -l) while(( $FileNum > $ReservedNum)) do OldFile=$(ls -rt $DIR| head -1) echo $date "Delete File:"$OldFile rm -rf $DIR/$OldFile let "FileNum--" done echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S") 3.1 检测运行 刚刚编写好的 sh脚本

赋予权限,运行

chmod 777 back.sh

然后测试运行sh脚本

./back.sh

总结

 有了crontab在也不用担心忘记备份数据库了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有