pt-stalk¶
的名字¶
pt-stalk——收集法医MySQL数据当问题发生。
剧情简介¶
使用¶
pt- - - - - -茎(选项]
pt-stalk等待一个触发条件发生,然后收集数据来帮助诊断问题。工具的目的是作为一个守护进程使用root特权运行,这样你就可以诊断间歇性问题,不能直接观察到。您还可以使用它来执行一个自定义命令,或收集的数据需求,而等待触发发生。
风险¶
雷竞技下载官网Percona工具包已经成熟,证明在现实世界中,和很好的测试,但所有数据库工具可以对系统和数据库服务器构成风险。在使用这个工具之前,请:
阅读工具的文档
检查工具的“错误”
非生产服务器上测试工具
备份您的生产服务器和验证备份
描述¶
有时一个问题很少发生在很短的时间内,给你没有机会看到它发生时系统。你如何解决间歇性MySQL的问题当你不能看到他们吗?这就是为什么pt-stalk的存在。除了使用的时候有一个已知的问题在你的服务器,它是一个好主意pt-stalk所有的时间,即使你认为没有什么是错的。你会欣赏它收集的数据出现问题时,因为MySQL锁仓或高峰活动等问题通常没有留下任何证据用于根本原因分析。
pt-stalk做两件事:这手表一个MySQL服务器并等待一个触发条件发生时,触发发生时收集诊断数据。为了避免假阳性引起的短暂的问题,触发条件至少必须是真实的——周期
次一个——收集
触发。
使用pt-stalk实际上,您需要定义一个好触发。良好的触发足够敏感的可靠当问题发生时,你不要错过机会解决问题。另一方面,一个好的触发不容易出现假阳性,所以你不收集信息时,服务器正常运行。
最可靠的触发MySQL往往是连接到服务器的数量,和并发运行的查询数量。这些可用Threads_connected和Threads_running显示全球状态命令。有时Threads_connected不是一个可靠指标的麻烦,但是Threads_running通常是。你的工作,作为工具的用户,是定义一个适当的触发条件的工具。仔细选择,因为你的质量结果将取决于您选择的触发。
你定义的触发器——函数
,——变量
,——阈值
,——周期
选项。这些选项的默认值定义一个合理的触发,但你应该调整或改变他们套件特定系统和需求。
默认情况下,pt-stalk工具手表MySQL永远直到触发发生时,然后它收集诊断数据,来避免重复收集数据,然后睡觉,如果触发仍然是正确的。一般的操作顺序是:
而真正的;做如果——变量从——函数>——阈值;然后cycles_true + +如果cycles_true>=——周期;然后——notify-by-email如果——收集;然后如果——disk-bytes-free和——disk-pct-free好吧;然后(——收集为——运行时秒)&firm文件在——桌子老比——保留时间fiiter + +cycles_true=0fi如果iter<——迭代;然后睡眠——睡眠秒其他的打破fi其他的如果iter<——迭代;然后睡眠——时间间隔秒其他的打破fifi完成rm老——桌子文件老比——保留时间如果——收集过程是仍然运行;然后等待向上来——运行时*3秒杀了任何剩下的——收集流程fi
诊断数据写入文件的名字从一个时间戳开始,这样你就可以区分彼此的工具收集样本数据多次。pt-sift工具旨在帮助您浏览和分析结果数据样本。
尽管这听起来很简单,在实践中有许多微妙之处,如检测磁盘时开始填满,这样工具不会引起服务器耗尽磁盘空间。这个工具处理这些类型的潜在问题,这是一个好主意使用这个工具,而不是从头开始写东西,可能经历的一些旨在避免危害这个工具。
配置¶
您可以使用标准Percona工具包配置文件雷竞技下载官网设置命令行选项。
你可能会想要运行该工具至少作为一个守护进程和定制的——阈值
。下面是一个示例配置文件有超过20岁时触发查询运行:
daemonize阈值=20.
选项¶
- ——ask-pass ¶
-
连接到MySQL时提示输入密码。
- ——collect-gdb ¶
-
收集GDB异常堆栈。这是通过连接到MySQL和印刷所有线程的堆栈跟踪。这将冻结服务器一段时间,从一秒左右到更长时间很忙系统大量的内存和许多线程服务器。因此,默认情况下是禁用的。然而,如果你试图诊断服务器失速或锁定,冻结服务器没有造成额外的伤害,和堆栈跟踪可以为诊断是至关重要的。
除了冻结服务器之外,也有一些风险的服务器崩溃或GDB后执行严重分离。
- ——收集oprofile ¶
-
收集oprofile数据。这是通过一个oprofile会话开始,让它运行,收集一次,然后停止并保存在系统中生成的配置文件数据的默认位置。请阅读系统的oprofile文档以了解更多关于这个。
- ——collect-strace ¶
-
收集strace数据。这是通过将strace附加到服务器,这将使它运行非常缓慢,直到strace分离。应用相同的警告那些在-collect-gdb上市。你不应该启用该选项-collect-gdb一起,因为GDB和strace不能同时连接到服务器进程。
- ——collect-tcpdump ¶
-
收集tcpdump数据。这个选项让tcpdump捕获所有流量对所有接口的端口MySQL是倾听。你可以以后使用pt-query-digest解码MySQL协议和提取日志查询交通。
- ——配置 ¶
-
类型:字符串
读取这个配置文件的逗号分隔列表。如果指定的,这必须在命令行中第一个选项。
- ——daemonize ¶
-
Daemonize工具。这导致工具叉到背景和其输出指定登录日志。
- ——defaults-file ¶
-
简式:- f;类型:字符串
从给定的文件只读mysql选项。你必须给一个绝对路径名。
- ——disk-bytes-free ¶
-
类型:大小;默认值:100
不
——收集
如果磁盘不到这么多的自由空间。这可以防止工具和诊断数据填满磁盘。如果
——桌子
目录包含先前捕获的样本数据,该工具将测量它的大小和使用它作为估计多少数据可能聚集这一次。它将更为悲观,会拒绝收集数据,除非磁盘有足够的空闲空间来保存样本,还有所需的大量的自由空间。举个例子,如果你想100 mb的自由空间和之前的诊断示例使用100 mb,工具不会收集任何数据,除非磁盘有200 mb免费。有效的后缀是k值大小,M, G, T。
- ——disk-pct-free ¶
-
类型:int;默认值:5
不
——收集
如果磁盘已小于这个百分比自由空间。这可以防止工具和诊断数据填满磁盘。这个选项类似于工作
——disk-bytes-free
但指定百分比安全边际,而不是字节安全边际。荣誉的工具选项,和不会收集任何数据,除非利润率都满意。
- ——函数 ¶
-
类型:字符串;默认值:状态
看点扳机。默认值表
显示全球状态
,但你也可以观看显示PROCESSLIST
并指定一个文件,您自己的自定义代码。这个函数提供的价值——变量
,然后比较反对——阈值
触发条件是否满足。可能需要额外的选项;见下文。可能的值是:状态
看
显示全球状态
触发。的价值——变量
然后定义状态计数器的触发。processlist
此外,您可以指定一个文件,其中包含您的自定义触发功能,用Unix shell脚本。这可能是一个包装器执行任何你的愿望。如果参数
——函数
是一个文件,那么它优先于内置函数,如果有工作目录中的一个文件名为“状态”或“processlist”然后这个工具将使用该文件,即使是有效的内置值。文件是通过提供一个函数调用
trg_plugin
,工具简单的源文件和执行功能。例如,文件可能包含:trg_plugin(){mysqlEXT_ARGV美元- e“显示引擎INNODB状态”\|grep- c“等待”}
这段代码将计算互斥锁等待在InnoDB的数量。它说明了一般原则:函数必须输出一个数字,然后相比
——阈值
像往常一样。的EXT_ARGV美元
变量包含MySQL选择上面的“简介”中提到的。文件不应改变现有的全局变量的工具。前缀任何file-specific全局变量
PLUGIN_
或者让他们当地。
- ——帮助 ¶
-
打印帮助并退出。
- ——主机 ¶
-
简式:- h;类型:字符串
主机连接。
- ——时间间隔 ¶
-
类型:int;默认值:1
多长时间检查如果触发是真的,在几秒钟内。
- ——迭代 ¶
-
类型:int
多少次,
——收集
诊断数据。默认情况下,该工具运行永远和每一次收集数据触发发生。指定——迭代
收集数据的次数有限。这个选项也很有用——no-stalk
例如,一旦收集数据并退出。
- ——日志 ¶
-
类型:字符串;默认值:/var/log/pt-stalk.log
当监控打印所有输出文件。
- ——密码 ¶
-
简式:- p;类型:字符串
连接时使用的密码。如果密码包含逗号他们必须用反斜杠转义:“考试,请耐心”
- ——pid ¶
-
类型:字符串;默认值:/var/run/pt-stalk.pid
创建给定的PID文件。这个工具不会开始如果PID文件已经存在,它所包含的PID不同于当前的PID。然而,如果PID文件存在,它所包含的PID不再运行,这个工具将覆盖PID文件与当前PID。PID文件删除工具时自动退出。
- ——插件 ¶
-
类型:字符串
加载插件钩到工具和扩展功能。指定的文件不需要可执行文件,它的第一行也不需要工作。它只需要定义一个或多个Bash函数:
before_stalk
在跟踪。
before_collect
在运行之前触发发生时调用
——收集
子流程的背景。after_collect
之后调用运行一个收藏家的过程。收集器过程的PID作为第一个参数传递。这个钩子叫做之前
after_collect_sleep
。after_collect_sleep
称为后睡觉
——睡眠
秒收集器过程完成。这个钩子叫做后after_collect
。after_interval_sleep
称为后睡觉
——时间间隔
秒后每个触发器。after_stalk
称为后跟踪。自pt-stalk茎永远在默认情况下,这个钩子只是如果
——迭代
都是确定的。例如,一个非常简单的插件时,触动一个文件
——收集
触发:before_collect(){触摸/ tmp / foo}
因为插件完全采购(进口)工具的名称空间,小心不要定义其他函数或全局变量已经存在的工具。你应该前缀所有plugin-specific函数和全局变量
plugin_
或PLUGIN_
。插件可以访问所有命令行选项,但是他们不应该修改它们。每个选项是一个全局变量
OPT_DEST美元
这对应于——桌子
。因此,每个命令行选项的全局变量OPT_
加上选项名称全部大写为连字符替换为下划线。插件可以停止该工具通过设置全局变量
OKTORUN
来1
。在这种情况下,全局变量EXIT_REASON
还应该设置为显示工具是停止的原因。插件作者应该记住,当前使用的文件的目的地前缀应该通过访问
美元的前缀
变量,而不是OPT_PREFIX美元
。
- ——mysql-only ¶
-
触发只有MySQL相关捕获,忽视其他。唯一没有MySQL值收集相关的磁盘空间,因为它是需要计算可用的空闲磁盘空间写结果文件。这个选项是有用的RDS实例。
- ——港口 ¶
-
简式:- p;类型:int
端口号用于连接。
- ——前缀 ¶
-
类型:字符串
文件名前缀为诊断样本。默认情况下,创建的所有文件相同
——收集
实例有一个时间戳前缀根据当前当地时间2011年_12_06_14_02_02
2011年12月6日,14:02:02。
- ——retention-count ¶
-
类型:int;默认值:0
使数据在过去的N。如果N > 0,该计划将使数据在过去N运行并将删除旧数据。
- ——retention-size ¶
-
类型:int;默认值:0
保持-retention-size MB的数据。它将保持至少1运行即使大小大于该参数中指定
- ——保留时间 ¶
-
类型:int;默认值:30
保留天数收集样本。老的任何样品将被净化。
- ——运行时 ¶
-
类型:int;默认值:30
多久
——收集
诊断数据触发发生时。值是在几秒钟内,不应超过——睡眠
。它通常是没有必要改变;如果默认30秒没有收集足够的数据,运行时间是不可能帮助因为系统或MySQL服务器反应可能是太忙了。事实上,在许多情况下,较短的集合时间是适当的。这个值是使用另外两次。在收集,收集子流程将等待另一个
——运行时
秒的命令来完成。一些命令可能需要一段时间,如果系统运行非常缓慢(可能的情况下,一组触发)。因为空文件删除,额外的等待时间完成给命令,写他们的数据。值可能是再次使用该工具之前退出再次等待任何收集子流程完成。在大多数情况下这不会发生,因为前面提到的额外的等待。如果它发生,这个工具将日志”到N秒等待子流程完成…”其中N是三次——运行时
。在这两种情况下,等待后,杀死了所有的子流程的工具。
- ——sleep-collect ¶
-
类型:int;默认值:1
睡多久集合之间的循环周期。这是有用的
——no-stalk
长集合。例如,收集数据为一个小时,每一分钟指定:——no-stalk——运行时3600年——sleep-collect60
。
- ——套接字 ¶
-
简式:s;类型:字符串
套接字文件用于连接。
- ——茎 ¶
-
默认值:是的,negatable:是的
看服务器并等待触发发生。指定
——no-stalk
立即收集诊断数据,而不必等待触发器。你也可能希望指定值——时间间隔
,——迭代
,——睡眠
。例如,立即收集数据1分钟然后退出,指定:——no-stalk——运行时60——迭代1
——周期
,——daemonize
,——日志
和——pid
没有影响,——no-stalk
。维护选项,如——disk-bytes-free
和——disk-pct-free
,仍然是受人尊敬的。另请参阅
——收集
。
- ——系统只 ¶
-
触发只有操作系统相关的截图,忽视其他。
- ——阈值 ¶
-
类型:int;默认值:25
最大可接受的值
——变量
。——收集
触发时的价值——变量
大于——阈值
为——周期
很多次了。目前,没有办法检查定义一个较低的阈值——变量
值太低了。另请参阅
——函数
。
- ——用户 ¶
-
简式:- u;类型:字符串
用户登录如果不是当前用户。
- ——详细 ¶
-
类型:int;默认值:2
打印或多或少的在运行的信息。自工具被设计成一个长时间运行的守护进程,默认的冗长级别只打印最重要的信息。如果你运行这个工具交互,您可能想使用冗长的水平更高。
水平打印= = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =0错误1警告2匹配触发器和集合信息3不匹配的触发器
- ——版本 ¶
-
打印工具的版本并退出。
环境¶
这个工具不需要任何配置环境变量,尽管它可以影响不同的工作通过一些变量。记住,这些都是专家的设置,在大多数情况下,不应使用。
具体来说,可以设置的变量有:
CMD_GDB
CMD_IOSTAT
CMD_MPSTAT
CMD_MYSQL
CMD_MYSQLADMIN
CMD_OPCONTROL
CMD_OPREPORT
CMD_PMAP
CMD_STRACE
CMD_SYSCTL
CMD_TCPDUMP
CMD_VMSTAT
例如,在收集iostat叫做dx的论点,而是因为你有一个NFS分区,您还需要n标志。而不是编辑源代码,您可以调用pt-stalk作为
CMD_IOSTAT=“iostat - n”pt-stalk…
将你需要做什么。结合插件钩子,这给了你一个什么工具的细粒度控制。
它可以使调试
mysqladmin指定模式:
CMD_MYSQLADMIN = ' mysqladmin调试的:计划:“pt-stalk”参数个数…
系统需求¶
这个工具需要Bash v3或更新。某些选项需要其他程序:
——collect-gdb
需要广东发展银行
——收集oprofile
需要opcontrol
和opreport
——collect-strace
需要strace
——collect-tcpdump
需要tcpdump
错误¶
一个已知的错误列表,看到https://jira.雷竞技下载官网percona.com/projects/PT/issues。
请报告错误https://jira.雷竞技下载官网percona.com/projects/PT。在错误报告中包含以下信息:
完整的命令行运行该工具使用
工具
——版本
MySQL版本所涉及的所有服务器
工具的输出包括STDERR
输入文件(日志/转储/配置文件,等等)。
如果可能的话,通过运行该工具包括调试输出PTDEBUG
;看到“环境”。
注意¶
使用< PTDEBUG >可能暴露密码。启用调试时,所有的命令行参数输出所示。
下载¶
访问http://www.雷竞技下载官网percona.com/software/percona-toolkit/下载最新版本的Percona工具包。雷竞技下载官网或者,从命令行得到最新版本:
wget雷竞技下载官网percona.com/get/percona-toolkit.tar.gz wget雷竞技下载官网percona.com/get/percona-toolkit.rpm wget雷竞技下载官网percona.com/get/percona-toolkit.deb
你也可以个人工具的最新版本:
wget雷竞技下载官网percona.com/get/TOOL
取代工具
与任何工具的名称。
关于PERC雷竞技下载官网ONA工具包¶
这个工具是Percona工具包的一部分,一雷竞技下载官网批先进的MySQL Percona开发的命令行工具。雷竞技下载官网Percona工具包是分叉的从6月份的两个项目,2011:Maatkit Aspersa。这些项目是由男爵施瓦茨和主要由他和丹尼尔走错。访问http://www.雷竞技下载官网percona.com/software/了解其他免费的,从Percona开源软件。雷竞技下载官网
版权、许可和保修¶
本节目版权2011 - 2021 Percona有限责任公司和/或其附属雷竞技下载官网公司,2010 - 2011男爵施瓦茨。
这个程序提供了“是”,没有任何明示或默示保证,包括但不限于适销性的隐含保证和健身为特定目的。
这个程序是自由软件;你可以重新分配和/或修改它根据GNU通用公共许可证由自由软件基金会发布,版本2;或Perl艺术许可证。在UNIX和类似的系统,你可以发行“男人perlgpl”或“男人perlartistic“读这些许可证。
你应该已经收到了GNU通用公共许可证的副本连同这个项目;如果不是,写信给自由软件基金会,Inc . 59庙的地方,330套房,波士顿02111 - 1307美国。
版本¶
pt-stalk3.5.2