crontab调用sh脚本定时备份mysql数据

crontab调用sh脚本定时备份mysql数据

一、启动mysql数据库

/ usr / local / mysql / bin / mysqld_safe  - user = mysql  &


二、编写sql脚本

SET   @TableName = CONCAT( ' sendrecord ' ,DATE_FORMAT(DATE_SUB(CURDATE() ,INTERVAL  1   month ), ' %Y%m ' )); 
SET   @BeginTime = DATE_SUB(DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE()) - 1   day ),INTERVAL  1   month ); 
SET   @EndTime = DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE()) - 1   day ); 
SET   @CreateSqlStr = CONCAT(" CREATE   TABLE  `", @TableName ,"`  AS   SELECT   *   FROM  sendrecord  WHERE  sendtime  >   ' ",cast(@BeginTime as char)," 00:00:00 '   and  sendtime  <   ' ",cast(@EndTime as char)," 00:00:00 ' "); 
SELECT   @CreateSqlStr
PREPARE  CR  FROM   @CreateSqlStr
EXECUTE  CR;

SET   @DeleteSqlStr = CONCAT(" DELETE   FROM  sendrecord  WHERE  sendtime  >   ' ",cast(@BeginTime as char)," 00:00:00 '   and  sendtime  <   ' ",cast(@EndTime as char)," 00:00:00 ' "); 
SELECT   @DeleteSqlStr
PREPARE  DE  FROM   @DeleteSqlStr
EXECUTE  DE;

SET   @CommitSqlStr = CONCAT(" COMMIT "); 
SELECT   @CommitSqlStr
PREPARE  CO  FROM   @CommitSqlStr
EXECUTE  CO;


三、编写sh脚本

# !/bin/sh
PATH =/ opt / mono / bin :/ usr / kerberos / sbin :/ usr / kerberos / bin :/ usr / local / sbin :/ usr / local / bin :/ sbin :/ bin :/ usr / sbin :/ usr / bin :/ usr / X11R6 / bin :/ usr / local / java / bin :/ root / bin :/ usr / local / mysql / bin
export PATH

mysql 
- uxuanwu  - p123456  << EOF
use  xuanwu;
source 
/ root / Toby / create . sql

此脚本需注意必段段导入path变量才行,mysql连接-u-p后面跟的值无需空格才行的
四、启动crontab

56   16   16   *   *   / root / Toby / ts . sh  >>   / tmp / backup . txt

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

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

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字

你可能感兴趣的:(crontab调用sh脚本定时备份mysql数据)