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值进入的页面如下:

后续增加更多图片……

时间: 2024-12-25 02:11:26

MySQL优化之慢日志分析(Anemometer+Pt-query-digest)的相关文章

《Mycat学习笔记》 第二篇. MySql 读写分离与日志分析——主从多结点

1    环境说明 接上篇环境   <Mycat学习笔记> 第一篇. MySql 读写分离与日志分析——主从单结点 http://www.cnblogs.com/kaye0110/p/5134588.html 增加一套 mysql 实例,端口为3308 ,通过Binlog方式同步主机情况 localhost : 3306 主机,    在mycat 中配置为 writehost 1 localhost : 3307 从机 a ,在mycat 中配置为 readhost localhost :

python爬虫优化和错误日志分析

发现问题 在爬虫下载过程中,执行一段时间后都会异常终止,下次必须kill掉进程重新运行 ,看能否优化并减少手动操作 错误日志分析 收集了nohup.out文件,发现主要错误是的数组下标越界,推测可能的问题为: 1)网络不稳定,http请求不通. 2)网络请求成功,但是html表单解析失败. 3)登录的cookie过期 优化思路 在所有有网络请求的地方,都加上了返回码是不是200的判断,然后html表单解析的地方加上数组长度判断,异常处理等 源码如下 import socket import ti

MySQL 数据库慢查询日志分析脚本

这个脚本是基于pt-query-digest做的日志分析脚本,变成可视化的格式. 目录结构是 ./mysql_data/log./mysql_data/log/tmp./slow_query # coding = gbk __author__ = 'T_two' import datetime import os IP = '111' dirname = os.path.dirname(os.path.abspath(__file__)) # 解析后的目录名 slow_query= os.pat

小蚂蚁学习mysql性能优化(3)--SQL以及索引优化--慢查日志分析工具和explain说明

昨天在测试操作数据库的时候碰到两个问题忘了记录下来,今天补充上去,接上篇 1. 安装测试数据库sakila时报错.Mysql server has gone away的问题.解决方法: 查看    show global variables like 'max_allowed_packet'; 一般来说会显示    max_allowed_packet    1048576 修改为    set global max_allowed_packet    =    1024*1024*16;   

mysql优化----explain的列分析

sql语句优化: 1: sql语句的时间花在哪儿? 答: 等待时间 , 执行时间. 等待时间:看是不是被锁住了,那就不是语句层面了是服务端层面了,看连接数内存. 执行时间:到底取出多少行,一次性取出1万行那是你的sql语句写的失败,二是扫描多少行,扫描多少行需要技术来分析,通过explain来分析. 可以重构查询和切分查询. 2: sql语句的执行时间,又花在哪儿了? 答:a: 查 ----> 沿着索引查,甚至全表扫描b: 取 ----> 查到行后,把数据取出来(sending data) 3

MySQL优化(4):explain分析

Explain是Mysql的自带查询优化器,负责select语句的优化器模块,可以模拟优化器执行SQL查询语句,从而知道Mysql是如何处理SQL的,语法也很简单:Explain + SQL 以下是通过explain查询出的几个属性   (常见性能瓶颈 -- CPU:CPU饱和一般发生在数据装入内存或从磁盘上读取数据时 IO:磁盘I/O瓶颈发生在装入数据远大于内存容量时 服务器硬件的性能瓶颈:top,free,iostat,vmstat来查看系统的性能状态) 用途: (1)表的读取顺序,id (

MySQL之慢查询日志分析

在MySQL命令行中查看慢查询日志是否打开了: mysql> show variables like '%slow_query%'; +---------------------------+-------------------------------------------+ | Variable_name | Value | +---------------------------+-------------------------------------------+ | slow_qu

mysql优化系列1

mysql优化3个步骤: 分析mysql和redis/memcached的搭配是否存在问题; 减少mysql语句等待的时间; 减少mysql语句执行的时间

Mysql 慢日志分析

mysqldumpslow是mysql自带的用来分析慢查询的工具,当然不止这一种工具,还有percona-toolkit是percona公司出的一组命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql相关任务,包含以下内容: 检查master和slave数据一致性/记录有效的归档/服务器信息汇总/分析和统计日志,为了省事这块使用mysqldumpslow命令做分析. 需要开启mysql的慢查询日志,否则无法进行统计分析,开启mysql慢查询日志需要在mysql的配置文件中进行如下