mysql定时脚本(event),类似oracle的job

我有2张表:tb_push_data 和 tb_push_data_log

现在需要每隔一段时间将tb_push_data 符合条件的

数据备份到表 tb_push_data_log

www.2cto.com

--------------------------------------------------------------------------

一、创建存储过程

DELIMITER $$

USE `push_server_db`$$

DROP PROCEDURE IF EXISTS `proc_tb_push_data_backup`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_tb_push_data_backup`()

BEGIN

START TRANSACTION;

INSERT INTO tb_push_data_log(id,created_date,data_id,gps,have_image,message,recv_name,
recv_username,send_name,send_username,STATUS,tool,updated_date,uri,image_path,log_time)

SELECT id,created_date,data_id,gps,have_image,message,recv_name,recv_username,send_name,
send_username,STATUS,tool,updated_date,uri,image_path,NOW()

FROM tb_push_data WHERE STATUS = ‘ALREADY_RECEIVE‘;

DELETE FROM tb_push_data WHERE STATUS = ‘ALREADY_RECEIVE‘;

COMMIT;

END$$

DELIMITER ;

二、创建MYSQL事件

DELIMITER $$

CREATE event event_tb_push_data_backup

ON SCHEDULE

EVERY 5 MINUTE

STARTS NOW()

DO

BEGIN

CALL event_tb_push_data_backup();

END;

DELIMITER ;

三、验证并修改数据库是否开启了事件  www.2cto.com

大家按照例子做完以后,可能发现没有运行event,原因大都是因为

event_scheduler状态没打开

查看event_scheduler状态

show variables like ‘%sche%‘;

修改event_scheduler状态

set global event_scheduler=1;

时间: 2024-10-09 19:59:31

mysql定时脚本(event),类似oracle的job的相关文章

MYSQL 定时自动执行EVENT

MySQL从5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了.下面我们来测试下,在MYSQL中如何自动执行指定存储过程,实现相关功能. 一.创建测试表CREATE TABLE EVENT_table(id INT auto_increment PRIMARY KEY NOT NULL,conent VARCHAR(80))ENGINE=INNODB DEFA

MySql类似Oracle的dual虚拟表

在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用. 你可千万注意了: select * from dual; mysql会出错——1096:没有使用到表:而oracle 会返回列:“du”,其值为“X”——行为和只有一行记录的普通表是一样的! select  express [from dual];  mysql总是作为返回该表达式值的普通select语句执行,返回一行记录的结果集,fr

MySQL定时执行脚本(计划任务)命令实例

1 在mysql中我们可以直接进行一些参数设置让它成定时为我们执行一些任务了,这个虽然可以使用windows或者linux中的计划任务实现,但是mysql本身也能完成 2 3 查看event是否开启 4 复制代码 代码如下: 5 6 show variables like '%sche%'; 7 将事件计划开启 8 复制代码 代码如下: 9 set global event_scheduler =1; 10 11 12 创建存储过程test 13 14 复制代码 代码如下: 15 16 CREA

debian mysql 定时自动备份的脚本

#!/bin/sh LOG=/var/log/mysql-backup.log # mysql db info USER_ROOT=XXXXXX USER_PWD=XXXXXXX # mysql data stored dir TODAY=`date +%F` STOREDIR=/mnt/tf-card/mysql-back/$TODAY mkdir $STOREDIR echo "*** PATH:$STOREDIR mysql-backup ***" >> $LOG #

MySQL实现类似Oracle的序列

MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列 Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的: 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长.开始索引.是否循环等:若需要迁移数据库,则对于主键这块,也是个头大的问题. 本文记录了一个模拟Oracle序列的方案

mysql 定时备份bat脚本 ,方便小型服务简单快速备份mysql

mysql定时备份bat脚本 echo 数据库为用户名为root 密码为root 数据库名为kdykt echo mysqldump 命令如果没有配置环境变量要在bin目录下执行 set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%" D: cd D:\phpStudy\MySQL\bin mysqldump --opt -u root --password=root kdykt > kdykt_%Ymd%

MySql 定时备份数据库

转载:MySql 定时备份数据库 每天零点备份一次数据库,备份文件放在指定目录(如果目录不存在则新建),按月存储: 将下面这段命令存储为一个 *.bat 文件,添加一个Windows任务计划程序(Task scheduler)指向这个文件,每天执行一次即可. rem ******Code Start*********** @echo off C: CD C:\Program Files\MySQL\MySQL Server 5.7\bin set "Y=%date:~10,4%" se

crontab中添加定时脚本不生效的原因

最近一段在检查服务器的定时脚本的时候发现了有部分服务器上的mysqldump定时脚本并没有被执行,因为在脚本中有生成日志所以就发现了问题.于是先去/var/log/cron中查看了下日志发现在相应的时候crond有执行相应的脚本,初步分析是是脚本的逻辑有问题于是就去看了下,并且执行了下发现脚本的逻辑是没有问题的,而且直接执行是没有问题的,后来又去/etc/crontab文件里去看了下 发现crontab中的环境变量不一样,但是脚本中有使用绝对路径,最后发现mysqldump中有使用allow-k

使用MySQL Migration Toolkit快速导入Oracle数据

近来笔者有项目需要将原有的Oracle数据库中的数据导入到MySQL中,经过试用发现MySQL GUI Tools中的MySQL Migration Toolkit可以非常方便快捷的将Oracle数据导到MySQL中,特别是对CLOB.BLOB类型的数据也有非常好的支持.下面笔者来介绍一下MySQL Migration Toolkit的使用,该软件可以在http://dev.mysql.com/downloads/gui-tools/5.0.html处下载到. 1. 运行MySQL Migrat