zoukankan      html  css  js  c++  java
  • mysql日志分析工具之mysqlsla

    背景介绍

    很多情况下,都需要对MySQL日志进行各种分析,来了解系统运行的方方面面。MySQL官方自带了一些工具对日志进行分析,比如mysqlbinlog可以用来分析二进制日志,mysqlslow可以用来分析慢查询日志,但这些工具相对功能较为单一,而且对查询日志没有提供分析工具。因此,很多第三方工具应用而生,而mysqlsla(MySQL Statement Log Analyzer)是其中使用较为广泛的一个。

    目前常见mysql慢查询分析工具大概归纳为:

    工具 / 命令 一般统计信息 高级统计信息 脚本 优势
    mysqldumpslow 支持 不支持 perl mysql官方自带
    mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强
    mysql-explain-slow-log 支持 不支持 perl
    mysql-log-filter 支持 部分支持 python / php 不失功能的前提下,保持输出简洁
    myprofi 支持 不支持 php 非常精简

    还有pt-query-digest(需要安装Percona Toolkit)等其他工具,这里只记录一下mysqlsla常见使用方法。

    测试环境

    centos7 / mysql 5.6(开启慢查询功能)

    安装操作

    下载:https://github.com/daniel-nichter/hackmysql.com

    1. 安装依赖

    [root@server-10 ~]# yum install  perl  perl-DBI  perl-DBD-MySQL perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

    2. 切换到mysqlsla目录进行编译安装

    [root@server-10 mysqlsla]# perl Makefile.PL 
    Checking if your kit is complete...
    Looks good
    Writing Makefile for mysqlsla
    [root@server-10 mysqlsla]# make
    cp lib/mysqlsla.pm blib/lib/mysqlsla.pm
    cp bin/mysqlsla blib/script/mysqlsla
    /usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/mysqlsla
    Manifying blib/man3/mysqlsla.3pm
    [root@server-10 mysqlsla]# make install
    Installing /usr/local/share/perl5/mysqlsla.pm
    Installing /usr/local/share/man/man3/mysqlsla.3pm
    Installing /usr/local/bin/mysqlsla             //生成了mysqlsla命令
    Appending installation info to /usr/lib64/perl5/perllocal.pod

    3. 使用mysqlsla命令

    [root@server-10 ~]# mysqlsla -lt slow --sort t_sum --top 20 mysql-slow.log > /tmp/select.log

    // 查询记录最多的20个sql语句,并写到select.log中去。
    [root@server-10 ~]# mysqlsla -lt slow  -sf "+select" -top 100  mysql-slow.log >/tmp/sql_select.log

    // 统计慢查询文件为mysql-slow.log中的所有select的慢查询sql,并显示执行时间最长的100条sql,并写到sql_select.log中去
    root@server-10 ~]# mysqlsla -lt slow  -sf "+select,update" -top 100 -sort c_sum  -db mydata mysql-slow.log >/tmp/sql_num.log

    // 统计慢查询文件为mysql-slow.log的数据库为mydata的所有select和update的慢查询sql,并查询次数最多的100条sql,并写到sql_num.sql中去

     参数说明

    "--log-type (-lt) TYPE LOGS"  // 指定日志类型
    Parse MySQL LOGS of TYPE. Default none. TYPE must be either slow, general, binary, msl or udl. LOGS is a space-separated list of MySQL log files.


     "--statement-filter (-sf) CONDTIONS"  // 语句过滤,“+”和“-”分别表示“仅显示”和“仅去掉”

    Set SQL statement filter using CONDITIONS. Default none. CONDITIONS is a comma-separated list of SQL statement types in the form:
    [+-][TYPE],[TYPE],etc.


     "--top N"  // 最top的N条,默认显示top 10

    After sorting display only the top N queries. Default 10.


     "--sort META"  // 按指定排序,默认慢查询和微秒查询会按照总执行时间“t_sum”来排序,其他日志默认按照“c_sum”

    Sort queries according to META. Default t_sum for slow and msl logs, c_sum for all others. META is any meta-property name.


     "--databases (-db) (-D) DATABASES"   // 指定数据库

    Try EXPLAINing queries which have no known database using DATABASES. Default none. DATABASES is a comma-separated list of database names (without
    spaces). Only used when option explain is used too.


     其他参数可通过man mysqlsla查询。

    结束.

    其他参考:

    https://www.jb51.net/article/27191.htm

    https://yq.aliyun.com/articles/59260

  • 相关阅读:
    3.K均值算法
    2.机器学习相关数学基础
    机器算法第一次作业
    语法制导的语义翻译
    算符优先分析
    自下而上语法分析
    LL(1)文法的判断,递归下降分析程序
    消除左递归
    DFA最小化,语法分析初步
    词法分析程序的设计与实现
  • 原文地址:https://www.cnblogs.com/ding2016/p/9755468.html
Copyright © 2011-2022 走看看