mysql 定時指令碼(event),類似oracle的job
1、開啟mysql event(事件)
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
開啟event(事件)
vi /etc/my.cnf
[mysql]
event_scheduler=on
重啟資料庫
service mysql restart
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
2、建立event
DELIMITER $$
CREATE event event_p2
ON SCHEDULE
EVERY 5 MINUTE
STARTS NOW()
DO
BEGIN
CALL p2(160105);
END$$
DELIMITER ;
3、檢視event
mysql> show events\G;
*************************** 1. row ***************************
Db: report
Name: event_p2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2016-05-10 20:09:50
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
開啟event(事件)
vi /etc/my.cnf
[mysql]
event_scheduler=on
重啟資料庫
service mysql restart
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
2、建立event
DELIMITER $$
CREATE event event_p2
ON SCHEDULE
EVERY 5 MINUTE
STARTS NOW()
DO
BEGIN
CALL p2(160105);
END$$
DELIMITER ;
3、檢視event
mysql> show events\G;
*************************** 1. row ***************************
Db: report
Name: event_p2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2016-05-10 20:09:50
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
- CREATE EVENT [IF NOT EXISTS] event_name
- ON SCHEDULE schedule
- [ON COMPLETION [NOT] PRESERVE]
- [ENABLE | DISABLE]
- [COMMENT 'comment']
- DO sql_statement;
- schedule:
- AT timestamp [+ INTERVAL interval]
- | EVERY interval [STARTS timestamp] [ENDS timestamp]
- interval:
- quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
- WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
- DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
其中,
event_name:定時器名,最大長度64個字元,若未指定,則預設為當前的MySQL使用者名稱(不區分大小寫);
schedule:限定執行時間;
ON COMPLETION [NOT] PRESERVE:表示是否需要迴圈複用這個Event;
sql_statement:要執行的SQL語句(也可以使用儲存過程代替傳統的SQL語句);
comment:對該時間排程器的一個註釋,最大長度64個字元;
【關閉事件】
【刪除事件】
【注意】:要使用定時器,MySQL的常量GLOBAL event_scheduler必須為on或者是1.
【範例】
1. 每天凌晨1點開始執行資料更新:
- CREATE EVENT [IF NOT EXISTS] E_testEvent_1
- ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- BEGIN
- call p2();
-
end ;
2. 每月第一天凌晨1點開始執行資料更新(使用儲存過程):
- CREATE EVENT E_testEvent_2
- ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- BEGIN
- CALL p2();
- END
3. 每季度第一天凌晨1點開始執行資料更新:
- CREATE EVENT E_testEvent_3
- ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- UPDATE _T_test SET col= 2 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2097000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle
- ORACLE常用定時備份指令碼Oracle指令碼
- Oracle資料庫定時器JobOracle資料庫定時器
- 小程式的wxs指令碼(類似過濾器)指令碼過濾器
- Mysql定時備份資料指令碼MySql指令碼
- XXL-JOB定時任務框架(Oracle定製版)框架Oracle
- Oracle 定時任務job實際應用Oracle
- 使用oracle job定時傳送email郵件OracleAI
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- MySQL定時器EVENT學習筆記MySql定時器筆記
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- 在dotnet core實現類似crontab的定時任務
- linux啟定時指令碼Linux指令碼
- ElasticSearch類似Mysql的not in 和 in 查詢ElasticsearchMySql
- oracle驗證設定的event是否生效:Oracle
- ORACLE多個event設定方式Oracle
- mysql 效果類似split函式MySql函式
- oracle定時任務dbms_job與dbms_scheduler使用方法Oracle
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- 【Oracle】ORA-23421: job number XXXX is not a job in the job queueOracle
- Oracle 19c中的等待事件分類 Event WaitsOracle事件AI
- 通過 Redis 定時執行指令碼Redis指令碼
- MySQL指令碼MySql指令碼
- 使用bat指令碼執行MySQL命令時遇到的坑BAT指令碼MySql
- Windows ntp時間同步設定(bat指令碼)WindowsBAT指令碼
- oracle job管理(zt)Oracle
- oracle建庫指令碼Oracle指令碼
- ORACLE備份指令碼Oracle指令碼
- Job 類中 $timeout 設定無效 ? - 已關閉
- ORACLE EVENT && ORADEBUGOracle
- MySQL實時計算QPS,TPS的SHELL指令碼兩例MySql指令碼
- MySQL 常用指令碼MySql指令碼
- Oracle中job的使用詳解Oracle
- mysql怎麼清屏?類似於linux的clear怎麼做?MySqlLinux
- 分享Oracle Rman的備份指令碼Oracle指令碼
- Ubuntu伺服器定時執行Python指令碼Ubuntu伺服器Python指令碼
- 巧妙設定job的interval