Linux下使用crontab定时备份MYSQL数据库

step-one:在服务器上创建备份目录:

mkdir /home/alic/workspace/mysql/backup

进入backup目录

cd /home/alic/workspace/mysql/backup

step-two:编写备份脚本代码:

sudo vi dbbackup.sh

添加下面几行shell脚本代码

#!/bin/sh

mysqldump -uuser -ppassword db_name | gzip > /home/alic/workspace/mysql/backup/db_namedate +%Y-%m-%d_%H%M%S.sql.gz

cd /home/alic/workspace/mysql/backup

rm -rffind . -name ‘*.sql.gz’ -mtime 7#删除一个星期(7天)前的备份文件

#end

step-three:更改备份脚本权限

sudo chmod 777 dbbackup.sh

step-four:用crontab定时执行备份脚本代码:

crontab -e

若每天晚上23点00备份,添加如下代码

00 23 * * * /home/alic/workspace/mysql/backup/dbbackup.sh

也可以直接修改/etc/crontab文件,添加上面一行代码

注:任务调度设置文件的写法

可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

具体格式如下:

Minute Hour Day Month Dayofweek command

分钟 小时 天 月 天每星期 命令

每个字段代表的含义如下:

Minute 每个小时的第几分钟执行该任务

Hour 每天的第几个小时执行该任务

Day 每月的第几天执行该任务

Month 每年的第几个月执行该任务

DayOfWeek 每周的第几天执行该任务

Command 指定要执行的程序

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选

字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

举例如下:

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 15 30 45 60分钟执行ls命令 ]

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

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

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

点赞