定时执行mysql数据库任务方案

原创 2012年06月29日 22:20:13

命题: 每日 02:00 am 定时删除 表 t (id int primary key,ptime TIMESTAMP DEFAULT CURRENT_TIMESTAMP) 中三天以前的记录。


=======================================
方法一:操作系统
=======================================


(Windows)

在WINDOWS 操作系统中 的计划任务中定时操作,  
进入WINDOWS的命令行, (开始->运行-> 输入 cmd 回车)

C:\>at 02:00 /every:M,T,W,Th,F,S,Su "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -u root -p123 csdn -e "delete from t where ptime <date_sub(curdate(),interval 3 day)"
Added a new job with job ID = 1


C:\>at
Status ID   Day           Time      Command Line
-------------------------------------------------------------------------------
    1   Each Monday...      上午 02:00  "C:\Program Files\MySQL\MySQL
Server 5.1\bin\mysql.exe" -u root -p123 csdn -e "delete from t where ptime <date_
sub(curdate(),interval 3 day)"


C:\>

linux

1、创建backup.sh文件


#!/bin/sh


export MYSQLBAKDATE=`date +%Y%m%d`
# echo $MYSQLBAKDATE
export OUTFILE=$MYSQLBAKDATE'.TestDB.dbf'
# echo $OUTFILE
rm -f /bak/$OUTFILE
/usr/local/mysql/bin/mysqldump -uroot -p****** -R TestDB > /bak/$OUTFILE
gzip /bak/$OUTFILE


#END




如果考虑得再周全点,可以考虑删除一个星期或一个月之前的备份文件。


2、使用crontab -e命令编辑计划任务,加入以下一条记录




30 02 * * * sh /usr/local/mysql/backup.sh




表示在凌晨2点30分做备份

=======================================
方法二:MySQL事件 Event
=======================================

MySQL 5.1.6 之后,你可以直接使用类似于oralce job的mysql event

首先,检查一下你的MYSQL是否打开了这项功能。

mysql> show variables like '%sc%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)


默认下是未打开的,你可以到 my.ini (windows)/ my.cnf (linux/unix) 参数文件中定义后重启mysqld
或者直接 set global event_scheduler=on;

mysql> show variables like '%sc%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)


创建这个event


mysql> CREATE EVENT myevent
    -> ON SCHEDULE EVERY 1 DAY STARTS '2009-10-24 02:00:00'
    -> DO
    ->  delete from t where ptime <date_sub(curdate(),interval 3 day);
Query OK, 0 rows affected (0.09 sec)


mysql> show events;
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
| Db   | Name    | Definer        | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | O
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
| csdn | myevent | root@localhost | SYSTEM    | RECURRING | NULL       | 1              | DAY            | 2009-10-24 02:00:00 | NULL | ENABLED |  
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
1 row in set (0.00 sec)


mysql>


关于EVENT的介绍(很遗憾,没有中文版的)

http://dev.mysql.com/doc/refman/5.1/en/events.html
19.4. Using the Event Scheduler
19.4.1. Event Scheduler Overview  
19.4.2. Event Scheduler Configuration  
19.4.3. Event Syntax  
19.4.4. Event Metadata  
19.4.5. Event Scheduler Status  
19.4.6. The Event Scheduler and MySQL Privileges  

关于create event 的语法和例子。
http://dev.mysql.com/doc/refman/5.1/en/create-event.html
12.1.11. CREATE EVENT Syntax




mysql 数据库Event定时任务使用详解(Navicat 及直接SQL语句创建)

一、使用Navicat创建Event 1、创建一个存储过程让定时任务Event调用: 打开Navicat查询界面: 在上述存储过程中将自定义的sql语句填写到BEGIN与EN...
  • tantexian
  • tantexian
  • 2015年12月15日 16:58
  • 15337

Mysql数据库定时任务

create event myDelete on schedule every 1 minute starts timestamp '2011-7-5 10:36:00'do update ju_aw...
  • woshisap
  • woshisap
  • 2011年07月05日 15:41
  • 8500

ORACLE数据库定时任务

用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。 一、dbms_job涉及到的知识点 1、创建job: variable jobno number; dbms_jo...
  • u013531928
  • u013531928
  • 2015年08月17日 12:31
  • 3157

mysql创建定时任务

一、前言   自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能...
  • mer1234567
  • mer1234567
  • 2012年04月26日 16:20
  • 93366

Quartz实现数据库动态配置定时任务

项目实战 或许实现的方式跟之前的代码有点不一样的 1.定时任务的配置信息 @Configuration public class ScheduleConfigration { @Au...
  • iTommy2016
  • iTommy2016
  • 2017年07月15日 10:31
  • 2261

oracle数据库做定时任务(插入) 笔记

--创建测试表 create table test_user(name varchar2(20),age int,addr varchar2(50)); --创建一个自定义过程 cr...
  • longmapang
  • longmapang
  • 2016年11月22日 16:34
  • 779

oracle数据库定时任务

常要oracle数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作,这时需要用到一个函数dbms_job.submit,来完成Oracle定时器...
  • onisland
  • onisland
  • 2010年09月09日 11:16
  • 11324

Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查

  • 2015年10月02日 00:49
  • 4.64MB
  • 下载

oralce数据库定时任务示例

在web系统开发中,某些系统需要定时执行一些数据库操作。如定期删除数据,定期调用某个存储过程进行报表的统计信息处理等等操作。为了解决这个需求,可以参照如下的几个步骤晚上数据库的定时任务的操作。    ...
  • zzsyzjb
  • zzsyzjb
  • 2011年07月20日 11:53
  • 387

SQL Server 创建定时任务JOB

1.    SQL Server 代理  → 作业(右键)→新建作业   2.  3.   4.  如图  步骤2 数据库选择必须对应的数据库                步骤3在此...
  • sinat_16998945
  • sinat_16998945
  • 2016年09月19日 16:29
  • 9269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定时执行mysql数据库任务方案
举报原因:
原因补充:

(最多只允许输入30个字)