在前面的文章里面我们介绍了archery相关的文章,在archery的UI界面上有一个慢查日志的功能,如下图:
利用这个功能,我们可以可视化分析线上的慢sql查询日志。但是一般小伙伴发现我们的mysql上配置了慢查询日志之后,在archery里面添加了实例之后,在这个archery的页面上查询不到结果,如下图:
这是怎么回事呢?其实这主要是我们没有配置好工具,下面我们来介绍下整个工具的配置过程。
1、目标mysql的慢sql查询配置
需要监控的mysql数据库a实例需要配置mysql慢查询,慢查询日志配置可参考:《mysql如何配置慢查询记录?》。因为在archery里面主要是针对于目标mysql数据库实例a的慢日志进行数据分析。
2、安装percona-toolkit工具
前面我们有了mysql的慢sql日志log,那么我们就需要对这个慢sql日志进行提炼分析,所以需要安装一个percona-toolkit工具。详细的安装教程可参考:《mysql运维工具percona-toolkit安装教程》。
备注,这里的percona-toolkit工具需要安装在可以访问mysql的慢日志的服务器上,如果mysql是直接安装在宿主机上的,那么就需要把perconna-toolkit安装到当前mysql的宿主机上,如果mysql是docker安装的,我们不建议把perconna-toolkit安装在docker实例里面,而是把mysql的慢sql日志log给映射到宿主机上,然后把perconna-toolkit安装在宿主机上,并且让其有访问映射出来的mansql日志log的权限。
3、找到archery自带的mysql
这里我们一般启动archery的时候都是通过docker-compose安装的,因此启动完毕之后,在docker实例里面可以看到有一个mysql实例,如下图:
这里的mysql是属于archery的,不是属于我们需要检测的目标mysql实例,因此这里的mysql实例我们把他成为mysql数据库b。这个mysql数据库b是和archery安装在一起的。
4)在archery的库里面创建监听表
接着我们使用navicat访问下archery自带的这个mysql数据库实例b,访问的账号密码可以在archery的源码中${archery_home}/src/docker-compose/docker-compose.yml文件中找到对应的mysql密码,默认是:
mysql账号:archery mysql密码:123456
如下图:
然后我们使用navicat进入到这个mysql中。这里如果是使用docker-compose启动的mysql,默认是进不去的,需要进行修改后才可以进去,详情参考:《Archery使用docker-compose启动的mysql访问不了怎么办?》。进去之后我们可以看到有一个archery的库,里面其实已经有mysql_slow_query_review表和mysql_slow_query_review_history表了。如果没有的话,我们就使用前面的sql文件进行创建即可。
5)执行脚本
在archery的源码目录:${archery_home}/src/script目录下有一个analysis_slow_query.sh这个文件,如下图:
我们把这个文件放到目标监测的mysql数据库a所在的服务器上,这里我们放在/mnt/pt目录下的,如下图:
然后我们把这个文件授权777一下,命令是:
chmod 777 analysis_slow_query.sh
然后我们修改下这个文件修改的信息主要是以下部分:
修改完成之后,我们把这个文件执行一下:
第一次执行的时候,可能会提示:
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER possibly with SSL_ca_file|SSL_ca_path for verification
如果遇到这个问题,可以不用管,再执行一次即可:
第二次就不会再出现了。等待执行完毕之后,我们可以去archery的数据库对应的mysql_slow_query_review表和mysql_slow_query_review_history表看下是否有数据:
可以看到这些表都有了数据,然后我们再登录下archery的web上看看效果:
可以看到这里面已经有数据了。以上就是archery慢日志查询模块的配置使用方法。
备注:
1、这里的话,我们如果使用docker-compose启动的话,需要把mysql的权限给放开来。
2、这里analysis_slow_query.sh脚本会分析目的mysql的慢日志,分析完成后会把数据上报给archery对应的数据库里面。
3、analysis_slow_query.sh脚本需要部署到任何需要监听慢日志sql分析的对应sql的相关服务器上,并且需要让analysis_slow_query.sh脚本有访问mysql慢日志的权限。
4、这里的analysis_slow_query.sh脚本一般我们会做一个crontab日志来进行执行,大概频率为每一分钟,crontab示例如下:
*/1 * * * * /mnt/pt/analysis_slow_query.sh
当任务执行之后,这个sh脚本同目录的文件夹下会生成一个last_analysis_time文件,如下图:
我们cat这个文件就能知道上一次是什么时候执行的,如下图:
5、需要分析的mysql的慢日志log需要做定时切割,如果过大的话,影响分析效率。
还没有评论,来说两句吧...