PT-131 Disable QRT plugin in pt-table-checksum

The use of QRT plugin to monitor the health of production worloads cause the QRT data
to show massive spikes in latency, even thought the workload is relatively unaffected.

Tags: pt-table-checksum
See also: PS-235
This commit is contained in:
Carlos Salguero
2018-04-27 15:37:00 -03:00
parent e3a7c8036d
commit 0ade173d0f
4 changed files with 164 additions and 26 deletions

View File

@@ -0,0 +1,68 @@
#!/usr/bin/env perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use PerconaTest;
use Sandbox;
use SqlModes;
require "$trunk/bin/pt-table-checksum";
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh = $sb->get_dbh_for('master');
my $sb_version = VersionParser->new($dbh);
my $rows = $dbh->selectall_hashref("SHOW VARIABLES LIKE '%version%'", ['variable_name']);
if ( !$dbh ) {
plan skip_all => 'Cannot connect to sandbox master';
} elsif ( $sb_version < '5.7.21' || !($rows->{version_comment}->{value} =~ m/percona server/i) ) {
plan skip_all => 'This test file needs Percona Server 5.7.21.21+';
} else {
plan tests => 3;
}
eval {
$dbh->selectrow_arrayref('SELECT @@query_response_time_session_stats' );
};
if ($EVAL_ERROR) {
$sb->load_file('master', 't/pt-table-checksum/samples/pt-131.sql');
}
# The sandbox servers run with lock_wait_timeout=3 and it is not dynamic
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = $sb->dsn_for('master');
my $output;
my $exit_status;
$ENV{PTDEBUG} = 1;
my $cmd ="PTDEBUG=1 $trunk/bin/pt-table-checksum $master_dsn --disable-qrt-plugin 2>&1";
$output = `$cmd`;
like (
$output,
qr/Restoring qrt plugin state/,
"QRT plugin status has been restored",
);
like (
$output,
qr/Disabling qrt plugin on master server/,
"QRT plugin has been disabled",
);
delete $ENV{PTDEBUG};
# #############################################################################
# Done.
# #############################################################################
$sb->wipe_clean($dbh);
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
exit;

View File

@@ -0,0 +1,16 @@
-- See https://www.percona.com/doc/percona-server/LATEST/diagnostics/response_time_distribution.html
-- This plugin is used for gathering statistics.
INSTALL PLUGIN QUERY_RESPONSE_TIME_AUDIT SONAME 'query_response_time.so';
-- This plugin provides the interface (QUERY_RESPONSE_TIME) to output gathered statistics.
INSTALL PLUGIN QUERY_RESPONSE_TIME SONAME 'query_response_time.so';
-- This plugin provides the interface (QUERY_RESPONSE_TIME_READ) to output gathered statistics.
INSTALL PLUGIN QUERY_RESPONSE_TIME_READ SONAME 'query_response_time.so';
-- This plugin provides the interface (QUERY_RESPONSE_TIME_WRITE) to output gathered statistics.
INSTALL PLUGIN QUERY_RESPONSE_TIME_WRITE SONAME 'query_response_time.so';
-- Start collecting query time metrics,
SET GLOBAL query_response_time_stats = on;