MySQL数据库 Event 定时执行任务

一、背景

由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间。即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的。在我们项目中由于不清理数据,一个表占的空间竟然达到了4G之多。想想有多可怕...

这里介绍的是用MySQL 建立一个定时器Event,定期清除掉之前的不必要事件。

二、内容

#1、建立存储过程供事件调用
delimiter//
drop procedure if exists middle_proce//
create procedure middle_proce()
begin
DELETE FROM jg_bj_comit_log WHERE comit_time < SUBDATE(NOW(),INTERVAL 2 MONTH);
DELETE FROM jg_bj_order_create WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_order_match WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_order_cancel WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_operate_arrive WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_operate_depart WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_operate_login WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_operate_logout WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_operate_pay WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_position_driver WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_position_vehicle WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
DELETE FROM jg_bj_rated_passenger WHERE created_on < SUBDATE(NOW(),INTERVAL 3 MONTH);
end//
delimiter;

#2、开启event(要使定时起作用,MySQL的常量GlOBAL event_schduleer 必须为on 或者1)
show variables like ‘event_scheduler‘
set global event_scheduler=‘on‘

#3、创建Evnet事件
drop event if exists middle_event;
create event middle_event
on schedule every 1 DAY STARTS ‘2017-12-05 00:00:01‘
on completion preserve ENABLE
do call middle_proce();

#4、开启Event 事件
alter event middle_event on completion preserve enable;

#5、关闭Event 事件
alter event middle_event on completion preserve disable;
时间: 2024-08-30 09:22:48

MySQL数据库 Event 定时执行任务的相关文章

Mysql数据库每天定时执行备份方法

此数据库备份方法是简单的数据库备份方法,就是从Mysql的数据文件下,将数据库文件拷贝到指定的文件夹目录下 1.创建txt文件,添加脚本 net stop mysql xcopy D:\MySql\Data\*.* D:\MySqlDataBack\%date:~0,10%-data\ /y net start mysql 其中 此脚本是拷贝数据的表文件 net stop mysql:停止mysql服务: xcopy D:\MySql\Data\*.* D:\MySqlDataBack\%dat

MySQL数据库的定时自动备份

昨天做了MySQL数据库的备份基本操作的实验,今天试一下MySQL数据库的定时自动备份. 大概思路就是,首先为备份文件单独创建一个目录,然后再目录下创建Shell脚本里写上执行数据库备份的命令,并且给这个Shell脚本添加可执行的权限,最后给这个Shell脚本添加到crond计划任务,让它每天定时执行. 1.首先进入home目录,创建一个mysqlBackup的目录,然后进入这个目录 2.创建一个.sh后缀的文件, 3.编辑Shell脚本,备份所有数据库到/home/mysqlBackup目录下

Java之Mysql数据库DML语句执行

package py.db.com; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import com.mysql.jdbc.PreparedStatement; public class DB_update { public static void main(String[] args) { //TestUp

数据库作业[定时执行任务]的创建 (转帖)

--每月执行的作业exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'--每周执行的作业exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'--每日执行的作业exec p_createjob @jobname='a',@sql='select * from syscolumns'--每

数据库作业[定时执行任务]的创建

--每月执行的作业 exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month' --每周执行的作业 exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week' --每日执行的作业 exec p_createjob @jobname='a',@sql='select * from syscolumn

Linux中使用mysqldump对MySQL数据库进行定时备份

#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH export LANG=en_US.UTF-8 savedir=/log/database_bak/ cd "$savedir" time="$(date +"%Y-%m-%d %H:%M:%S")" mysqldump -u [my_user] -p[my

mysql数据库每日定时自动备份

使用navicat

mysql数据库自动定时备份脚本

1.shell脚本如下: Now=$(date +"%d-%m-%Y") File=/tmp/mysqldump238CEM/MysqlDumpFile238CEM-$Now.sql echo "===备份开始===" echo "备份文件位于本地/tmp/mysqldump238CEM/" mysqldump -uroot -p'skieer#[email protected]' --all-databases > $File echo

转:windows下定时执行备份数据库

上一篇写了linux下定时任务,这一篇转发一个windows下定时备份数据库. 第一种:新建批处理文件 backup.dat,里面输入以下 net stop mysql xcopy "C:\Program Files\MySQL\MySQL Server 5.0\data\piaoyi\*.*" D:\db_backup\%date:~0,10%\ /y net start mysql 注意:批处理命令中路径里有空格的话,必须在路径上加上双引号! 关于时间参数的参考: %date:~0