
介绍:Anemometer 是一个图形化显示MySQL慢日志的工具。结合pt-query-digest,Anemometer可以很轻松的帮你去分析慢查询日志,让你很容易就能找到哪些SQL需要优化
This is the Box Anemometer, the MySQL Slow Query Monitor. This tool is used to analyze slow query logs collected from MySQL instances to identify problematic queries
相关学习推荐:PHP编程从入门到精通
环境概况
以写此文章时 percona-toolkit最新的版本3.0.10为例
mysql数据库对应版本为5.7.21,二进制安装
http和php均是系统CentOS Linux release 7.4.1708 (Core)自带版本
需要安装的步骤如下:
1.percona-toolkit工具的安装
2.php web环境的搭建安装
3.Anemometer并配置
4.导入慢查询日志
5.访问界面,查看慢查询
6.其他相关和问题解决
0. 整体的架构
For pt-query-digest version < 2.2 $ pt-query-digest --user=anemometer --password=superSecurePass \\\\ --review h=db.example.com,D=slow_query_log,t=global_query_review \\\\ --review-history h=db.example.com,D=slow_query_log,t=global_query_review_history \\\\ --no-report --limit=0% \\\\ --filter=" \\\\$event->{Bytes} = length(\\\\$event->{arg}) and \\\\$event->{hostname}=\\\\"$HOSTNAME\\\\"" \\\\ /var/lib/mysql/db.example.com-slow.log For pt-query-digest version >= 2.2 $ pt-query-digest --user=anemometer --password=superSecurePass \\\\ --review h=db.example.com,D=slow_query_log,t=global_query_review \\\\ --history h=db.example.com,D=slow_query_log,t=global_query_review_history \\\\ --no-report --limit=0% \\\\ --filter=" \\\\$event->{Bytes} = length(\\\\$event->{arg}) and \\\\$event->{hostname}=\\\\"$HOSTNAME\\\\"" \\\\ /var/lib/mysql/db.example.com-slow.log
2、慢查询主机推动脚本示例
#config anemometer server, the purpose is to push slow query to the remote anemometer server and store it. anemometer_host="127.0.0.1" anemometer_user="root" anemometer_password="123456" anemometer_port=5700 anemometer_db="slow_query_log" #config mysql server, the purpose is to get the path of the slow query log. mysql_client="/usr/local/mysql-5.7.21/bin/mysql" mysql_user="root" mysql_password="123456" mysql_socket="/tmp/mysql_5700.sock" mysql_port=5700 #config slowqury dir to cd, and then delete the expired slow query file. slowquery_dir="/data/mysql_$mysql_port/" #get the path of the slow query log. slowquery_file=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'` pt_query_digest="/data/percona-toolkit-3.0.10/bin/pt-query-digest" #collect mysql slowquery log into lepus database. $pt_query_digest --user=$anemometer_user --password=$anemometer_password --port=$anemometer_port --review h=$anemometer_host,D=$anemometer_db,t=global_query_review --history h=$anemometer_host,D=$anemometer_db,t=global_query_review_history --no-report --limit=0% --filter=" \\\\$event->{Bytes} = length(\\\\$event->{arg}) and \\\\$event->{hostname}=\\\\"$HOSTNAME:$mysql_port\\\\"" $slowquery_file #generate a new slow query log, the below is generate a new slow file per hour. tmp_log=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "select concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep log|sed -n -e '2p'` #use new slow file to config mysql slowquery $mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 0;set global slow_query_log_file = '$tmp_log';" $mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 1; " #delete slow query file before 2 days cd $slowquery_dir /usr/bin/find ./ -name 'slowquery_*.log' -mtime 2|xargs rm -rf ; ####END####
5. 访问界面,查看慢查询
http://$ip/anemometer/ ($ip为Anemometer主机对应ip地址)
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码官网:www.west.cn