细节
-
错误
-
状态: Done">完成
-
高
-
解决方法: 固定
-
3.0.10,此处,3.0.12,3.0.13
-
没有一个
-
1
描述
从perco雷竞技下载官网na toolkit 3.0.10开始,发布说明中声明pt-table-checksum禁用QRT插件。根据——disable-qrt-plugin命令行标志,这可能是一个可配置的选项。
然而,pt-table-checksum强制禁用所有slave上的QRT,不管这个选项的值是多少——除非这个选项被显式地设置为TRUE,否则它仍然是OFF。
在主机上禁用QRT由if()语句控制- if($o->get('disable-qrt-plugin')在第10158行(这是PT 3.0.13)
但是从第10492行开始,对于slave没有这样的if()语句。
为我的$slave (@$slaves) {My $qrt_plugin_status;Eval {($qrt_plugin_status) = $slave->{dbh}->selectrow_arrayref(“选择@@QUERY_RESPONSE_TIME_SESSION_STATS”);};如果($EVAL_ERROR) {PTDEBUG && _d“QRT插件未安装在从机上”。奴隶- > {dsn_name});$slave->{qrt_plugin_status} = undef;下一个;} $奴隶- > {qrt_plugin_status} = $ qrt_plugin_status - > [0];如果($slave->{qrt_plugin_status}) {PTDEBUG && _d(在slave上禁用qrt插件状态。奴隶- > {dsn_name});奴隶- >{胸径}- >做('SET GLOBAL query_response_time_stats = off');}}
然后在11523行,当QRT插件被重置回其原始值时,代码再次被包装在条件中:
#恢复原始QRT pligin状态如果(o - >(美元“disable-qrt-plugin”) {eval {如果($original_qrt_plugin_master_status) {PTDEBUG && _d(在主服务器上恢复qrt插件状态);master_dbh - >做("SET GLOBAL query_response_time_stats = $original_qrt_plugin_master_status->[0]");}为我的$slave (@$slaves) {如果($slave->{qrt_plugin_status}) {PTDEBUG && _d(“在从机上恢复qrt插件状态”。奴隶- > {dsn_name});奴隶- >{胸径}- >做("SET GLOBAL query_response_time_stats = $slave->{qrt_plugin_status}");}}};如果($EVAL_ERROR){警告无法恢复qrt_plugin状态:$EVAL_ERROR;}}
所以,QRT默默地被关闭,它永远不会回来-如果你的奴隶被提升为主人,你会想知道为什么你突然没有指标。
解决这个问题的方法很简单——用if $o->get('disable-qrt-plugin') {..}”
附件
问题的链接
- 中提到的
-
页面加载……