1、新建一个backup文件夹,用于存放我们的备份文件
Linux系统里,home文件夹一般空间比较充足,可以用来存放我们的备份文件
cd /home mkdir backup
2、 创建一个shell文件,命名为: bk_你的数据库名.sh(或者你自定义也行,最好语义化,一眼看得懂)
vi bk_你的数据库名称.sh
3、在这个shell文件里添加要执行的命令,即备份mysql数据库的命令,并保存
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 数据库名 > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql
如果你要备份成压缩文件的话,可以写成下面这个命令
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 数据库名 | gzip > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
4、修改刚才的shell文件的权限
chmod u+x bk_数据库名.sh
5、可以测试一下这个shell是否能执行,输入文件名即可直接执行
./bk_数据库名.sh
执行后去backup文件夹里看看,是否有导出来的文件
6、查看crontab是否安装(如果已安装则请略过)
安装: yum -y install vixie-cron yum -y install crontabs CentOS中添加开机自动启动: chkconfig --level 345 crond on
7、在crontab中设置定时任务
crontab -e
在里面添加以下命令
59 23 * * * /home/bk_数据库名.sh
保存后,你的shell文件就会被定时执行了
解释一下刚才添加的命令
“ 59 23 * * * ”是crontab的时间规则,即执行周期,我写的这句解析后就是每天的 23:59 执行一次 home目录下的那个bk_数据库名.sh文件
执行周期可以按照自己的需求来设定
8、重启定时任务
/etc/rc.d/init.d/crond restart
到此,我们就完成了每天23:59备份一次数据库到我们的home下的backup文件夹中的操作
9、crontab的格式(有兴趣的可以看看)
它的格式共分为六个字段,前五个字段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 按顺序分别为:分 时 日 月 周
minute: 表示分钟,可以是从0到59之间的任意整数。
hour:表示小时,可以是从0到23之间的任意整数。
day:表示日期,可以是从1到31之间的任意整数。
month:表示月份,可以是从1到12之间的任意整数。
week:表示星期几,可以是从0到7之间的任意整数,这里的0或7代表星期日。
command:表示要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上的各个字段中,还可以使用以下几个特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的条件后每个月都执行该命令操作。
逗号(,):用逗号隔开的值指定一个列表范围,例如,“1,3,5,7”。
中杠(-):用整数之间的中杠表示一个整数范围,例如“3-7”表示“3,4,5,6,7”。
正斜线(/):用正斜线指定时间的间隔频率,例如“0-23/5”表示每五小时执行一次。
同时正斜线可以和星号一起使用,例如*/1,如果用在minute字段,表示每分钟执行一次。
1、举几个栗子:
/home/set.sh
2、 每个星期日的上午6点到10点的第10和第30分钟执行一次home下的set.sh命令
10,30 6-10 * * 0 /home/set.sh
3、 每周一,周三,周五,周日的上午6点到10点的第10和第30分钟执行一次home下的set.sh命令
10,30 6-10 * 1,3,5,7 0 /home/set.sh