Linux下如何實現(xiàn)Mysql定時任務(wù)
假設(shè)前提:每天晚上10點到早上5點,每10分鐘定時執(zhí)行存儲過程。
實現(xiàn)方式:
第一種是利用Mysql本身實現(xiàn),制定event定時任務(wù),可以借助Navicat For Mysql或其他數(shù)據(jù)庫開發(fā)工具去做;
第二種實現(xiàn)方式是利用linux的定時任務(wù),這個是利用Linux系統(tǒng)自帶任務(wù)管理工具實現(xiàn)的。
一、Mysql中event定時任務(wù)的相關(guān)命令,
1.查看event是否啟用:
SELECT @@event_scheduler; 或 SHOW VARIABLES LIKE 'event%';
2.開啟定時任務(wù):
set GLOBAL event_scheduler = 1; 或 SET GLOBAL event_scheduler = ON;
3.建立定時任務(wù):
DROP EVENT IF EXISTS JOB_ALARM; CREATE EVENT JOB_ALARM ON SCHEDULE EVERY 10 MINUTE DO BEGIN if(date_format(current_time(),'%H')>22 || date_format(current_time(),'%H')<5) THEN CALL PRO_ALARM(); END IF; END
4.建立存儲過程:
DROP PROCEDURE IF EXISTS PRO_ALARM;
CREATE PROCEDURE PRO_ALARM()
BEGIN
DECLARE userId VARCHAR(32);
#這個用于處理游標(biāo)到達(dá)最后一行的情況
DECLARE s INT DEFAULT 0;
#聲明游標(biāo)cursor_name(cursor_name是個多行結(jié)果集)
DECLARE cursor_data CURSOR FOR
SELECT tmp.USER_ID
FROM (
SELECT
e.USER_ID,
MAX(e.TIME_GMT) TIME_GMT
FROM EVENTS e
GROUP BY e.USER_ID
HAVING MAX(e.TIME_GMT) < UNIX_TIMESTAMP() - 60 * 30
AND MAX(e.TIME_GMT) > UNIX_TIMESTAMP() - 60 * 60 * 24) tmp
INNER JOIN EVENTS t ON tmp.USER_ID = t.USER_ID
AND tmp.TIME_GMT = t.TIME_GMT
WHERE TYPE_ID != '34001';
#設(shè)置一個終止標(biāo)記
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = 1;
OPEN cursor_data;
#獲取游標(biāo)當(dāng)前指針的記錄,讀取一行數(shù)據(jù)并傳給變量a,b
FETCH cursor_data
INTO userId;
#開始循環(huán),判斷是否游標(biāo)已經(jīng)到達(dá)了最后作為循環(huán)條件
WHILE s <> 1 DO
INSERT INTO EVENTS_NOTIFICATION VALUES (NULL, SYSDATE(), UNIX_TIMESTAMP(SYSDATE()),
UNIX_TIMESTAMP(SYSDATE()), '00000', userId, '1', '0');
#讀取下一行的數(shù)據(jù)
FETCH cursor_data
INTO userId;
END WHILE;
#關(guān)閉游標(biāo)
CLOSE cursor_data;
END;
二、利用linux的定時任務(wù),
linux定時任務(wù)基本命令:
查看定時任務(wù):crontab -l
編輯定時任務(wù):crontab -e
*/10 22-23,0-5 * * * mysql -u用戶名 -p密碼 -e "use db_name;CALL PRO_ALARM();"
或者把use db_name;CALL PRO_ALARM();存到sql腳本中,編輯定時任務(wù)如下:
*/10 22-23,0-5 * * * mysql -u用戶名 -p密碼 < /application/Job_mysql.sql
總結(jié)
以上所述是小編給大家介紹的Linux下如何實現(xiàn)Mysql定時任務(wù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
MySQL數(shù)據(jù)庫連接數(shù)查詢、配置簡單示例代碼
這篇文章主要介紹了MySQL數(shù)據(jù)庫連接數(shù)查詢、配置的相關(guān)資料,連接數(shù)與性能密切相關(guān),需要根據(jù)實際需求合理配置,通過設(shè)置最大連接數(shù)、使用連接池和優(yōu)化應(yīng)用程序連接邏輯,可以提高數(shù)據(jù)庫的穩(wěn)定性和性能,需要的朋友可以參考下2025-03-03
詳解MySQL插入和查詢數(shù)據(jù)的相關(guān)命令及語句使用
這篇文章主要介紹了MySQL插入和查詢數(shù)據(jù)的相關(guān)命令及語句使用,包括相關(guān)的PHP腳本操作方法講解也很詳細(xì),需要的朋友可以參考下2015-11-11
mysql 5.7.17 安裝配置方法圖文教程(ubuntu 16.04)
這篇文章主要為大家分享了ubuntu 16.04下mysql 5.7.17 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Mysql大表數(shù)據(jù)歸檔實現(xiàn)方案
本文介紹了MySQL大表數(shù)據(jù)歸檔,通過創(chuàng)建歷史訂單表并基于主鍵id進(jìn)行分批處理,避免影響線上業(yè)務(wù)和產(chǎn)生慢SQL,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下2024-11-11
解決MySQL 5.7.9版本sql_mode=only_full_group_by問題
這篇文章主要介紹了解決MySQL 5.7.9版本sql_mode=only_full_group_by問題,需要的朋友可以參考下2017-05-05

