日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

linux设置mysql定时任务_Linux下如何实现Mysql定时任务

發布時間:2023/12/31 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux设置mysql定时任务_Linux下如何实现Mysql定时任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設前提:每天晚上10點到早上5點,每10分鐘定時執行存儲過程。

實現方式:

第一種是利用mysql本身實現,制定event定時任務,可以借助navicat for mysql或其他數據庫開發工具去做;

第二種實現方式是利用linux的定時任務,這個是利用linux系統自帶任務管理工具實現的。

一、mysql中event定時任務的相關命令,

1.查看event是否啟用:

select @@event_scheduler;

show variables like 'event%';

2.開啟定時任務:

set global event_scheduler = 1;

set global event_scheduler = on;

3.建立定時任務:

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);

#這個用于處理游標到達最后一行的情況

declare s int default 0;

#聲明游標cursor_name(cursor_name是個多行結果集)

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';

#設置一個終止標記

declare continue handler for sqlstate '02000' set s = 1;

open cursor_data;

#獲取游標當前指針的記錄,讀取一行數據并傳給變量a,b

fetch cursor_data

into userid;

#開始循環,判斷是否游標已經到達了最后作為循環條件

while s <> 1 do

insert into events_notification values (null, sysdate(), unix_timestamp(sysdate()),

unix_timestamp(sysdate()), '00000', userid, '1', '0');

#讀取下一行的數據

fetch cursor_data

into userid;

end while;

#關閉游標

close cursor_data;

end;

二、利用linux的定時任務,

linux定時任務基本命令:

查看定時任務:crontab -l

編輯定時任務:crontab -e

*/10 22-23,0-5 * * *?? mysql -u用戶名 -p密碼 -e "use db_name;call pro_alarm();"

或者把use db_name;call pro_alarm();存到sql腳本中,編輯定時任務如下:

*/10 22-23,0-5 * * *?? mysql -u用戶名 -p密碼 < /application/job_mysql.sql

總結

以上所述是小編給大家介紹的linux下如何實現mysql定時任務,希望對大家有所幫助

如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網友為您解惑!

總結

以上是生活随笔為你收集整理的linux设置mysql定时任务_Linux下如何实现Mysql定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。