mysql get slow log_mysql slow_log 记录和获取

需要记录慢查询,在配置文件中加入慢查询的相关配置。

/etc/my.cnf

general_log=off

log_output=table

slow_query_log=1

long_query_time=0.3

general_log=off      会记录所有的查询,建议关闭(set global general_log = off)

log_output=table     将log记录到表中

slow_query_log=1     开启慢查询记录

long_query_time=0.3  大于0.3秒的查询会被记录

配置好以后,我的做法是使用python每周读取数据库中的记录,邮件发出来以便分析。

sql如下:SELECT

max(user_host),

min(start_time),

max(start_time),

count(*),

sum(

CASE

WHEN TIME_TO_SEC(query_time) = 0 THEN

0.3

ELSE

TIME_TO_SEC(query_time)

END

),

max(

CASE

WHEN TIME_TO_SEC(query_time) = 0 THEN

0.3

ELSE

TIME_TO_SEC(query_time)

END

),

min(

CASE

WHEN TIME_TO_SEC(query_time) = 0 THEN

0.3

ELSE

TIME_TO_SEC(query_time)

END

),

round(

avg(

CASE

WHEN TIME_TO_SEC(query_time) = 0 THEN

0.3

ELSE

TIME_TO_SEC(query_time)

END

),

2

),

sql_text

FROM

slow_log

WHERE

sql_text NOT LIKE '%SQL_NO_CACHE%'

GROUP BY

LEFT (sql_text, 40)

ORDER BY

count(*) DESC

LIMIT 20;

部分python代码如下:for i in range(len(conn)):

log=p.get_table(conn[i],sql)

query_log+='_'*120+'\r\n'

query_log+="Slow_Log_%s:%s____%s\r\n\r\n" % (conn[i]["host"],conn[i]["port"],days)

for n in range(len(log)):

query_log+="%s  %s  %s  %s  %s " % (str(log[n][3]),str(log[n][4]),str(log[n][5]),str(log[n][6]),str(log[n][7]))

query_log+="user_host :%s    start_time :%s   end_time :%s\r\n" % (str(log[n][0]),str(log[n][1]),str(log[n][2]))

query_log+=' '*40+squeeze(str(log[n][8]))+'\r\n\r\n'

mail.send_mail(mail_list,mail_title,query_log)

得到的邮件部分:

Slow_Log_x.x.x.x:3306____2016-05-26

1889  704.4  33.0  0.3  0.37 user_host :x[x] @  [x]    start_time :2016-05-25 09:30:27   end_time :2016-05-26 09:16:05

select max(online_user),round(sum(online_user)/count(id)) from online where datetime >= '2016-05-25' and server_id = 27

这样就可以看到每周比较慢的查询,然后进行优化分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值