Anemometer让慢查询可视化
一、快速安装
概述:需要在一台服务器(192.168.47.36)上安装pt-query-digest、web server、php、MySQL server以及Anemometer。
1、安装Percona Toolkit
Percona Toolkit,内含pt-query-digest
# wget -c https://www.percona.com/downloads/percona-toolkit/3.1.0/binary/redhat/7/x86_64/percona-toolkit-3.1.0-2.el7.x86_64.rpm
# yum localinstall percona-toolkit-3.1.0-2.el7.x86_64.rpm
安装完成后验证
# pt-query-digest --version
pt-query-digest 3.1.0
2、安装webserver(with PHP 5.5+)
安装 Nginx
yum install openssl openssl-devel
yum install zlib zlib-devel
yum install pcre pcre-devel
yum install gcc-c++
wget -c http://nginx.org/download/nginx-1.17.6.tar.gz
tar zxvf nginx-1.17.6.tar.gz
cd nginx-1.17.6/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
make && make install启动 Nginx
/usr/local/nginx/sbin/nginx
开放80端口,并重启iptables
# systemctl restart iptables
此时可以访问到测试页面:http://192.168.47.36直接yum安装的是php5.4版本,以下为php7.4的编译安装参数:
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-iconv-dir=/usr/local/libiconv \
--with-openssl \
--with-openssl-dir \
--with-pcre-regex \
--with-pcre-dir \
--with-bz2 \
--with-curl \
--enable-ftp \
--enable-sockets \
--disable-ipv6 \
--enable-mbstring \
--enable-calendar \
--with-gettext \
--with-zlib \
--with-zlib-dir \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-dom \
--enable-xml \
--enable-fpm \
--with-libdir=lib64 \
--enable-bcmath验证
# vim /usr/local/nginx/html/info.php
<?php
phpinfo();
?>重启后,通过http://192.168.47.36/info.php可以访问到PHP version信息
3、安装MySQL
MySQL用于存放慢日志信息。安装过程略,server信息:192.168.47.36:3306
4、部署Anemometer
4.1、Anemometer的代码下载
# cd /var/www/html/
# git clone https://github.com/box/Anemometer.git
4.2、表定义文件(/var/www/html/Anemometer/install.sql)导入
Tips:MySQL5.7版本在导入时会报错,有两个解决办法:
方法1、修改install.sql文件
ts_min datetime NOT NULL DEFAULT '1990-01-01 00:00:00',
ts_max datetime NOT NULL DEFAULT '1990-01-01 00:00:00',
方法2、修改sql mode,去除NO_ZERO_DATE
mysql> select @@global.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> set @@global.sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINNE_SUBSTITUTION';
Query OK, 0 rows affected (0.01 sec)
导入文件
# /usr/local/mysql3306/bin/mysql -uroot -p -S /tmp/mysql3306.sock < ./install.sql
生成slow_query_log库下的两张表
mysql> show tables;
+-----------------------------+
| Tables_in_slow_query_log |
+-----------------------------+
| global_query_review |
| global_query_review_history |
+-----------------------------+
2 rows in set (0.00 sec)
4.2、配置本地数据库的信息
本地数据库中创建账户信息
mysql> grant ALL ON slow_query_log.* to 'anemometer'@'%' IDENTIFIED BY 'superSecurePass';
再在/var/www/html/Anemometer/conf/datasource_localhost.inc.php中配置本地数据库的连接信息
<?php
$conf['datasources']['localhost'] = array('host' => '127.0.0.1','port' => 3306,'db' => 'slow_query_log','user' => 'anemometer','password' => 'superSecurePass','tables' => array('global_query_review' => 'fact','global_query_review_history' => 'dimension'),
# 'source_type' => 'slow_query_log'
);
此时由于配置未完成,暂无法访问
按页面提示:# cp sample.config.inc.php config.inc.php,暂时先不配置该文件,此时可以在浏览器中看到web界面了
4.3、基础调试
Tips1、针对web页面尾部的报错,在sql mode中去除:ONLY_FULL_GROUP_BY
Tips2、其他报错(如:HTTP ERROR 500)信息查询:tail /var/log/httpd/error_log
二、慢日志导入
1、利用本地库测试
将min_examined_row_limit关闭后,执行测试语句:select a,sleep(2) from tbl_1,此时该SQL将会记录到slow log中。
将slow log通过pt-query-digest分析后存入数据库中
pt-query-digest --user=anemometer --password=superSecurePass -S /tmp/mysql3306.sock \--review h=localhost,D=slow_query_log,t=global_query_review \--history h=localhost,D=slow_query_log,t=global_query_review_history \--no-report --limit=0% \--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /data/mysql3306/slow.log
一般导入过程会有如下报错:
Pipeline process 5 (iteration) caused an error: DBD::mysql::st execute failed: Incorrect integer value: 'A10C08340795A7F3905F94F51204DE4C' for column 'checksum' at row 1 [for Statement " INSERT INTO `slow_query_log`.`global_query_review`
解决办法:修改sql mode,去除STRICT_TRANS_TABLES后,重新导入
此时web界面
2、添加远程DB信息
# cd /var/www/html/Anemometer/conf
# vim config.inc.php
$conf['datasources']['192.168.47.33'] = array('host' => '192.168.47.33','port' => 3306,'db' => 'slow_query_log','user' => 'root','password' => '123456','tables' => array('global_query_review' => 'fact','global_query_review_history' => 'dimension'),'source_type' => 'slow_query_log'
);
将以下操作设置为定时任务,定期推送slow log数据到Anemometer的DB中
pt-query-digest --user=db1 --password=db1Pass --host=192.168.47.33 --port=3306 \--review h=192.168.47.36,D=slow_query_log,t=global_query_review \--history h=192.168.47.36,D=slow_query_log,t=global_query_review_history \--no-report --limit=0% \--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /data/mysql3306/slow.log
三、其他功能
1、启用pt-visual-explain
pt-visual-explain默认已配置,只需填入合适的账户密码(远程DB的全库select权限)就可以启用。
$conf['plugins'] = array(...'explain' => function ($sample) {$conn = array();...$conn['user'] = 'explainuser';$conn['password'] = '123456';return $conn;},
);
开启该功能可提供的信息如下:
执行计划(Explain Plan):如下所示
Visual Explain Plan:优化器选取的索引、索引的ken_len以及扫描的行数
Create Table Statements和Table Status:表结构信息
参考文档:
1、Anemometer Github地址
Anemometer让慢查询可视化相关推荐
- 使用Anemometer基于pt-query-digest将MySQL慢查询可视化
本文主要介绍使用Anemometer基于pt-query-digest将MySQL慢查询可视化,因为网上资料相对较少,且都是英文的,遇到报错也没有相关的参考资料,因此写此文. 欢迎转载,请注明作者.出 ...
- anemometer mysql_十分钟部署Anemometer作为Mysql慢查询可视化系统
前言 采用Anemometer将Mysql慢查询日志可视化,可以更便捷的查询慢查询日志,并根据时间戳进行历史查询.如下是单机版Anemometer部署的演示,实际应用中,为安全起见,建议把anemom ...
- anemometer mysql_使用Anemometer基于pt-query-digest将MySQL慢查询可视化
最近玩MySQL,发现了一个很不错的工具,可以把MySQL慢查询可视化,方便我们去找出和分析慢询语句,搭建的步骤不多,但网上详细教程比较少,说得也不够详细,一不小心,估计得蛋痛一会,哈哈 Percon ...
- python股票查询可视化代码
Python股票查询可视化_哔哩哔哩_bilibili 三连视频获取源码, 播放量500出教程,三连总数500逐行讲代码. 功能:数据获取,可视化,过滤
- anemometer mysql 500_Anemometer基于pt-query-digest将MySQL慢查询可视化
参考文章: http://ourmysql.com/archives/1359?utm_source=tuicool&utm_medium=referral 官方:https://github ...
- anemometer mysql5.6_Anemometer|Anemometer(mysql慢查询日志分析工具)下载免费版 - 欧普软件下载...
Anemometer是一款非常实用的mysql慢查询日志分析工具,该工具是基于LAMP编写的,使用前需要搭建LAMP环境,它能够实现慢查询日志收集信息,方便dba对数据库慢查询的观测和统计.需要的朋友 ...
- tkinter天气查询可视化
导入相关模块 coding:utf8 import tkinter from tkinter import messagebox import requests from PIL import Ima ...
- anemometer mysql 500_【Mysql】Anemometer-可视化慢sql查看
本文主要介绍使用Anemometer基于pt-query-digest将MySQL慢查询可视化,因为网上资料相对较少,且都是英文的,遇到报错也没有相关的参考资料,因此写此文. 欢迎转载,请注明作者.出 ...
- VS可视化调试学习总结
.NET开发人员必备的可视化调试工具 (你值的拥有) http://sanwen8.cn/p/52airn6.html http://www.cnblogs.com/cyq1162/p/6027051 ...
最新文章
- 批量保存到mysql_关于保存批量数据进入mysql
- 如何导出已安装的安卓app为apk包
- 信息学奥赛一本通 1135:配对碱基链 | OpenJudge NOI 1.7 07
- python oop编程_23 Python - 面向对象编程OOP
- servlet ---- 简单案例
- Jquery乱码终极解决方案
- github 怎么搜索_实用!8个玩转GitHub的小插件,快来试试吧!
- mysql 拼音首字母排序
- 5-vue-template模板制作
- 计算机电源线税务编码,电力电子元器件税收分类编码
- C语言知识点总结2022
- 解决Office2010每次打开都要配置进度的问题
- java–转换文件编码
- node.js + busboy 多文件上传
- Xcode7-“App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- DUL 更新2016
- Adobe Flash player Activex控件问题解决方法
- 一套WPF+EF+SQLServer 会员卡管理系统源码
- Hi3516芯片简介,Hi3516EV300处理器参数介绍
- C++ 学习——char * ,char a[ ],char ** ,char *a[] 的区别