<div id="cnblogs\_post\_body" class="blogpost-body "> <p>安装mysqlsla<br>源码路径:https://github.com/daniel-nichter/hackmysql.com<br>源码存放路径:/usr/local/src<br>1、获取源码<br>如果没有git命令,请先安装git<br>yum -y install git</p> <p>yum -y install perl-ExtUtils-Embed</p> <p>cd /usr/local/src</p> <p>git clone https://github.com/daniel-nichter/hackmysql.com.git</p> <p>mkdir -p /opt/monitorMySQL</p> <p>cp -Rf hackmysql.com /opt</p> <p>cd /opt/hackmysql.com</p> <p>cp -Rf . /opt/monitorMySQL</p> <p>rm -rf hackmysql.com</p> <p>cd /opt/monitorMySQL/mysqlsla</p> <p>perl Makefile.PL</p> <p>make && make install<br>结果:</p> <p>cp lib/mysqlsla.pm blib/lib/mysqlsla.pm<br>cp bin/mysqlsla blib/script/mysqlsla<br>/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/mysqlsla<br>Manifying blib/man3/mysqlsla.3pm<br>Installing /usr/local/share/perl5/mysqlsla.pm<br>Installing /usr/local/share/man/man3/mysqlsla.3pm<br>Installing /usr/local/bin/mysqlsla<br>Appending installation info to /usr/lib64/perl5/perllocal.pod</p> <p>2、安装其他包<br>yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes perl-DBI perl-DBD-MySQL</p> <p>列出本次安装包<br>yum list perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes perl-DBI perl-DBD-MySQL</p> <p>lt:表示日志类型,有slow, general, binary, msl, udl。<br>sf:\[+-\]\[TYPE\],\[TYPE\]有SELECT, CREATE, DROP, UPDATE, INSERT,例如”+SELECT,INSERT”,不出现的默认是-,即不包括。<br>db:要处理哪个库的日志。<br>top:表示取按规则排序的前多少条。<br>sort:按某种规则排序,t\_sum:按总时间排序;c\_sum:按总次数排序;c\_sum\_p: sql语句执行次数占总执行次数的百分比。</p> <p>#开启慢查询日志项配置</p> <p>参考文件mysql性能优化之优化配置my.cnf文件:http://www.cnblogs.com/NiceTime/p/6848132.html</p> <p>slow\_query\_log\_file=/opt/mysql/data/slow.log 需根据你安装的mysql慢查询日志路径为准。</p> <p><br>#执行时间最长的20条sql语句(默认按时长)<br>\[root@localhost mysqllog\]# mysqlsla -lt slow --sort t\_sum --top 20 /opt/mysql/data/slow.log</p> <p><br>#统计慢查询文件中所有select的慢查询sql,并显示执行时间最长的20条sql语句<br>\[root@localhost mysqllog\]# mysqlsla -lt slow -sf "+select" -top 20 /opt/mysql/data/slow.log</p> <p><br>#统计慢查询文件中的数据库为test的所有select和update的慢查询sql,并查询次数最多的20条sql语句,并写到sql\_num.log中<br>\[root@localhost mysqllog\]# mysqlsla -lt slow -sf "+select,update" -top 20 -sort c\_sum -db test /opt/mysql/data/slow.log >/usr/local/src/slow\_ip\_db\_yymm.log</p> <p>mysqlsla -lt slow -sf "+select,insert,update,delete" -top 10 -sort t\_sum -db tps138\_com /tmp/logs/mysql-slow.log >/usr/local/src/slow\_112\_tps138\_com\_080901.log</p> <p><br>#mysqlsla输出格式说明:<br>queries total: 总查询次数,unique: 去重后的sql数量<br>Sorted by: 输出报表的内容排序<br>Count : sql的执行次数及占总的slow log数量的百分比<br>Time : 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比<br>95% of Time : 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间<br>Lock Time : 等待锁的时间<br>95% of Lock : 95%的慢sql等待锁时间<br>Rows sent : 结果行统计数量, 包括平均, 最小, 最大数量<br>Rows examined : 扫描的行数量<br>Database : 属于哪个数据库<br>Users : 哪个用户,IP,占到所有用户执行的sql百分比<br>Query abstract: 抽象后的sql语句<br>Query sample : sql样例语句</p> <p><br>#如果出现该问题<br>failed: Access denied for user 'root'@'192.168.64.129' (using password: YES) at ./mysqlreport line 249</p> <p>可先在配置文件<br>/etc/my.cnf中<br>\[client\]<br>host=localhost<br>user=xxx<br>password=xxx</p> <p>重启数据库后<br>在执行该语句<br>mysql>INSERT INTO \`user\` VALUES ('%','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'mysql\_native\_password','\*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9','N',LOCALTIME(),NULL,'N');<br>mysql>fulsh privileges;</p> <p>之后再注释以下配置项<br>/etc/my.cnf中<br>\[client\]<br>host=localhost<br>user=xxxm<br>password=xxx</p> <p><br>./mysqlsla -lt slow -sf "+select,update,delete,insert" -top 10 -sort t\_sum -db tps138 /data/mysql3306/data/slow.log</p> <p>然后再执行<br>cd /opt/monitorMySQL/mysqlreport</p> <p>#本地直播APP<br>./mysqlreport --host 192.168.1.1 --user root --password 123456 --port 3306 --flush-status --no-mycnf --outfile /usr/local/src/mysqlreport\_1.csv</p> <p>原文地址:https://www.cnblogs.com/NiceTime/p/6662939.html</p> </div>