有的时候为了保险起见我们需要定期对项目所使用数据库的数据进行备份,本篇博客记录如何使用shell脚本+crontab定时任务定期备份MySQL数据库的数据:
1、编写使用mysqldump来进行备份的shell脚本
注:使用mysqldump的前提是你执行shell脚本的服务器上要装了MySQL,否则无法使用
新建Shell Script类型的文件,我这里是叫timeless_database.sh
脚本内容如下:
mysqldump -u数据库的用户名 -p数据库的密码 timeless | gzip > /home/timeless/database/timeless.sql.gz
说明:
由于我这里不用把之前备份的留着,所以文件名用的是固定的,如果想用时间来命名,可把最后的文件名改成以下的:
timeless_$(date + %Y%m%d%H%M%S).sql.gz
2、给shell脚本赋权
chmod u+x timeless_database.sh
3、测试脚本是否有问题
./timeless_database.sh
成功效果如图:
4、添加定时任务
首先看看crontab是否正在运行(一般Linux系统上都会装起有):
service crond status
如果你的Linux上没有crontab,那执行以下命令即可:
yum -y install crontabs
如果确认了crontab正在运行中,则执行以下命令编辑当前用户的定时器(执行完后要按键盘上的“i”才能进入insert模式):
crontab -e
注:
-e :编辑当前用户的定时器
-l:列出当前用户的定时器
-r:删除当前用户的定时器
我这里是每天凌晨两点进行备份,添加的cron表达式如下(最后面是shell脚本存放的绝对路径):
0 2 * * * /home/timeless/database/timeless_database.sh
编辑完后按Esc退出insert模式,接着输入:wq保存退出,注意不用重启crontab
5、测试定时任务是否添加成功
输入以下命令列出当前用户的定时器(我这里只有一个):
crontab -l
至于定时任务是否能在指定时间执行,可以在指定时候过去之后,查看文件的修改时间
附:
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,他的格式共分为六个字段,前五段是时间设定段,第六段是执行命令的段,格式如下:
minute hour day mouth week command
其中
minute:表示分钟,可以是0到59之间的任意整数
hour:表示小时,可以是0到23之间的任意整数
day:表示日期,可以是1到31之间的任意整数
mouth:表示月份,可以是1到12之间的任意整数
week:表示星期几,可以是0到7之间的任意整数,0和7表示星期天
command:要执行的命令,可以是系统命令,也可以是自己的编写的脚本文件
在以上各个字段中,还可以使用特殊符号:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其他条件的约束条件后,每月都执行该命令操作
逗号(,):可以用逗号隔开的值指定一个列表范围,例如 ‘1,2,3,5,7,8’
中杠(-):可以用整数之间的中杠表示一个整数范围,例 “2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例:“0-23/2”表示每两个小时执行一次;同时正斜线可以和星号一起使用,例如“*/10” 如果用在minute字段,表示每十分钟执行一次