• 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 CREATE PROCEDURE test () 
     17 BEGIN 
     18 update examinfo SET endtime = now() WHERE id = 14; 
     19 END; 
     20 创建event e_test
     21 复制代码 代码如下:
     22 
     23 create event if not exists e_test 
     24 on schedule every 30 second 
     25 on completion preserve 
     26 do call test(); 
     27 每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
     28 关闭事件任务
     29 复制代码 代码如下:
     30 
     31 alter event e_test ON 
     32 COMPLETION PRESERVE DISABLE; 
     33 开户事件任务
     34 复制代码 代码如下:
     35 
     36 alter event e_test ON 
     37 COMPLETION PRESERVE ENABLE; 
     38 以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(GPL)
     39 以上的相关内容就是对MySQL定时执行的介绍,望你能有所收获。
     40 mysql 计划任务重启后消失
     41 我们只要修改一配置即可
     42 event_scheduler在mysql的config中设置为OFF有关。去mysql中将配置改为ON则就搞定了。
     43 
     44 更详细的大家可以往下看
     45 MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。
     46 要查看当前是否已开启事件调度器,可执行如下SQL:
     47 SHOW VARIABLES LIKE 'event_scheduler';
     48  49 SELECT @@event_scheduler;
     50  51 SHOW PROCESSLIST;
     52 若显示:
     53 +-----------------+-------+
     54 | Variable_name   | Value |
     55 +-----------------+-------+
     56 | event_scheduler | OFF   |
     57 +-----------------+-------+
     58 则可执行
     59 SET GLOBAL event_scheduler = 1;
     60  61 SET GLOBAL event_scheduler = ON;
     62 来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:
     63 mysqld ... --event_scheduler=1
     64 my.ini or my.cnf 中的
     65 [mysqld]
     66 添加 event_scheduler=ON
     67 创建事件(CREATE EVENT)
     68 先来看一下它的语法:
     69 CREATE EVENT [IF NOT EXISTS] event_name
     70 ON SCHEDULE schedule
     71 [ON COMPLETION [NOT] PRESERVE]
     72 [ENABLE | DISABLE]
     73 [COMMENT 'comment']
     74 DO sql_statement;
     75 schedule:
     76 AT TIMESTAMP [+ INTERVAL INTERVAL]
     77 | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
     78 INTERVAL:
     79 quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
     80             WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
     81             DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
     82 1)首先来看一个简单的例子来演示每秒插入一条记录到数据表
     83 USE test;
     84 CREATE TABLE aaa (timeline TIMESTAMP);
     85 CREATE EVENT e_test_insert
     86 ON SCHEDULE EVERY 1 SECOND 
     87 DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
     88 等待3秒钟后,再执行查询成功。
     89 2) 5天后清空test表:
     90 CREATE EVENT e_test
     91 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
     92 DO TRUNCATE TABLE test.aaa;
     93 3) 2007年7月20日12点整清空test表:
     94 CREATE EVENT e_test
     95 ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
     96 DO TRUNCATE TABLE test.aaa;
     97 4) 每天定时清空test表:
     98 CREATE EVENT e_test
     99 ON SCHEDULE EVERY 1 DAY
    100 DO TRUNCATE TABLE test.aaa;
    101 5) 5天后开启每天定时清空test表:
    102 CREATE EVENT e_test
    103 ON SCHEDULE EVERY 1 DAY
    104 STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    105 DO TRUNCATE TABLE test.aaa;
    106 6) 每天定时清空test表,5天后停止执行:
    107 CREATE EVENT e_test
    108 ON SCHEDULE EVERY 1 DAY
    109 ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    110 DO TRUNCATE TABLE test.aaa;
    111 7) 5天后开启每天定时清空test表,一个月后停止执行:
    112 CREATE EVENT e_test
    113 ON SCHEDULE EVERY 1 DAY
    114 STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    115 ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
    116 DO TRUNCATE TABLE test.aaa;
    117 [ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。
    118 8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):
    119 CREATE EVENT e_test
    120 ON SCHEDULE EVERY 1 DAY
    121 ON COMPLETION NOT PRESERVE
    122 DO TRUNCATE TABLE test.aaa;
    123 [ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
    124 [COMMENT ‘comment']可以给该事件加上注释。
    125 修改事件(ALTER EVENT)
    126 ALTER EVENT event_name
    127 [ON SCHEDULE schedule]
    128 [RENAME TO new_event_name]
    129 [ON COMPLETION [NOT] PRESERVE]
    130 [COMMENT 'comment']
    131 [ENABLE | DISABLE]
    132 [DO sql_statement]
    133 1) 临时关闭事件
    134 ALTER EVENT e_test DISABLE;
    135 2) 开启事件
    136 ALTER EVENT e_test ENABLE;
    137 3) 将每天清空test表改为5天清空一次:
    138 ALTER EVENT e_test
    139 ON SCHEDULE EVERY 5 DAY;
    140 删除事件(DROP EVENT)
    141 语法很简单,如下所示:
    142 DROP EVENT [IF EXISTS] event_name
    143 例如删除前面创建的e_test事件
    144 DROP EVENT e_test;
    145 当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS
    146 DROP EVENT IF EXISTS e_test;
  • 相关阅读:
    【转载】C/C++中extern关键字详解
    【转载】extern "C"的用法解析(原博主就是抄百度百科的,不如另外一篇好)
    lua Date和Time
    MySQL-Linux安装
    Hive-0.13安装
    MR案例:单表关联查询
    MR案例:小文件处理方案
    MR案例:链式ChainMapper
    MR案例:定制Partitioner
    MR案例:多文件输出MultipleOutputs
  • 原文地址:https://www.cnblogs.com/wujindong/p/5432199.html
Copyright © 2020-2023  润新知