定时执行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




ORACLE数据库定时任务

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

制作支持MySql的Postfix包

RHEL里的postfix默认不支持mysql。 需要重新编译postfix,但是postfix和别的软件联动,所以考虑源码安装后会有一些问题,因此我决定用RHEL提供的postfix的src.rp...

WPF中DataGrid控件的过滤(Filter)性能分析及优化

DataGrid控件是一个列表控件, 可以进行过滤,排序等。本文主要针对DataGrid的过滤功能进行分析, 并提供优化方案。 1)DataGrid的过滤过程:      用户输入过滤条件...

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

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

MySQL数据库的分区表、存储过程、event定时任务的创建

 MySQL数据库中有一个分区表,并且只保留最近三天的;现在有另外一个表,也想修改为相同的模式,需要的步骤有: 整体思路: 将一个表进行分区,并保留最近3天的数据,创建步骤:...

Windows下Spring3.x计划任务实现定时备份MySql数据库

今天在空闲之余查了一下关于MySql数据库备份的方案,最后结合自己的项目情况写了一个关于Spring计划任务的例子,目前我这个版本是在Windwos下测试成功,希望对大家有所帮助,不足之处还请大家多多...

linux定时任务crontab自动备份mysql数据库(ssh/php)

linux crontab mysql 定时备份 shell php

Mysql数据库定时任务自动备份

定时任务自动备份数据库步骤: 1.生成bat脚本 mysql环境: MySQL 安装位置:C:\Program Files\MySQL\MySQL Server 5.5 镇江商务局数据库名...

32-linux任务调度定时备份mysql数据库和文件夹

定时调度备份mysql数据库中的数据实现步骤如下: 在SSH Secure中进行操作 1.在usr目录下面新建bakscript文件夹,来保存任务调度命令文件.sh mkdir baks...

使用linux的定时任务crontab完成mysql数据库跨服务器迁移

利用linux的crontab定时任务功能完成跨服务器mysql数据库数据迁移任务。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定时执行mysql数据库任务方案
举报原因:
原因补充:

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