需求
sql server的作業歷史(job)記錄是儲存在msdb庫中的,很方便就查詢相關的job定義,計畫和歷史記錄,而mysql的event卻沒有歷史記錄。為方便檢視event是否正常執行以及執行結果,通過以下兩個步驟來實現類似的功能。實現
1. 在mysql庫建立event執行的歷史記錄表
createtable
`mysql`.`udf_event_history` (
`id`
int(10) unsigned not
null
auto_increment,
`event_gid`
varchar(36) not
null,`
db_name` varchar(128) not
null
default'',
`event_name`
varchar(128) not
null
default'',
`start_time`
datetime(3) not
null
default
current_timestamp
(),`end_time`
datetime(3) default
null
,`is_success`
tinyint(4) default0,
`duration`
decimal(15,3) default
null
,`error_msg`
varchar(512) default
null
,primary
key(`id`),
unique
key`idx_event_git` (`event_gid`),
key `idx_db_event_name` (`db_name
`,`event_name`),
key`idx_s_e_time` (`start_time`,`end_time`)
) engine
=innodb default charset=utf8mb4;
2.根據以下建模板建立event
請注意根據實際情況修改相關資訊
usedb1;
delimiter $$
create definer=
`root`@`localhost` event `event_test1`
on schedule every 1 minute starts '
2019-01-01 00:00:00'on
completion preserve enable do
begin
declare r_code char(5) default
'00000
';
declare r_msg text
;
declare v_error int
;
declare v_start_time datetime(3) default now(3
);
declare v_event_gid varchar(36) default
upper(replace(uuid(),'
-',''
));
/*修改為實際的event名
*/insert
into mysql.udf_event_history (db_name
, event_name, start_time, event_gid)
values(database(), '
event_test1
', v_start_time, v_event_gid);
begin
declare
continue handler for
sqlexception
begin
set v_error =
1;
get diagnostics condition
1 r_code = returned_sqlstate, r_msg =
message_text;
end;
/*實際要執行語句或儲存過程,等
*/call db1.usp_1();
end;
update
mysql.udf_event_history
set end_time = now(3), is_success =
isnull(v_error), duration = timestampdiff(microsecond,start_time, now(3)) /
1000000
, error_msg
= concat('
error =
', r_code,'
, message =
', r_msg)
where event_gid =
v_event_gid;
end$$
delimiter ;
通過查詢mysql.udf_event_history表,可以知道event的開始結束時間、是否成功、執行時長、錯誤資訊,等,為管理日常排程計畫提供方便。
root@localhost參考[db1
]select
*from mysql.udf_event_history limit 2
\g;***************************
1. row ***************************
id:
1db_name
: db1
event_name: event_test1
start_time:
2019-12
-0315:44:00.000
end_time:
2019-12
-0315:44:00.001
is_success:
0duration:
0.001
error_msg: error
=42000, message =
procedure db1.usp_2 does not
exist
event_gid: ab305d8c15a011eab822005056ab041e
***************************
2. row ***************************
id:
2db_name
: db1
event_name: event_test2
start_time:
2019-12
-0315:46:00.000
end_time:
2019-12
-0315:46:05.405
is_success:
1duration:
5.405
error_msg:
null
event_gid: f2b6197c15a011eab822005056ab041e
Better History(歷史記錄)
外掛程式介紹 剛剛看到在網頁上看到一篇好的文章或者正在編輯什麼,不小心一時手賤關掉了網頁,再開啟就找不到了,想必很多朋友經常遇到這樣的事,better history 歷史記錄 讓你更好地檢視您的歷史記錄。為檢視您的歷史記錄帶來最好的搜尋體驗,最清晰的介面和最有幫助的篩選。使用說明 將better ...
Ubuntu 檢視歷史記錄
ubuntu 終端的歷史記錄 在linux終端下 1 執行history,可以得到乙個整潔的linux終端命令歷史記錄的列表 2 執行history c,可以清除雜亂的歷史記錄 3 執行history r home yajiu history.txt,可以將history.txt檔案儲存的常用命令讀...
yum history 歷史記錄功能
現在的 yum 帶有歷史記錄功能,可以檢視過往的事務,重做或回滾這些事務.顯示事務的命令是 yum history 在歷史中搜尋某個軟體包是 yum history list x 顯示某個事務的詳細資訊用 yum history info n n是事務編號,重做是 yum history redo ...