我使用以下tcpdump命令收集了关于Master的查询:
tcpdump -i any -s 65535 -x -n -nn -q -tttt 'port 3306' > tcpdump.tcp查询在多个数据库中执行。
然后,我使用以下命令通过pt查询摘要运行该文件:
pt-query-digest --output=slowlog --no-report --sample 100 --type tcpdump tcpdump.tcp > slow.log然后我和两个奴隶发生了这样的冲突:
pt-upgrade --user user --ask-pass --run-time=1h --upgrade-table percona.pt_upgrade h=10.1.1.1 h=10.1.1.2 slow.log但是我遇到了很多故障,因为它似乎没有指定应该对哪个数据库执行查询。
当在多个DB中收集查询时,应该如何使用pt-升级?AFAICT在任何地方的文档中都没有指定。
您是否应该使用--过滤器与pt-查询摘要-只输出特定数据库的查询,然后指定-数据库与pt-升级?对每个数据库进行清洗和重复。
解析我庞大的tcpdump捕获需要几个小时,所以这里的任何指导都是值得赞赏的。
谢谢!
附注:
我用这个文章作为起点,但它已经过时了。例如pt-查询摘要不再有--打印选项。
发布于 2015-06-06 18:57:11
还要注意,pt-查询摘要在解析tcpdump输出时可能无法报告查询的数据库。数据库仅在新客户端的初始连接事件中或在执行时才会被发现。如果tcpdump输出既不包含这两种内容,那么pt-查询摘要就无法发现数据库。
发布于 2015-06-18 15:32:10
我也有类似的问题。我有丢失的桌子和丢失的使用状态。有时USE语句会出现,但是有错误的数据库。我用了一个很简单的解决办法。
(序曲)我的第一期:我的slow.log是60 so长
您需要编辑的行数为n。(从我的观点来看,开发人员需要将这些信息用于调试,这也是我们历史框架的一部分)。
Fianl问题:我发现带有like和"%“的查询也很痛苦,因为解析器无法理解它们。(仍在寻找解决办法)。
如果这能帮上忙我很高兴。它是不干净的,它是长的,但它允许我找到所有的查询不符合我们的框架,尽管他们在某种程度上使它的刺激。而且,由于我们的mysql版本已经很晚了,我很高兴最终能让它们为我工作。;)
这是我的第一篇帖子。
发布于 2015-06-22 19:24:21
我们最终所做的是将基于表名的slow.log查询保存到特定于数据库的(raw)日志文件中。然后,我们指定了-类型rawlog和-数据库与pt-升级。
https://dba.stackexchange.com/questions/103198
复制相似问题