mysql設定定時任務 漸入佳境

2022-06-21 03:12:10 字數 2720 閱讀 1584

mysql中設定定時任務,需要先開啟排程才能實現自動執行任務。排程功能開啟後過再配合儲存過程或事件等元件實現特定或定時的任務實現。

1開啟事件排程功能,基於全域性和配置檔案。

2  編寫相關需要執行的動作,可通過兩種方式實現。

2.1基於儲存過程呼叫動作編寫事件

2.2  直接使用事件自帶的定時功能

開啟排程功能需要在當前資料庫系統設定,並新增到配置檔案中。排程開啟後請再次使用命令檢視確認排程是否開啟。

確認排程狀態

--查詢方法,任選其一即可。

mysql> show variables like '

event_scheduler';

mysql> select @@event_scheduler;

系統中開啟

--設定方法(開啟),以下命令任選其一。

mysql> set @@global.event_scheduler =on;

mysql> set global event_scheduler = on;

mysql> set global event_scheduler = 1;

mysql> set @@global.event_scheduler = 1;

--設定方法(關閉)

mysql> set @@global.event_scheduler = off;

mysql> set global event_scheduler = off;

mysql> set global event_scheduler = 0;

mysql> set @@global.event_scheduler = 0

新增配置檔案在/etc/my.cnf檔案中新增內容,注意需要新增到[mysqld]下。

[root@136-b ~]# cat /etc/my.cnf 

[mysqld]

event_scheduler = 1

基於儲存過程基於儲存過程的方式需要先定義乙個儲存過程通過這個儲存過程去呼叫其他的動作如事件。

delimiter $$

use `database`$$

drop procedure if exists `auto_del_90`$$

create definer=`root`@`%` procedure `auto_del_90`()

begin

delete from basetb where date(發生時間)

<= date(date_sub(now(),interval 90

day));

end$$

delimiter ;

直接使用事件直接使用事件自帶的事件計數器完成定時任務的執行操作,此時不需要設定儲存過程。

delimiter $$

drop event if exists deletelog;

create event deletelog

on schedule every

60second

on completion preserve

do begin

delete from check_host_web_status where resource_id like

'' and inspection_date<=now()-interval 300

second;

end$$

delimiter ;

解釋:

第一行:設定結束符為 $$

第二行:刪除名為detelog的事件,防止衝突。

第三行:建立乙個名為deletelog的事件,名字區分大小寫。

第四行:設定事件的排程間隔事件單位有:year,month,day,hour,minute 或者second

第五行: 設定事件執行過後的動作,預設事件執行一次後會刪除,週期性任務必須儲存。引數:preserve(儲存)、not preserve(不儲存)

第六行:動作開始行標識

第七行:具體執行語句

第八行:動作結束行標識

第九行:設定語句結束符為 ;

檢視事件

禁/啟用事件

--禁用對應的事件

mysql> alter event deletelog disable;

--啟用對應的事件

mysql> alter event deletelog enabled;

刪除事件

mysql>  drop event [if exists] event_name;
參考文件:

mysql設定定時任務

mysql資料庫預設時把定時任務關閉的 檢視定時任務是否開啟的sql show variables like event scheduler select event scheduler 如果顯示為off的話則表示定時任務沒有開啟,如果為on的話表示已經開啟。開啟定時任務有兩種 一種是臨時啟動 修改...

mysql設定定時任務

今天遇到了個需要每天定時執行的任務,在mysql資料庫裡面提供了這樣的功能,正好整理下分享出來。1.首先檢查是否開啟了定時任務 1 2 3 4 5 6 檢視event是否開啟 show variableslike event sche 將事件計畫開啟 setglobalevent scheduler...

MySQL設定定時任務

1.首先檢查是否開啟了定時任務 檢視event是否開啟 show variables like event sche 將事件計畫開啟 set global event scheduler 1 將事件計畫關閉 set global event scheduler 0 關閉事件任務 alter even...