对于正在运行的mysql,性能如何,参数设置是否合理,账户设置是否存在安全隐患,你知道吗出色地?俗话说,工欲善其事,必先利其器。定期对您的MYSQL数据库进行体检是保证数据库安全运行的重要手段,因为一个好的工具可以让您的工作效率翻倍!今天给大家分享几款mysql优化工具。你可以用它们对你的mysql进行体检并生成awr报告,这样你就可以从整体上掌握你的数据库的性能。mysqltuner.pl是mysql常用的数据库性能诊断工具。主要检查参数设置的合理性,包括日志文件、存储引擎、安全建议和性能分析。针对可能存在的问题提出改进建议。是mysql优化的好帮手。在之前的版本中,MySQLTuner支持MySQL/MariaDB/PerconaServer大约300个指标。项目地址:https://github.com/major/MySQLTuner-perl下载[root@localhost~]#wgethttps://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl使用[root@localhost~]#./mysqltuner.pl--socket/var/lib/mysql/mysql.sock>>MySQLTuner1.7.4-MajorHayden>>错误报告、功能请求和下载地址http://mysqltuner.com/>>Runwith'--help'以获得额外的选项和输出过滤[--]SkippedversioncheckforMySQLTunerscriptPleaseenteryourMySQLadministrativelogin:rootPleaseenteryourMySQLadministrativepassword:[OK]CurrentlyrunningsupportedMySQLversion5.7.23[OK]Operatingon64-bitarchitecturereportanalysis]Maximumpossiblememoryusage:4.8G(244.13%ofinstalledRAM),说明内存已被严重使用。2)关注最后一条建议“Recommendations”。tuning-primer.shmysql的另一个优化工具,对mysql进行整体体检,针对潜在问题给出优化建议。项目地址:https://github.com/BMDan/tuning-primer.sh目前支持检测和优化建议的内容如下:下载[root@localhost~]#wgethttps://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh使用[root@localhost~]#[root@localhostdba]#./tuning-primer.sh--MYSQLPERFORMANCETUNINGPRIMER---By:MatthewMontgomery-reportanalysiskeyview有红色警告选项,可以根据建议根据自己系统的实际情况修改,例如:pt-variable-advisor问题。安装https://www.percona.com/downloads/percona-toolkit/LATEST/[root@localhost~]#wgethttps://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-re85ce15-el7-x86_64-bundle.tar[root@localhost~]#yuminstallpercona-toolkit-3.0.13-1.el7.x86_64.rpm使用pt-variable-advisoryespt工具集的一个子工具,主要用来诊断你的参数设置是否合理。[root@localhost~]#pt-variable-advisorlocalhost--socket/var/lib/mysql/mysql.sock报告分析重点是有WARN信息的条目,例如:pt-qurey-digestpt-query-digest主要功能是从日志、进程列表和tcpdump分析MySQL查询。有关安装的详细信息,请参阅第3.1节。使用pt-query-digest主要用于分析mysql的慢日志。与mysqldumpshow工具相比,py-query_digest工具的分析结果更加具体和完整。[root@localhost~]#pt-query-digest/var/lib/mysql/slowtest-slow.log常见用法分析1)慢查询文件直接分析:pt-query-digest/var/lib/mysql/slowtest-slow.log>slow_report.log2)分析最近12小时内的查询:pt-query-digest--since=12h/var/lib/mysql/slowtest-slow.log>slow_report2.log3)分析指定时间内的查询范围:pt-query-digest/var/lib/mysql/slowtest-slow.log--since'2017-01-0709:30:00'--until'2017-01-0710:00:00'>>slow_report3.log4)分析指慢查询pt-query-digest--filter'$event->{fingerprint}=~m/^select/i'/var/lib/mysql/slowtest-slow.log>slow_report4.log5包含select语句)某个用户的慢查询pt-query-digest--filter'($event->{user}||"")=~m/^root/i'/var/lib/mysql/slowtest-慢的。log>slow_report5.log6)查询所有全表扫描或fulljoin慢查询pt-query-digest--filter'(($event->{Full_scan}||"")eq"yes")||(($event->{Full_join}||"")eq"yes")'/var/lib/mysql/slowtest-slow.log>slow_report6.log报告分析第1部分:整体统计结果Overall:总时间范围内有多少查询e:查询执行的时间范围unique:唯一查询的个数,即参数化查询条件后,总共有多少个不同的查询total:totalmin:最小值max:最大值avg:平均值95%:所有值从小到大排列,位置在95%的数,这个数一般是最有参考价值的median:中位数,将所有值从小到大排列,中间的数第2部分:查询组统计resultsRank:所有语句的排名,默认按照查询时间降序排列,通过--order-by指定QueryID:语句的ID,(去掉多余的空格和文本字符,计算hash值)Response:totalresponsetimetime:本次分析查询的总时间timecalls:执行次数,即本次分析总共有多少条该类型的查询语句R/Call:平均响应时间每次执行的V/M:响应的比率setimeVariance-to-meanItem:query第三部分对象:每个query的详细统计结果ID:query的ID号,对应上图中的QueryIDDatabases:数据库名Users:the每个用户执行的次数(比例)Query_timedistribution:查询时间分布,lengthbody当前区间占比Tables:查询涉及的表Explain:SQL语句