Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ 问题咨询 ]慢查询日志配置 #377

Closed
Myshiner opened this issue Aug 12, 2019 · 33 comments
Closed

[ 问题咨询 ]慢查询日志配置 #377

Myshiner opened this issue Aug 12, 2019 · 33 comments
Labels
question Further information is requested

Comments

@Myshiner
Copy link

问题描述

我想配置慢查询日志功能,按照文档上说的,有些疑问如下:

  1. 安装percona-toolkit,以centos为例---这个percona-toolkit是在archery主机上安装还是在我的线上mysql服务器上安装呢?
    yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    yum -y install percona-toolkit
  2. 使用mysql_slow_query_review.sql创建慢日志收集表 --这个两个表是在archery的mysql实例上安装呢还是我的线上mysql上面安装,在哪个schema中创建呢?(archery库上吗?)
  3. 将analysis_slow_query.sh部署到各个mysql实例,注意修改脚本里面hostname="${mysql_host}:${mysql_port}"与archery实例信息一致 --这个是要放在各个mysql服务器的crontab中吗?

版本信息

  • 应用版本/分支:如何看版本呢
  • 部署方式:Docker

谢谢!

@Myshiner Myshiner added the question Further information is requested label Aug 12, 2019
@hhyo
Copy link
Owner

hhyo commented Aug 12, 2019

准备使用慢日志管理的话,可以先熟悉pt-query-digest工具,上面的问题也就理解了

  1. 部署在能访问慢日志文件的机器上面,可以是MySQL实例,也可以是一个集中的慢日志管理机器,比如定时将所有实例的慢日志同步到该机器进行分析,以最大程度上减少对实例的影响
  2. 在archery库创建,慢日志数据会由工具分析后写入archery库,提供给前台展示
  3. crontab或者其他定时任务管理的工具都可以,部署调度机器和第一个一致

#163

@Myshiner
Copy link
Author

好的,谢谢!

@Myshiner Myshiner reopened this Aug 12, 2019
@Myshiner
Copy link
Author

您好,我把已经创建了表,然后在我的mysql实例服务器上部署了analysis_slow_query.sh脚本,而且修改了hostname="${mysql_host}:${mysql_port}"为“192.168.213.111:3306”(192.168.213.111就是archery的ip),monitor_db_host也改成了192.168.213.111,但是我手动执行脚本测试的时候报错“DBI connect(';host=/home/mysql/log_slow.log;mysql_read_default_group=client','',...) failed: Unknown MySQL server host '/home/mysql/log_slow.log' (1) at /usr/bin/pt-query-digest line 1001”,是哪里配错了?
我理解的意思是在我的mysql服务器上收集分析慢查询日志推送到archery实例中没错吧。

@Myshiner
Copy link
Author

我修改了一下日志目录没问题了,我手动执行了一下没报错了,我看/tmp/analysis_slow_query.log中慢查询记录是空的,但是其实应该是有记录才对,我对了一下mysql实际的慢查询文件里面是有慢查询语句的。

@hhyo
Copy link
Owner

hhyo commented Aug 12, 2019

如果慢日志文件却有数据,应该是是时间过滤的问题,可删除对应文件后进行全量分析

#获取上次分析时间,初始化时请删除last_analysis_time_$hostname文件,可分析全部日志数据
if [ -s last_analysis_time_$hostname ]; then

@Myshiner
Copy link
Author

是的,我手动删除了,然后又手动执行了一遍脚本,还是显示为空,/tmp/analysis_slow_query.log里面也是空的
image

@hhyo
Copy link
Owner

hhyo commented Aug 12, 2019

不需要关心这个日志,检查archery数据库的两张表的数据即可。

@hhyo hhyo closed this as completed Aug 12, 2019
@Myshiner
Copy link
Author

嗯,两张表里面是有数据的,但是在web界面的“慢查日志”里面并没有显示出来

@Myshiner
Copy link
Author

image

@hhyo

This comment has been minimized.

@hhyo

This comment has been minimized.

@Myshiner
Copy link
Author

sorry.

您是说我的analysis_slow_query.sh脚本错了吗?但是mysql_slow_query_review表和mysql_slow_query_review_history都有慢查询的sql的,就是没有展示出来。
还是说我别的地方配置有问题。
为的脚本是这样的:
#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"
cd $DIR

#配置archery数据库的连接地址
monitor_db_host="192.168.11.10" ##192.168.11.10是archery的ip
monitor_db_port=3306
monitor_db_user="root"
monitor_db_password="123456"
monitor_db_database="archery"

#实例慢日志位置
slowquery_file="/xdfappdev/mysql_dev/mysql-slow-$(date -d last-day +%F).log"
pt_query_digest="/usr/bin/pt-query-digest"

#实例连接信息
hostname="192.168.11.10:3306" # 和archery实例配置内容保持一致,用于archery做筛选

#获取上次分析时间,初始化时请删除last_analysis_time_$hostname文件,可分析全部日志数据
if [ -s last_analysis_time_$hostname ]; then
last_analysis_time=cat last_analysis_time_$hostname
else
last_analysis_time='1000-01-01 00:00:00'
fi

#收集日志
#RDS需要增加--no-version-check选项
$pt_query_digest
--user=$monitor_db_user --password=$monitor_db_password --port=$monitor_db_port
--review h=$monitor_db_host,D=$monitor_db_database,t=mysql_slow_query_review
--history h=$monitor_db_host,D=$monitor_db_database,t=mysql_slow_query_review_history
--no-report --limit=100% --charset=utf8
--since "$last_analysis_time"
--filter="$event->{Bytes} = length($event->{arg}) and $event->{hostname}="$hostname" and $event->{client}=$event->{ip} "
$slowquery_file > /tmp/analysis_slow_query.log

