您的位置:首页 > 运维架构 > Linux

linux下使用定时任务完成mysql定期备份

2017-12-12 16:09 585 查看
Crontab相关

首先,定时任务需要安装crontab

执行crontab 命令如果报command
not found,就表明没有安装。

 

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。可以用以下的方法启动、关闭这个服务:

 

/sbin/service crond start //启动服务

 

/sbin/service crond stop //关闭服务

 

/sbin/service crond restart //重启服务

 

/sbin/service crond reload //重新载入配置

 

1.linux任务调度的工作主要分为以下两类:

 

*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

 

*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

 

2.crontab命令选项:

 

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

 

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

 

crontab -l //列出某个用户cron服务的详细内容

 

crontab -r //删除没个用户的cron服务

 

crontab -e //编辑某个用户的cron服务

 

比如说root查看自己的cron设置:crontab -u root -l

 

再例如,root想删除fred的cron设置:crontab -u fred -r

 

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

 

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

 

3.cron文件语法

 

   分     小时      日       月       星期      命令

 

 0-59   0-23   1-31  1-12     0-6     command    (取值范围,0表示周日一般一行对应一个任务)

 

4.记住几个特殊符号的含义:

 

"*"代表取值范围内的数字,

 

"/"代表"每",

 

"-"代表从某个数字到某个数字,

 

","分开几个离散的数字

 

5.举几个例子

 

5      *       *       *     *     ls              //指定每小时的第5分钟执行一次ls命令

 

30    5       *       *     *     ls              //指定每天的 5:30 执行ls命令

 

30    7       8       *     *      ls             //指定每月8号的7:30分执行ls命令

 

30    5       8       6     *      ls             //指定每年的6月8日5:30执行ls命令

 

30    6       *       *     0      ls             //指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

 

30    3   10,20     *     *      ls             //每月10号及20号的3:30执行ls命令[注:”,”用来连接多个不连续的时段]

 

25    8-11  *        *    *      ls             //每天8-11点的第25分钟执行ls命令[注:”-”用来连接连续的时段]

 

*/15  *      *        *    *      ls            //每15分钟执行一次ls命令 [即每个小时的第0 1530 45 60分钟执行ls命令 ]

 

30    6    */10      *    *      ls            //每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]

 

50   7       *         *    *     root run-parts /etc/cron.daily   //每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

 

备份相关

安装完成后,就可以编写shell脚本进行定期备份mysql了

创造一个shell文件

vi DatabaseName.sh(名字随便取)

 

输入:

#!/bin/bash

mysqldump -uusername -ppasswordDatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

 

注:username为账号名password为密码DatabaseName为要备份的数据库,如果没有权限,可以使用root账户进行备份,保存路径自己定。

 

如果要进行压缩,使用如下命令:

#!/bin/bash

mysqldump -uusername -ppasswordDatabaseName | gzip > /home/backup/DatabaseName_$(date+%Y%m%d_%H%M%S).sql.gz

 

编写完毕后,可以先运行一下看是否可以使用。

./bkDatabaseName.sh

 

如果可以使用,那么添加到计划任务。

crontab –e

和vi一样可以进行编辑。然后添加任务,比如

*/1 * * * * /home/backup/bkDatabaseName.sh

 

注:此命令效果为每分钟执行一次,时间设置参考Crontab相关。

 
保存退出然后定时完成备份的效果就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 备份 linux