mysql event 日志_MySQL Event计划任务刷慢日志
前言
最近在嘗試一個日志系統graylog來收集mysql的慢查詢日志提,供后續的分析、監控和報警等。測試步驟已經到日志已成功收集到graylog,測試時需要刷一些慢查詢日志出來。為了刷比較多的日志和不對測試環境造成較大的影響,想到了使用mysql的sleep函數結合event來做刷慢日志。
MySQL的計劃任務是通過event來完成的。相當于SQL Server 的Job。下面是實現過程:
打開mysql的慢日志
set global slow_query_log = 1;
set global long_query_time = 1;
也可以在配置文件議開啟慢日志(建議開啟)
創建event
啟用event事件功能。
set global event_scheduler = 1;
創建event,每1秒執行一次。
delimiter $$
create or replace EVENT event_flush_slow_log
ON SCHEDULE
EVERY 1 SECOND
on completion preserve ENABLE
do
begin
SELECT SLEEP(1);
end; $$
delimiter ;
查詢event
show events where Name like '%event_flush_slow_log%'\G;
或
select * from information_schema.events where event_name='event_flush_slow_log'\G;
開啟這個event
ALTER EVENT event_flush_slow_log ENABLE;
可以看到慢日志一直在寫入了。
# Time: 180126 12:19:57
# User@Host: root[root] @ localhost [localhost]
# Thread_id: 1640 Schema: db1 QC_hit: No
# Query_time: 1.000645 Lock_time: 0.000269 Rows_sent: 1 Rows_examined: 0
# Rows_affected: 0
SET timestamp=1516940397;
SELECT SLEEP(1);
# Time: 180126 12:19:58
# User@Host: root[root] @ localhost [localhost]
# Thread_id: 1641 Schema: db1 QC_hit: No
# Query_time: 1.000575 Lock_time: 0.000203 Rows_sent: 1 Rows_examined: 0
# Rows_affected: 0
SET timestamp=1516940398;
SELECT SLEEP(1);
# Time: 180126 12:19:59
# User@Host: root[root] @ localhost [localhost]
# Thread_id: 1642 Schema: db1 QC_hit: No
# Query_time: 1.000856 Lock_time: 0.000180 Rows_sent: 1 Rows_examined: 0
# Rows_affected: 0
SET timestamp=1516940399;
SELECT SLEEP(1);
完成后,關閉event
ALTER EVENT event_flush_slow_log DISABLE;
假如不需要這個event,可以刪除
DROP EVENT IF EXISTS event_flush_slow_log;
關于sleep函數和event的詳細用法,請參考相關文檔,這里不再展開。
定時刷慢日志也可以使用Linux crontab調用腳本來做,但每1秒都要登錄一次MySQL來執行一次慢查詢,消耗資源較大,不建議這樣做吧。
總結
以上是生活随笔為你收集整理的mysql event 日志_MySQL Event计划任务刷慢日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓程序退出自动结束进程 设置(安卓程序
- 下一篇: refreshtoken用mysql_微