echo date +"%Y-%m-%d %H:%M:%S">last_analysis_time_$hostname

@hhyo
Copy link
Owner

hhyo commented Aug 12, 2019

参考FAQ,是hostname的配置问题
https://github.com/hhyo/archery/wiki/FAQ#慢日志不显示

可能文档写的存在比较大的歧义,在解决问题后希望可以帮忙完善慢日志相关的文档,wiki开放编辑

感谢

@Myshiner
Copy link
Author

好的,已经好了,非常感谢!

@gdsea
Copy link

gdsea commented Aug 26, 2019

你用的是哪个版本,你是如何处理好的,我使用1.6.6也遇到了慢日志在web端不显示的问题。
下面是慢日志收集表mysql_slow_query_review_history中的一条记录。
mysql> select * from mysql_slow_query_review_history limit 1\G;
*************************** 1. row ***************************
id: 10
hostname_max: 192.168.1.132:8013
client_max: 192.168.1.132
user_max: pmm
db_max: NULL
checksum: 6E905E29D0B3D1EA1A2193E75E153007
sample: SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT
FROM performance_schema.events_waits_summary_global_by_event_name
ts_min: 2019-07-10 19:26:52.000000
ts_max: 2019-08-24 13:16:00.000000

另外是实例列表中的host、port分别为192.168.1.132,,8013
脚本配置如下
#实例连接信息
hostname="192.168.1.132:8013" # 和archery实例配置内容保持一致,用于archery做筛选

@kiddyt00
Copy link

你好,关于慢日志配置,我本地mysql实例没问题,就是不知道阿里云的RDS实例要怎么启用,文档上好像也没有写的很清楚 @hhyo

@hhyo
Copy link
Owner

hhyo commented Aug 26, 2019

你好,关于慢日志配置,我本地mysql实例没问题,就是不知道阿里云的RDS实例要怎么启用,文档上好像也没有写的很清楚 @hhyo

RDS管理的配置:

  • 在后台管理添加RDS AK信息 (进程、表空间属于CloudDBA的功能,需要管理权限的KEY)
  • 修改实例关联RDS的实例ID并且启用

配置完成后将会直接通过RDS API获取慢日志、进程状态、表空间

@Myshiner
Copy link
Author

Myshiner commented Aug 26, 2019 via email

@yuandajn578
Copy link
Contributor

@hhyo
您好,从宿主机貌似无法连接容器内的mysql实例啊:
DBI connect(';host=127.0.0.1;port=3306;charset=utf8;mysql_read_default_group=client','root',...) failed: Can't connect to MySQL server on '127.0.0.1' (111) at /usr/bin/pt-query-digest line 1001.

@LeoQuote
Copy link
Collaborator

LeoQuote commented Sep 8, 2019

@hhyo 忘了慢日志这茬了,看来mysql还是要映射一下🤦🏽‍♂️

@yuandajn578
Copy link
Contributor

在my.cnf中配置了bind-address=0.0.0.0,不起作用。

@LeoQuote
Copy link
Collaborator

LeoQuote commented Sep 8, 2019

@yuandajn578 建议你新提issue 按照issue模板中的提示提供archery 版本和部署方式, 详细描述报错产生的过程.

另外 master 分支的程序仍在开发中, 不建议生产使用.

@hhyo
Copy link
Owner

hhyo commented Sep 8, 2019

@hhyo
您好,从宿主机貌似无法连接容器内的mysql实例啊:
DBI connect(';host=127.0.0.1;port=3306;charset=utf8;mysql_read_default_group=client','root',...) failed: Can't connect to MySQL server on '127.0.0.1' (111) at /usr/bin/pt-query-digest line 1001.

docker如果不熟悉,建议还是使用手动部署,如果真想使用docker,请务必熟悉相关知识,否则后续遇遇到问题既无法定位也不能及时解决,给生产运维埋下隐患。现在连不上是因为mysql端口没有映射,后续docker相关问题不再回复,希望理解

@tigerbin
Copy link

image
image
这个报错是啥情况啊。。。数据库里面都有数据了。

@hhyo
Copy link
Owner

hhyo commented Oct 14, 2019

@tigerbin 升级还是全新部署的,对HTML资源是否做了缓存,看起来前端没有提交搜索参数

@dbcmp
Copy link

dbcmp commented Oct 15, 2019

阿里云rds的慢日志在archery本地库那两个表不保存吗

@hhyo
Copy link
Owner

hhyo commented Oct 15, 2019

阿里云rds的慢日志在archery本地库那两个表不保存吗

不保存,直接通过api获取

@lxkaka

This comment has been minimized.

@LeoQuote

This comment has been minimized.

@yangruiyou85
Copy link

咨询下,将analysis_slow_query.sh部署到各个mysql实例 ,怎么放置的? 目前页面没有慢查询日志出来,表里面也没有数据。

@yangruiyou85
Copy link

@Myshiner 能否留个联系方式,交流下archery 关于慢查询的部署

@FSerKevin
Copy link

请问下,是通过这种方法 获取aws RDS的慢日志数据 一致报错,
1627097496(1)

@LeoQuote
Copy link
Collaborator

@ssklkmije07 你好,新问题请开新issue

Repository owner locked as off-topic and limited conversation to collaborators Jan 11, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests