需要安装的步骤如下:

    1、percona-toolkit工具的安装

    2、php web mysql环境的搭建

    # yum install httpd mysql php php-mysql -y

    3、安装Slowquery并配置

    4、导入慢查询日志

    5、访问界面,查看慢查询

    6、配置邮件报警

 

git地址:https://github.com/hcymysql/slowquery
1、percona-toolkit工具的安装
yum install perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-DBI perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y
tar zxvf percona-toolkit-3.0.12_x86_64.tar.gz
cd percona-toolkit-3.0.12
perl Makefile.PL
make
make install
vi /etc/profile
export PATH=/root/percona-toolkit-3.0.12/bin
source /etc/profile

tar -zxvf percona-toolkit-3.0.2_x86_64.tar.gz

cd percona-toolkit-3.0.2

perl Makefile.PL

make && make test && make install

如果报:BEGIN failed--compilation aborted at Makefile.PL line 1,需要安装perl-devel

yum install perl-devel

安装后再执行perl Makefile.PL可能会报找不到DBI,DBD-MySQL,IO-Socket-SSL.noarch,perl-Time-HiRes

用下边的方法在线安装:

yum install perl-DBI

yum install perl-DBD-MySQL

yum install perl-IO-Socket-SSL.noarch

yum install perl-Time-HiRes

然后:

make

make install

pt-table-checksum --help看看是否装成功

2、php web mysql环境的搭建

yum install httpd mysql php php-mysql -y

3、安装Slowquery并配置
mv slowquery /var/www/html/
cd /var/www/html/slowquery/slowquery_table_schema
导入dbinfo_table_schema.sql和slowquery_table_schema.sql表结构文件到你的运维管理机MySQL里。
mysql -uroot -pmypassword sql_db < ./dbinfo_table_schema.sql
mysql -uroot -pmypassword sql_db < ./slowquery_table_schema.sql
录入你要监控的MySQL主库配置信息
例如:
mysql> INSERT INTO sql_db.dbinfo VALUES (1,‘192.168.148.101’,‘test库名’,‘admin’,‘123456’,3306);
修改配置文件soar_con.php,将里面的配置改成你的运维管理机MySQL的地址(用户权限最好是管理员)
cd /var/www/html/slowquery/
vi soar_con.php

<?php

//-test-dsn soar测试环境,用来分析SQL使用
$test_user='root';
$test_pwd='mypassword';
$test_ip='192.168.148.101';
$test_port='3306';
$test_db='test';

 

修改配置文件config.php,将里面的配置改成你的运维管理机MySQL的地址(用户权限最好是管理员)

vi config.php
<?php
//将里面的配置改成你的运维管理机MySQL的地址
     $con = mysqli_connect("192.168.148.101","root","mypassword","sql_db","3306") or die("数据库链接错误".mysqli_connect_error());
      mysqli_query($con,"set names utf8");?>
vi /etc/httpd/conf/httpd.conf
 找到DirectoryIndex index.html的位置,在其后面添加index.php,保存退出
 service httpd restart4、导入慢查询日志
 进入到slowquery/client_agent_script目录下,把slowquery_analysis.sh脚本拷贝到生产MySQL主库上做慢日志分析推送,并修改里面的配置信息定时任务(10分钟一次)
 cd /var/www/html/slowquery/client_agent_script
 vi slowquery_analysis.sh#!/bin/bash
#改成你的运维管理机MySQL地址(用户权限最好是管理员)
 slowquery_db_host="192.168.148.101"
 slowquery_db_port="3306"
 slowquery_db_user="root"
 slowquery_db_password="mypassword"
 slowquery_db_database="sql_db"#改成你的生产MySQL主库地址(用户权限最好是管理员)
 mysql_client="/usr/local/mysql/bin/mysql"
 mysql_host="192.168.148.101"
 mysql_port="3306"
 mysql_user="root"
 mysql_password="mypassword"#改成你的生产MySQL主库慢查询目录和慢查询执行时间(单位秒)
 slowquery_dir="/data/mysql/data/slow.log/"
 slowquery_long_time=2
 slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password  -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'`pt_query_digest="/root/percona-toolkit-3.0.12/bin/pt-query-digest"
#改成你的生产MySQL主库server_id
 mysql_server_id=148101#collect mysql slowquery log into slowquery database
 $pt_query_digest --user=$slowquery_db_user --password=$slowquery_db_password --port=$slowquery_db_port --review h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review  --history h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review_history  --no-report --limit=100% --filter=" \$event->{add_column} = length(\$event->{arg}) and \$event->{serverid}=$mysql_server_id " $slowquery_file > /tmp/slowquery_analysis.log##### set a new slow query log ###########
 tmp_log=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "select concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep log|sed -n -e '2p'`#config mysql slowquery
 $mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log=1;set global long_query_time=$slowquery_long_time;"
 $mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log_file = '$tmp_log'; "#delete log before 7 days
 cd $slowquery_dir
 /usr/bin/find ./ -name 'slowquery_*' -mtime +7|xargs rm -f ;####END####
crontab -e
*/10 * * * * /bin/bash /var/www/html/slowquery/client_agent_script/slowquery_analysis.sh > /dev/null 2>&1

5、访问界面,查看慢查询
打开浏览器访问http://192.168.148.101/slowquery/slowquery.php

分析windows的mysql慢日志 处理mysql慢日志工具_perl

6、配置邮件报警

cd /var/www/html/slowquery/alarm_mail
 vi sendmail.php<?php
$get_mail_content = get_include_contents('get_top100_slowsql.php');
function get_include_contents($filename) {
     if (is_file($filename)) {
         ob_start();
         include $filename;
         $contents = ob_get_contents();
         ob_end_clean();
         return $contents;
     }
     return false;
 }    $smtpserver = "smtp.126.com";//SMTP服务器
     $smtpserverport = 25;//SMTP服务器端口
     $smtpusermail = "test@126.com";//SMTP服务器的用户邮箱
     $smtpemailto = 'test@126.com';//发送给谁
     $smtpuser = "test@126.com";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
     $smtppass = "123456";//SMTP服务器的授权码
     $mailtitle='【告警】慢查询报警推送TOP100条,请及时优化.';


    $mailcontent='下面的慢查询语句或许会影响到数据库的稳定性和健康性,请您在收到此邮件后及时优化语句或代码。数据库的稳定性需要大家的共同努力,感谢您的配合!<br><br>' .$get_mail_content .'<br><br>该邮件由slowquery系统自动发出,请勿回复,
语句详细执行情况请登录<a href="http://xxxxx">slowquery系统查看.<br><br>';

system("./sendEmail -f $smtpusermail -t $smtpemailto  -s $smtpserver:$smtpserverport -u '$mailtitle' -o message-charset=utf8 -o message-content-type=html -m '$mailcontent' -xu $smtpusermail  -xp '$smtppass'");

  

分析windows的mysql慢日志 处理mysql慢日志工具_mysql_02

wget http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz
     tar -zxf perl-5.10.0.tar.gz
     cd perl-5.10.0
     ./configure.gnu -des -Dprefix=/usr/local/perl
     echo $?
     make
     make test
     make install
     mv /usr/bin/perl /usr/bin/perl.bak
     ln -s /usr/local/perl/bin/perl /usr/bin/perl
     perl -v