MySQL优化之慢日志分析(Anemometer+Pt-query-digest)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL优化之慢日志分析(Anemometer+Pt-query-digest)相关的知识,希望对你有一定的参考价值。

介绍
使用pt-query-digest搜集慢查询日志。将数据存储在两张表中:global_query_review 和 global_query_review_history。然后使用anemometer将pt-query-digest 搜集的数据以web形式展现出来,方便查询分析。

1、准备条件:
a.LNMP平台
b.mysql开启慢查询
   slow_query_log=on      #开启数据库的慢日志
   long_query_time=0.1    #时间超过0.1s的SQL记录日志中
   log-slow-queries=/usr/local/mysql/data/mysql_slow.log  #慢日志存放路径


2.安装Percona Toolkit
下载

wget https://www.percona.com/downloads/percona-toolkit/2.2.16/tarball/percona-toolkit-2.2.16.tar.gz

tar xzvf percona-toolkit-2.2.16.tar.gz
cd percona-toolkit-2.2.16
perl Makefile.PL
make
make install


3.安装配置Anemometer
a.下载: https://github.com/box/Anemometer
将Anemometer文件包解压,重命名为anemometer,并移动到/usr/local/nginx/html/Anemometer 下(nginx默认路径)
执行setup 脚本,创建用户:
[[email protected]/anemometer]mysql -uroot -pxxx < install.sql
[[email protected]/anemometer]mysql -uroot -pxxx
mysql > grant all on slow_query_log.* to ‘anemometer‘@‘%‘ identified by ‘test‘;
mysql > grant select on *.* to  ‘anemometer‘@‘%‘;
mysql > grant all on slow_query_log.* to ‘anemometer‘@‘localhost‘;
mysql > grant select on *.* to  ‘anemometer‘@‘localhost‘;

b.将慢查询日志通过pt-query-digest分析后存入数据库中:

pt-query-digest --user=anemometer --password=test --review h=154.1.1.36,D=slow_query_log,t=global_query_review --history h=154.1.1.36,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /usr/local/mysql/data/web00-slow.log

c.修改可视界面的配置信息:
cd /usr/local/nginx/html/anemometer/conf
cp sample.config.inc.php config.inc.php
vi config.inc.php

$conf[‘datasources‘][‘154.1.1.36‘] = array(
        ‘host‘  => ‘154.1.1.36‘,
        ‘port‘  => 3306,
        ‘db‘    => ‘slow_query_log‘,
        ‘user‘  => ‘anemometer‘,
        ‘password‘ => ‘test‘,
        ‘tables‘ => array(
                ‘global_query_review‘ => ‘fact‘,
                ‘global_query_review_history‘ => ‘dimension‘
        ),
        ‘source_type‘ => ‘slow_query_log‘
);
$conf[‘plugins‘] = array(

               ‘visual_explain‘ => ‘/usr/bin/pt-visual-explain‘,
               ‘query_advisor‘ => ‘/usr/bin/pt-query-advisor‘,

#... other lines

                $conn[‘user‘] = ‘anemometer‘;
                $conn[‘password‘] = ‘test‘;

                return $conn;
},

注: 更新PHP的 timezone:/usr/local/php/etc/php.ini   timezone =Asia/Shanghai


4.最终本地通过IP访问:
http://154.1.1.36/anemometer

 

技术分享


b.点击特定checksum值进入的页面如下:

技术分享

后续增加更多图片……

本文出自 “59090939” 博客,请务必保留此出处http://59090939.blog.51cto.com/6338052/1740039

以上是关于MySQL优化之慢日志分析(Anemometer+Pt-query-digest)的主要内容,如果未能解决你的问题,请参考以下文章

Mysql优化之慢查询优化

MySQL之慢查询日志分析

Anemometer 分析慢查

MySQL之慢查询日志

MySQL之慢查询日志

Mysql之慢查询的排查及其优化