diff --git a/Changelog b/Changelog index eb11df02..73507f54 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,34 @@ Changelog for Percona Toolkit +v3.0.4 + + * Fixed bug PT-148 : pt-osc Use of uninitialized value in printf + * Fixed bug PT-144 : Constraint name is too long (> 64 chars) + * Fixed bug PT-143 : pt-archiver SELECT query fails because of primary key + * Fixed bug PT-142 : pt-online-schema-change find_child_tables slow + * Fixed bug PT-138 : Added --output-format option to pt-mongodb-summary + * Fixed bug PT-136 : pt-table-checksum fails with columns having different collation/charset + * Feature PT-141 : pt-archiver archive records into csv file + +v3.0.3 released 2017-05-19 + + * Fixed bug PT-133 : Sandbox won't start correctly if autocommit=0 in my.cnf + * Fixed bug PT-132 : pt-online-schema-change should imply --no-drop-new-table + * Fixed bug PT-130 : Fixed pt-mext not working with not empty Rsa_public_key + * Fixed bug PT-128 : pt-stalk ps include memory usage outputs + * Fixed bug PT-126 : Recognize comments in ALTER + * Fixed bug PT-116 : pt-online-schema change eats data on adding a unique index. Added --[no]use-insert-ignore + * Fixed bug PT-115 : Made OptionParser to accept repeatable DSNs + * Fixed bug PT-111 : Collect MySQL variables + * Fixed bug PT-087 : Add --skip-check-slave-lag to pt-table-checksum + * Fixed bug PT-086 : Added --skip-check-slave-lag to pt-osc + * Fixed bug PT-080 : Added support for slave status in pt-stalk + * Feature PT-115 : Make DSNs params able to be repeatable + +v3.0.2 released 2017-03-23 + + * Fixed bug PT-101 : pt-table-checksum ignores slave-user and slave-password + * Fixed bug PT-105 : pt-table-checksum fails if a database is dropped while the tool is running * Fixed bug PT-73 : pt-mongodb tools add support for SSL connections * Fixed bug PT-74 : pt-mongodb-summary Cannot get security settings when connected to a mongod instance * Fixed bug PT-75 : pt-mongodb-query-digest Change the default sort order to -count (descending) @@ -10,8 +39,6 @@ Changelog for Percona Toolkit * Fixed bug PT-93 : Fix pt-mongodb-query-digest query ID (Thanks Kamil Dziedzic) * Fixed bug PT-94 : pt-online-schema-change makes duplicate rows in _t_new for UPDATE t set pk=0 where pk=1 * Fixed bug PT-96 : Fixed PT tests - * Fixed bug PT-101 : pt-table-checksum ignores slave-user and slave-password - * Fixed bug PT-105 : pt-table-checksum fails if a database is dropped while the tool is running v3.0.1 released 2017-02-16 diff --git a/MANIFEST b/MANIFEST index d580d1d3..f67c8cd4 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,5 +1,6 @@ Changelog CONTRIBUTE.md +CONTRIBUTING.md COPYING glide.lock glide.yaml @@ -39,6 +40,4 @@ bin/pt-table-usage bin/pt-upgrade bin/pt-variable-advisor bin/pt-visual-explain -bin/pt-mongodb-query-digest -bin/pt-mongodb-summary docs/percona-toolkit.pod diff --git a/Makefile.PL b/Makefile.PL index 01d392f0..636669c1 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -2,7 +2,7 @@ use ExtUtils::MakeMaker; WriteMakefile( NAME => 'percona-toolkit', - VERSION => '3.0.1', + VERSION => '3.0.2', EXE_FILES => [ ], MAN1PODS => { 'docs/percona-toolkit.pod' => 'blib/man1/percona-toolkit.1p', diff --git a/README b/README.md similarity index 100% rename from README rename to README.md diff --git a/bin/pt-align b/bin/pt-align index 89272e82..b22f2114 100755 --- a/bin/pt-align +++ b/bin/pt-align @@ -677,7 +677,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -1351,6 +1359,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-align 3.0.1 +pt-align 3.0.2 =cut diff --git a/bin/pt-archiver b/bin/pt-archiver index 00122e0d..ff739e55 100755 --- a/bin/pt-archiver +++ b/bin/pt-archiver @@ -45,7 +45,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1406,7 +1406,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -4490,7 +4498,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -4509,6 +4518,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -5885,6 +5899,8 @@ my $get_sth; my ( $OUT_OF_RETRIES, $ROLLED_BACK, $ALL_IS_WELL ) = ( 0, -1, 1 ); my ( $src, $dst ); my $pxc_version = '0'; +my $fields_separated_by = "\t"; +my $optionally_enclosed_by; # Holds the arguments for the $sth's bind variables, so it can be re-tried # easily. @@ -6286,10 +6302,8 @@ sub main { # this ensures returned sets are disjoint when ran on partitioned tables # issue 1376561 my $index_cols; - if ( $sel_stmt->{index} - && $src->{info}->{keys}->{$sel_stmt->{index}}->{cols} - ) { - $index_cols = $src->{info}->{keys}->{$sel_stmt->{index}}->{colnames}; + if ( $sel_stmt->{index} && $src->{info}->{keys}->{$sel_stmt->{index}}->{cols} ) { + $index_cols = join(",",map { "`$_`" } @{$src->{info}->{keys}->{$sel_stmt->{index}}->{cols}}); } foreach my $thing ( $first_sql, $next_sql ) { @@ -6514,12 +6528,19 @@ sub main { # Open the file and print the header to it. if ( $archive_file ) { + if ($o->got('output-format') && $o->get('output-format') ne 'dump' && $o->get('output-format') ne 'csv') { + warn "Invalid output format:". $o->get('format'); + warn "Using default 'dump' format"; + } elsif ($o->get('output-format') || '' eq 'csv') { + $fields_separated_by = ", "; + $optionally_enclosed_by = '"'; + } my $need_hdr = $o->get('header') && !-f $archive_file; $archive_fh = IO::File->new($archive_file, ">>$charset") or die "Cannot open $charset $archive_file: $OS_ERROR\n"; $archive_fh->autoflush(1) unless $o->get('buffer'); if ( $need_hdr ) { - print { $archive_fh } '', escape(\@sel_cols), "\n" + print { $archive_fh } '', escape(\@sel_cols, $fields_separated_by, $optionally_enclosed_by), "\n" or die "Cannot write to $archive_file: $OS_ERROR\n"; } } @@ -6564,7 +6585,7 @@ sub main { # problem, hopefully the data has at least made it to the file. my $escaped_row; if ( $archive_fh || $bulkins_file ) { - $escaped_row = escape([@{$row}[@sel_slice]]); + $escaped_row = escape([@{$row}[@sel_slice]], $fields_separated_by, $optionally_enclosed_by); } if ( $archive_fh ) { trace('print_file', sub { @@ -7021,11 +7042,18 @@ sub do_with_retries { # described in the LOAD DATA INFILE section of the MySQL manual, # http://dev.mysql.com/doc/refman/5.0/en/load-data.html sub escape { - my ($row) = @_; - return join("\t", map { + my ($row, $fields_separated_by, $optionally_enclosed_by) = @_; + $fields_separated_by ||= "\t"; + $optionally_enclosed_by ||= ''; + + return join($fields_separated_by, map { s/([\t\n\\])/\\$1/g if defined $_; # Escape tabs etc - defined $_ ? $_ : '\N'; # NULL = \N + $_ = defined $_ ? $_ : '\N'; # NULL = \N + # var & ~var will return 0 only for numbers + $_ =~ s/([^\\])"/$1\\"/g if ($_ !~ /^[0-9,.E]+$/ && $optionally_enclosed_by eq '"'); + $_ = $optionally_enclosed_by && $_ & ~$_ ? $optionally_enclosed_by."$_".$optionally_enclosed_by : $_; } @$row); + } sub ts { @@ -7646,6 +7674,17 @@ Runs OPTIMIZE TABLE after finishing. See L<"--analyze"> for the option syntax and L for details on OPTIMIZE TABLE. +=item --output-format + +type: string + +Used with L<"--file"> to specify the output format. + +Valid formats are: + dump: MySQL dump format using tabs as field separator (default) + csv : Dump rows using ',' as separator and optionally enclosing fields by '"'. + This format is equivalent to FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'. + =item --password short form: -p; type: string @@ -8432,6 +8471,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-archiver 3.0.1 +pt-archiver 3.0.2 =cut diff --git a/bin/pt-config-diff b/bin/pt-config-diff index 86d06221..77639fe5 100755 --- a/bin/pt-config-diff +++ b/bin/pt-config-diff @@ -43,7 +43,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1404,7 +1404,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -2402,7 +2410,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -2421,6 +2430,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -2452,9 +2466,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -3382,6 +3407,7 @@ sub new { my %value_is_optional = ( log_error => 1, log_isam => 1, + secure_file_priv => 1, ($args{optional_value_variables} ? map { $_ => 1 } @{$args{optional_value_variables}} : ()), @@ -5817,6 +5843,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-config-diff 3.0.1 +pt-config-diff 3.0.2 =cut diff --git a/bin/pt-deadlock-logger b/bin/pt-deadlock-logger index 2ee81687..15e0e2d9 100755 --- a/bin/pt-deadlock-logger +++ b/bin/pt-deadlock-logger @@ -42,7 +42,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -754,7 +754,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -2746,7 +2754,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -2765,6 +2774,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -2796,9 +2810,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -5608,6 +5633,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-deadlock-logger 3.0.1 +pt-deadlock-logger 3.0.2 =cut diff --git a/bin/pt-diskstats b/bin/pt-diskstats index 78ec3740..3e0e2e76 100755 --- a/bin/pt-diskstats +++ b/bin/pt-diskstats @@ -38,7 +38,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -750,7 +750,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -5619,6 +5627,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-diskstats 3.0.1 +pt-diskstats 3.0.2 =cut diff --git a/bin/pt-duplicate-key-checker b/bin/pt-duplicate-key-checker index 298dd240..8b592eb1 100755 --- a/bin/pt-duplicate-key-checker +++ b/bin/pt-duplicate-key-checker @@ -39,7 +39,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1741,7 +1741,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -5677,6 +5685,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-duplicate-key-checker 3.0.1 +pt-duplicate-key-checker 3.0.2 =cut diff --git a/bin/pt-fifo-split b/bin/pt-fifo-split index c04181a1..7fd5d61e 100755 --- a/bin/pt-fifo-split +++ b/bin/pt-fifo-split @@ -678,7 +678,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -1640,6 +1648,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-fifo-split 3.0.1 +pt-fifo-split 3.0.2 =cut diff --git a/bin/pt-find b/bin/pt-find index b1d5eb11..4f300a53 100755 --- a/bin/pt-find +++ b/bin/pt-find @@ -35,7 +35,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1170,7 +1170,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -5029,6 +5037,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-find 3.0.1 +pt-find 3.0.2 =cut diff --git a/bin/pt-fingerprint b/bin/pt-fingerprint index f8067334..0e45e58e 100755 --- a/bin/pt-fingerprint +++ b/bin/pt-fingerprint @@ -679,7 +679,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -2231,6 +2239,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-fingerprint 3.0.1 +pt-fingerprint 3.0.2 =cut diff --git a/bin/pt-fk-error-logger b/bin/pt-fk-error-logger index 59ada40e..9e98eb85 100755 --- a/bin/pt-fk-error-logger +++ b/bin/pt-fk-error-logger @@ -37,7 +37,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -749,7 +749,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -1898,7 +1906,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -1917,6 +1926,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -1948,9 +1962,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -4594,6 +4619,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-fk-error-logger 3.0.1 +pt-fk-error-logger 3.0.2 =cut diff --git a/bin/pt-heartbeat b/bin/pt-heartbeat index 1b1f5711..0877cd6f 100755 --- a/bin/pt-heartbeat +++ b/bin/pt-heartbeat @@ -44,7 +44,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1515,7 +1515,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -7197,6 +7205,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-heartbeat 3.0.1 +pt-heartbeat 3.0.2 =cut diff --git a/bin/pt-index-usage b/bin/pt-index-usage index 98c9babe..b01ceff5 100755 --- a/bin/pt-index-usage +++ b/bin/pt-index-usage @@ -45,7 +45,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1331,7 +1331,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -7607,6 +7615,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-index-usage 3.0.1 +pt-index-usage 3.0.2 =cut diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 39524300..215739fd 100755 --- a/bin/pt-ioprofile +++ b/bin/pt-ioprofile @@ -1127,7 +1127,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-ioprofile 3.0.1 +pt-ioprofile 3.0.2 =cut diff --git a/bin/pt-kill b/bin/pt-kill index 44f87f5b..8fcb9765 100755 --- a/bin/pt-kill +++ b/bin/pt-kill @@ -47,7 +47,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -759,7 +759,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -5292,7 +5300,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -5311,6 +5320,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -5342,9 +5356,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -8348,6 +8373,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-kill 3.0.1 +pt-kill 3.0.2 =cut diff --git a/bin/pt-mext b/bin/pt-mext index ad4599a0..381c8bb1 100755 --- a/bin/pt-mext +++ b/bin/pt-mext @@ -573,7 +573,8 @@ NUM=1; # Split the output on empty lines and put each into a different file; eliminate # lines that don't have "real" content. -$EXT_ARGV | grep -v '+' | grep -v Variable_name | sed 's/|//g' \ + +$EXT_ARGV | sed '/| Rsa/, /END PUBLIC KEY-----/d' | grep -v '^ |' | grep -v '+' | grep -v Variable_name | sed 's/|//g' \ | while read line; do if [ "$line" = "" ]; then NUM=$(($NUM + 1)) @@ -803,7 +804,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-mext 3.0.1 +pt-mext 3.0.2 =cut diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index a1d1e130..6827823c 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -3139,7 +3139,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-mysql-summary 3.0.1 +pt-mysql-summary 3.0.2 =cut diff --git a/bin/pt-online-schema-change b/bin/pt-online-schema-change index 561adf93..d6a69d1b 100755 --- a/bin/pt-online-schema-change +++ b/bin/pt-online-schema-change @@ -55,7 +55,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -767,7 +767,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -3940,6 +3948,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -8187,6 +8200,10 @@ sub main { # Explicit --chunk-size disable auto chunk sizing. $o->set('chunk-time', 0) if $o->got('chunk-size'); + if (!$o->get('swap-tables') && !$o->get('drop-triggers')) { + PTDEBUG && _d('Enabling no-drop-new-table since no-swap-tables & no-drop-triggers were specified'); + $o->set('drop-new-table', 0); + } foreach my $opt ( qw(max-load critical-load) ) { next unless $o->has($opt); @@ -8474,7 +8491,7 @@ sub main { if ( scalar @$slaves ) { print "Found " . scalar(@$slaves) . " slaves:\n"; foreach my $cxn ( @$slaves ) { - print " " . $cxn->name() . "\n"; + print $cxn->description()."\n"; } } elsif ( ($o->get('recursion-method') || '') ne 'none') { @@ -8500,9 +8517,31 @@ sub main { $slave_lag_cxns = $slaves; } if ( $slave_lag_cxns && scalar @$slave_lag_cxns ) { - print "Will check slave lag on:\n"; - foreach my $cxn ( @$slave_lag_cxns ) { - print " " . $cxn->name() . "\n"; + if ($o->get('skip-check-slave-lag')) { + my $slaves_to_skip = $o->get('skip-check-slave-lag'); + my $filtered_slaves = []; + for my $slave (@$slave_lag_cxns) { + my $found=0; + for my $slave_to_skip (@$slaves_to_skip) { + if ($slave->{dsn}->{h} eq $slave_to_skip->{h} && $slave->{dsn}->{P} eq $slave_to_skip->{P}) { + $found=1; + } + } + if ($found) { + print "Skipping slave ". $slave->description()."\n"; + } else { + push @$filtered_slaves, $slave; + } + } + $slave_lag_cxns = $filtered_slaves; + } + if (!scalar @$slave_lag_cxns) { + print "Not checking slave lag because all slaves were skipped\n"; + } else{ + print "Will check slave lag on:\n"; + foreach my $cxn ( @$slave_lag_cxns ) { + print $cxn->description()."\n"; + } } } else { @@ -8736,6 +8775,7 @@ sub main { tbl => $orig_tbl, Cxn => $cxn, Quoter => $q, + only_same_schema_fks => $o->get('only-same-schema-fks'), ); if ( !$child_tables ) { if ( $alter_fk_method ) { @@ -8895,12 +8935,13 @@ sub main { if ( $o->get('check-alter') ) { check_alter( - tbl => $orig_tbl, - alter => $alter, - dry_run => $o->get('dry-run'), - renamed_cols => $renamed_cols, - Cxn => $cxn, - TableParser => $tp, + tbl => $orig_tbl, + alter => $alter, + dry_run => $o->get('dry-run'), + renamed_cols => $renamed_cols, + Cxn => $cxn, + TableParser => $tp, + got_use_insert_ignore => $o->got('use-insert-ignore'), ); } } @@ -9541,7 +9582,8 @@ sub main { # NibbleIterator combines these two statements and adds # "FROM $orig_table->{name} WHERE ". - my $dml = "INSERT LOW_PRIORITY IGNORE INTO $new_tbl->{name} " + my $ignore = $o->get('use-insert-ignore') ? "IGNORE" : ''; + my $dml = "INSERT LOW_PRIORITY $ignore INTO $new_tbl->{name} " . "(" . join(', ', map { $q->quote($_->{new}) } @common_cols) . ") " . "SELECT"; my $select = join(', ', map { $q->quote($_->{old}) } @common_cols); @@ -9878,11 +9920,11 @@ sub validate_tries { sub check_alter { my (%args) = @_; - my @required_args = qw(alter tbl dry_run Cxn TableParser); + my @required_args = qw(alter tbl dry_run Cxn TableParser got_use_insert_ignore); foreach my $arg ( @required_args ) { die "I need a $arg argument" unless exists $args{$arg}; } - my ($alter, $tbl, $dry_run, $cxn, $tp) = @args{@required_args}; + my ($alter, $tbl, $dry_run, $cxn, $tp, $got_use_insert_ignore) = @args{@required_args}; my $ok = 1; @@ -9953,11 +9995,31 @@ sub check_alter { } } + # This regex matches unquoted strings in $1 and quoted strings in $2 + # We need to loop through all matches in the alter string and check if the + # unquoted part has the string 'UNIQUE INDEX' + # We are doing this because the alter could be something like + # ADD KEY pk COMMENT "ADD UNIQUE KEY" + my $re = qr/([^"']*)?((?:"|\\"|'|\\').*?(?:"|\\"|'|\\'))?/i; + my $has_unique_index = 0; + while ( $alter =~ m/$re/g) { + if ($1 =~ m/UNIQUE INDEX/i) { + $has_unique_index = 1; + } + } + if ($has_unique_index && !$got_use_insert_ignore) { + $ok = 0; + warn "It seems like you are trying to add an UNIQUE INDEX.\n" + . "Since in some cases this could lead to data loss, you need to specify a value " + . "for the use-insert-ignore parameter.\n" + . "Please read the documentation and restart the program with the apropriate paramenters.\n"; + } + if ( !$ok ) { # check_alter.t relies on this output. die "--check-alter failed.\n"; } - + return; } @@ -9997,8 +10059,13 @@ sub find_renamed_cols { /x; my $table_ident = qr/$unquoted_ident|`$quoted_ident`|"$ansi_quotes_ident"/; - my $alter_change_col_re = qr/\bCHANGE \s+ (?:COLUMN \s+)? - ($table_ident) \s+ ($table_ident)/ix; + + # remove comments + $alter =~ s/^(.*?)\s+COMMENT\s+'(.*?[^\\]')+(.*)/$1$3/; + $alter =~ s/^(.*?)\s+COMMENT\s+"(.*?[^\\]")+(.*)/$1$3/; + + my $alter_change_col_re = qr/\bCHANGE \s+ (?:COLUMN \s+)? + ($table_ident) \s+ ($table_ident)/ix; my %renames; while ( $alter =~ /$alter_change_col_re/g ) { @@ -10154,6 +10221,8 @@ sub create_new_table { ); my $constraint_pattern = qr((CONSTRAINT `__|CONSTRAINT `_|CONSTRAINT `)); $sql =~ s/$constraint_pattern/$search_dict{$1}/gm; + # Limit constraint name to 64 characters + $sql =~ s/CONSTRAINT `([^`]{1,64})[^`]*` (.*)/ CONSTRAINT `$1` $2/gm; if ( $o->get('default-engine') ) { $sql =~ s/\s+ENGINE=\S+//; @@ -10392,6 +10461,11 @@ sub find_child_tables { . "FROM information_schema.key_column_usage " . "WHERE referenced_table_schema='$tbl->{db}' " . "AND referenced_table_name='$tbl->{tbl}'"; + + if ($args{only_same_schema_fks}) { + $sql .= " AND table_schema='$tbl->{db}'"; + } + PTDEBUG && _d($sql); my $rows = $cxn->dbh()->selectall_arrayref($sql); if ( !$rows || !@$rows ) { @@ -10927,6 +11001,7 @@ sub exec_nibble { # any pattern # use MySQL's message for this warning }, + 1062 => {}, ); return osc_retry( @@ -11706,6 +11781,25 @@ documentation, then do not specify this option. This options bypasses confirmation in case of using alter-foreign-keys-method = none , which might break foreign key constraints. +=item --[no]use-insert-ignore + +default: yes + +pt-online-schema-change by default use INSERT LOW_PRIORITY IGNORE statements to copy rows from the old table to the new one. +In some cases, like when altering a table to add an unique index, using IGNORE may lead to data loss. +Example: + +CREATE TABLE test.t1 ( + id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + notunique VARCHAR(200) NOT NULL +); + +INSERT INTO test.t1(notunique) VALUES('test01'),('test01'),('test02'); + +If you run pt-online-schema-change --alter="ADD UNIQUE INDEX unique_1 (notunique)", when copying the second row to the new +table, INSERT ... IGNORE will fail silently and that row won't be copied. +In cas osc detects you are adding an UNIQUE index, you need to specify this option in the command line. + =item --help Show help and exit. @@ -11793,6 +11887,13 @@ them. The rows which contain NULL values will be converted to the defined default value. If no explicit DEFAULT value is given MySQL will assign a default value based on datatype, e.g. 0 for number datatypes, '' for string datatypes. +=item --only-same-schema-fks + +Check foreigns keys only on tables on the same schema than the original table. +This option is dangerous since if you have FKs refenrencing tables in other +schemas, they won't be detected. + + =item --password short form: -p; type: string @@ -11904,6 +12005,13 @@ ignored. You can change the list of hosts while OSC is executing: if you change the contents of the DSN table, OSC will pick it up very soon. +=item --skip-check-slave-lag + +type: DSN; repeatable: yes + +DSN to skip when checking slave lag. It can be used multiple times. +Example: --skip-check-slave-lag h=127.1,P=12345 --skip-check-slave-lag h=127.1,P=12346 + =item --slave-user type: string @@ -12428,6 +12536,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-online-schema-change 3.0.1 +pt-online-schema-change 3.0.2 =cut diff --git a/bin/pt-pmp b/bin/pt-pmp index 8a9ffe5b..e8b2c3ec 100755 --- a/bin/pt-pmp +++ b/bin/pt-pmp @@ -897,7 +897,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-pmp 3.0.1 +pt-pmp 3.0.2 =cut diff --git a/bin/pt-query-digest b/bin/pt-query-digest index 5d084f11..c3b174a8 100755 --- a/bin/pt-query-digest +++ b/bin/pt-query-digest @@ -64,7 +64,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1999,7 +1999,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -16744,6 +16752,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-query-digest 3.0.1 +pt-query-digest 3.0.2 =cut diff --git a/bin/pt-show-grants b/bin/pt-show-grants index ec4b3901..e1b57e34 100755 --- a/bin/pt-show-grants +++ b/bin/pt-show-grants @@ -680,7 +680,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -2516,6 +2524,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-show-grants 3.0.1 +pt-show-grants 3.0.2 =cut diff --git a/bin/pt-sift b/bin/pt-sift index 6d2ea738..60c7e915 100755 --- a/bin/pt-sift +++ b/bin/pt-sift @@ -1245,7 +1245,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-sift 3.0.1 +pt-sift 3.0.2 =cut diff --git a/bin/pt-slave-delay b/bin/pt-slave-delay index caffee6e..56032d14 100755 --- a/bin/pt-slave-delay +++ b/bin/pt-slave-delay @@ -40,7 +40,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -752,7 +752,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -4911,6 +4919,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-slave-delay 3.0.1 +pt-slave-delay 3.0.2 =cut diff --git a/bin/pt-slave-find b/bin/pt-slave-find index ffbf97ed..578afa54 100755 --- a/bin/pt-slave-find +++ b/bin/pt-slave-find @@ -687,7 +687,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -4437,6 +4445,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-slave-find 3.0.1 +pt-slave-find 3.0.2 =cut diff --git a/bin/pt-slave-restart b/bin/pt-slave-restart index f87a4e84..4ffb76ee 100755 --- a/bin/pt-slave-restart +++ b/bin/pt-slave-restart @@ -41,7 +41,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -904,7 +904,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -6026,6 +6034,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-slave-restart 3.0.1 +pt-slave-restart 3.0.2 =cut diff --git a/bin/pt-stalk b/bin/pt-stalk index e1c014bc..1a5643ce 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -813,8 +813,8 @@ collect() { >> "$d/$p-stacktrace" fi - $CMD_MYSQL $EXT_ARGV -e 'SHOW GLOBAL VARIABLES' >> "$d/$p-variables" & - sleep .2 + collect_mysql_variables "$d/$p-variables" & + sleep .5 local mysql_version="$(awk '/^version[^_]/{print substr($2,1,3)}' "$d/$p-variables")" @@ -863,7 +863,7 @@ collect() { local strace_pid=$! fi - ps -eaf >> "$d/$p-ps" & + ps -eaF >> "$d/$p-ps" & top -bn${OPT_RUN_TIME} >> "$d/$p-top" & [ "$mysqld_pid" ] && _lsof $mysqld_pid >> "$d/$p-lsof" & @@ -905,7 +905,8 @@ collect() { log "Loop start: $(date +'TS %s.%N %F %T')" local start_time=$(date +'%s') local curr_time=$start_time - local ps_instrumentation_enabled=$($CMD_MYSQL $EXT_ARGV -e "SELECT ENABLED FROM performance_schema.setup_instruments WHERE NAME = 'transaction';" | sed '2q;d' | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/') + local ps_instrumentation_enabled=$($CMD_MYSQL $EXT_ARGV -e 'SELECT ENABLED FROM performance_schema.setup_instruments WHERE NAME = "transaction";' \ + | sed "2q;d" | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/') if [ $ps_instrumentation_enabled != "yes" ]; then log "Performance Schema instrumentation is disabled" @@ -957,9 +958,7 @@ collect() { ps_locks_transactions "$d/$p-ps-locks-transactions" fi - if [ "${mysql_version}" '>' "5.6" ]; then - (echo $ts; ps_prepared_statements) >> "$d/$p-prepared-statements" & - fi + slave_status "$d/$p-slave-status" "${mysql_version}" curr_time=$(date +'%s') done @@ -1101,7 +1100,7 @@ innodb_status() { ps_locks_transactions() { local outfile=$1 - mysql -e 'select @@performance_schema' | grep "1" &>/dev/null + $CMD_MYSQL $EXT_ARGV -e 'select @@performance_schema' | grep "1" &>/dev/null if [ $? -eq 0 ]; then local status="select t.processlist_id, ml.* from performance_schema.metadata_locks ml join performance_schema.threads t on (ml.owner_thread_id=t.thread_id)\G" @@ -1125,13 +1124,50 @@ ps_locks_transactions() { } -ps_prepared_statements() { - $CMD_MYSQL $EXT_ARGV -e "SELECT t.processlist_id, pse.* \ - FROM performance_schema.prepared_statements_instances pse \ - JOIN performance_schema.threads t \ - ON (pse.OWNER_THREAD_ID=t.thread_id)\G" +slave_status() { + local outfile=$1 + local mysql_version=$2 + + if [ "${mysql_version}" '<' "5.7" ]; then + local sql="SHOW SLAVE STATUS\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + else + local sql="SELECT * FROM performance_schema.replication_connection_configuration JOIN performance_schema.replication_applier_configuration USING(channel_name)\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="SELECT * FROM replication_connection_status\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="SELECT * FROM replication_applier_status JOIN replication_applier_status_by_coordinator USING(channel_name)\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + fi + } +collect_mysql_variables() { + local outfile=$1 + + local sql="SHOW GLOBAL VARIABLES" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.variables_by_thread order by thread_id, variable_name;" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.user_variables_by_thread order by thread_id, variable_name;" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.status_by_thread order by thread_id, variable_name; " + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + +} # ########################################################################### # End collect package @@ -2299,7 +2335,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-stalk 3.0.1 +pt-stalk 3.0.2 =cut diff --git a/bin/pt-summary b/bin/pt-summary index 8355e3b7..2acadac5 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -2257,10 +2257,11 @@ report_system_summary () { local PTFUNCNAME=report_system_summary; report_transparent_huge_pages () { + STATUS_THP_SYSTEM="" if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then CONTENT_TRANSHP=$( 'all'; @@ -2428,7 +2428,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -3672,6 +3680,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -3703,9 +3716,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -5823,17 +5847,29 @@ sub make_row_checksum { $sep =~ s/'//g; $sep ||= '#'; + my @converted_cols; + for my $col(@{$cols->{select}}) { + my $colname = $col; + $colname =~ s/`//g; + my $type = $tbl_struct->{type_for}->{$colname} || ''; + if ($type =~ m/^(CHAR|VARCHAR|BINARY|VARBINARY|BLOB|TEXT|ENUM|SET|JSON)$/i) { + push @converted_cols, "convert($col using utf8mb4)"; + } else { + push @converted_cols, "$col"; + } + } + my @nulls = grep { $cols->{allowed}->{$_} } @{$tbl_struct->{null_cols}}; if ( @nulls ) { my $bitmap = "CONCAT(" . join(', ', map { 'ISNULL(' . $q->quote($_) . ')' } @nulls) . ")"; - push @{$cols->{select}}, $bitmap; + push @converted_cols, $bitmap; } - $query .= @{$cols->{select}} > 1 - ? "$func(CONCAT_WS('$sep', " . join(', ', @{$cols->{select}}) . '))' - : "$func($cols->{select}->[0])"; + $query .= scalar @converted_cols > 1 + ? "$func(CONCAT_WS('$sep', " . join(', ', @converted_cols) . '))' + : "$func($converted_cols[0])"; } else { my $fnv_func = uc $func; @@ -9293,35 +9329,36 @@ sub main { die "Error setting SQL_MODE" . ": $EVAL_ERROR"; } - - # https://bugs.launchpad.net/percona-toolkit/+bug/919352 - # The tool shouldn't blindly attempt to change binlog_format; - # instead, it should check if it's already set to STATEMENT. - # This is becase starting with MySQL 5.1.29, changing the format - # requires a SUPER user. - if ( VersionParser->new($dbh) >= '5.1.5' ) { - $sql = 'SELECT @@binlog_format'; - PTDEBUG && _d($dbh, $sql); - my ($original_binlog_format) = $dbh->selectrow_array($sql); - PTDEBUG && _d('Original binlog_format:', $original_binlog_format); - if ( $original_binlog_format !~ /STATEMENT/i ) { - $sql = q{/*!50108 SET @@binlog_format := 'STATEMENT'*/}; - eval { - PTDEBUG && _d($dbh, $sql); - $dbh->do($sql); - }; - if ( $EVAL_ERROR ) { - die "Failed to $sql: $EVAL_ERROR\n" - . "This tool requires binlog_format=STATEMENT, " - . "but the current binlog_format is set to " - ."$original_binlog_format and an error occurred while " - . "attempting to change it. If running MySQL 5.1.29 or newer, " - . "setting binlog_format requires the SUPER privilege. " - . "You will need to manually set binlog_format to 'STATEMENT' " - . "before running this tool.\n"; - } - } + if ( $o->get('check-binlog-format') ) { + # https://bugs.launchpad.net/percona-toolkit/+bug/919352 + # The tool shouldn't blindly attempt to change binlog_format; + # instead, it should check if it's already set to STATEMENT. + # This is becase starting with MySQL 5.1.29, changing the format + # requires a SUPER user. + if ( VersionParser->new($dbh) >= '5.1.5' ) { + $sql = 'SELECT @@binlog_format'; + PTDEBUG && _d($dbh, $sql); + my ($original_binlog_format) = $dbh->selectrow_array($sql); + PTDEBUG && _d('Original binlog_format:', $original_binlog_format); + if ( $original_binlog_format !~ /STATEMENT/i ) { + $sql = q{/*!50108 SET @@binlog_format := 'STATEMENT'*/}; + eval { + PTDEBUG && _d($dbh, $sql); + $dbh->do($sql); + }; + if ( $EVAL_ERROR ) { + die "Failed to $sql: $EVAL_ERROR\n" + . "This tool requires binlog_format=STATEMENT, " + . "but the current binlog_format is set to " + ."$original_binlog_format and an error occurred while " + . "attempting to change it. If running MySQL 5.1.29 or newer, " + . "setting binlog_format requires the SUPER privilege. " + . "You will need to manually set binlog_format to 'STATEMENT' " + . "before running this tool.\n"; + } + } + } } # Set transaction isolation level. We set binlog_format to STATEMENT, @@ -9673,11 +9710,32 @@ sub main { 0; } else { - PTDEBUG && _d('Will check slave lag on', $slave_cxn->name()); + PTDEBUG && _d('May check slave lag on', $slave_cxn->name()); $slave_cxn; } } @$slave_lag_cxns; + if ( $slave_lag_cxns && scalar @$slave_lag_cxns ) { + if ($o->get('skip-check-slave-lag')) { + my $slaves_to_skip = $o->get('skip-check-slave-lag'); + my $filtered_slaves = []; + for my $slave (@$slave_lag_cxns) { + my $found=0; + for my $slave_to_skip (@$slaves_to_skip) { + if ($slave->{dsn}->{h} eq $slave_to_skip->{h} && $slave->{dsn}->{P} eq $slave_to_skip->{P}) { + $found=1; + } + } + if ($found) { + printf("Skipping slave %s -> %s:%s\n", $slave->name(), $slave->{dsn}->{h}, $slave->{dsn}->{P}); + } else { + push @$filtered_slaves, $slave; + } + } + $slave_lag_cxns = $filtered_slaves; + } + } + # ##################################################################### # Possibly check replication slaves and exit. # ##################################################################### @@ -12693,6 +12751,13 @@ type: string; default: # The separator character used for CONCAT_WS(). This character is used to join the values of columns when checksumming. +=item --skip-check-slave-lag + +type: DSN; repeatable: yes + +DSN to skip when checking slave lag. It can be used multiple times. +Example: --skip-check-slave-lag h=127.1,P=12345 --skip-check-slave-lag h=127.1,P=12346 + =item --slave-user type: string @@ -13075,6 +13140,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-table-checksum 3.0.1 +pt-table-checksum 3.0.2 =cut diff --git a/bin/pt-table-sync b/bin/pt-table-sync index 4028919a..9fee34a9 100755 --- a/bin/pt-table-sync +++ b/bin/pt-table-sync @@ -55,7 +55,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -767,7 +767,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -12898,6 +12906,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-table-sync 3.0.1 +pt-table-sync 3.0.2 =cut diff --git a/bin/pt-table-usage b/bin/pt-table-usage index 95de90c0..77b809a1 100755 --- a/bin/pt-table-usage +++ b/bin/pt-table-usage @@ -1772,7 +1772,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -8461,6 +8469,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-table-usage 3.0.1 +pt-table-usage 3.0.2 =cut diff --git a/bin/pt-upgrade b/bin/pt-upgrade index 044cf2ad..3f9c0a7f 100755 --- a/bin/pt-upgrade +++ b/bin/pt-upgrade @@ -61,7 +61,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -1996,7 +1996,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -2571,7 +2579,8 @@ sub lost_connection { my ($self, $e) = @_; return 0 unless $e; return $e =~ m/MySQL server has gone away/ - || $e =~ m/Lost connection to MySQL server/; + || $e =~ m/Lost connection to MySQL server/ + || $e =~ m/Server shutdown in progress/; } sub dbh { @@ -2590,6 +2599,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + sub get_id { my ($self, $cxn) = @_; @@ -2621,9 +2635,20 @@ sub is_cluster_node { my ($self, $cxn) = @_; $cxn ||= $self; + my $sql = "SHOW VARIABLES LIKE 'wsrep\_on'"; - PTDEBUG && _d($cxn->name, $sql); - my $row = $cxn->dbh->selectrow_arrayref($sql); + + my $dbh; + if ($cxn->isa('DBI::db')) { + $dbh = $cxn; + PTDEBUG && _d($sql); #don't invoke name() if it's not a Cxn! + } + else { + $dbh = $cxn->dbh(); + PTDEBUG && _d($cxn->name, $sql); + } + + my $row = $dbh->selectrow_arrayref($sql); return $row && $row->[1] && ($row->[1] eq 'ON' || $row->[1] eq '1') ? 1 : 0; } @@ -11343,6 +11368,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-upgrade 3.0.1 +pt-upgrade 3.0.2 =cut diff --git a/bin/pt-variable-advisor b/bin/pt-variable-advisor index db8b0101..ae0ffc9a 100755 --- a/bin/pt-variable-advisor +++ b/bin/pt-variable-advisor @@ -44,7 +44,7 @@ BEGIN { { package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; @@ -756,7 +756,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -6180,6 +6188,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-variable-advisor 3.0.1 +pt-variable-advisor 3.0.2 =cut diff --git a/bin/pt-visual-explain b/bin/pt-visual-explain index f5c90b9b..445f9ecf 100755 --- a/bin/pt-visual-explain +++ b/bin/pt-visual-explain @@ -1353,7 +1353,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); @@ -3273,6 +3281,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -pt-visual-explain 3.0.1 +pt-visual-explain 3.0.2 =cut diff --git a/config/deb/changelog b/config/deb/changelog index debd2c90..3b8c3bf4 100644 --- a/config/deb/changelog +++ b/config/deb/changelog @@ -1,3 +1,20 @@ +percona-toolkit (3.0.2-1) unstable; urgency=low + + * Fixed bug PT-73 : pt-mongodb tools add support for SSL connections + * Fixed bug PT-74 : pt-mongodb-summary Cannot get security settings when connected to a mongod instance + * Fixed bug PT-75 : pt-mongodb-query-digest Change the default sort order to -count (descending) + * Fixed bug PT-76 : pt-mysql-summary password doesn't support '&' and '#' symbols + * Fixed bug PT-77 : Update Makefile for mongodb tools + * Fixed bug PT-81 : Collect information about locks and transactions using P_S (Thanks Agustin Gallego) + * Fixed bug PT-89 : pt-stalk top CPU usage is useless + * Fixed bug PT-93 : Fix pt-mongodb-query-digest query ID (Thanks Kamil Dziedzic) + * Fixed bug PT-94 : pt-online-schema-change makes duplicate rows in _t_new for UPDATE t set pk=0 where pk=1 + * Fixed bug PT-96 : Fixed PT tests + * Fixed bug PT-101 : pt-table-checksum ignores slave-user and slave-password + * Fixed bug PT-105 : pt-table-checksum fails if a database is dropped while the tool is running + + -- Percona Toolkit Developers Thu, 23 Mar 2017 12:16:45 +0000 + percona-toolkit (3.0.1-1) unstable; urgency=low diff --git a/config/deb/control b/config/deb/control index e5c7b578..4283ef2e 100644 --- a/config/deb/control +++ b/config/deb/control @@ -10,7 +10,7 @@ Vcs-Browser: https://github.com/percona/percona-toolkit Vcs-Git: git://github.com/percona/percona-toolkit.git Package: percona-toolkit -Architecture: @@ARHITECTURE@@ +Architecture: amd64 Depends: ${perl:Depends}, libdbi-perl (>= 1.13), libdbd-mysql-perl | libdbd-mysql-5.1-perl, libterm-readkey-perl (>=2.10), libio-socket-ssl-perl Description: Advanced MySQL and system command-line tools diff --git a/config/deb/control.bak b/config/deb/control.bak index 4283ef2e..e5c7b578 100644 --- a/config/deb/control.bak +++ b/config/deb/control.bak @@ -10,7 +10,7 @@ Vcs-Browser: https://github.com/percona/percona-toolkit Vcs-Git: git://github.com/percona/percona-toolkit.git Package: percona-toolkit -Architecture: amd64 +Architecture: @@ARHITECTURE@@ Depends: ${perl:Depends}, libdbi-perl (>= 1.13), libdbd-mysql-perl | libdbd-mysql-5.1-perl, libterm-readkey-perl (>=2.10), libio-socket-ssl-perl Description: Advanced MySQL and system command-line tools diff --git a/config/rpm/percona-toolkit.spec b/config/rpm/percona-toolkit.spec index c3ebf1d4..1a0bc80a 100644 --- a/config/rpm/percona-toolkit.spec +++ b/config/rpm/percona-toolkit.spec @@ -8,7 +8,7 @@ Vendor: Percona URL: http://www.percona.com/software/percona-toolkit/ Source: percona-toolkit-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -BuildArch: @@ARHITECTURE@@ +BuildArch: x86_64 Requires: perl(DBI) >= 1.13, perl(DBD::mysql) >= 1.0, perl(Time::HiRes), perl(IO::Socket::SSL), perl(Digest::MD5), perl(Term::ReadKey) AutoReq: no @@ -39,6 +39,7 @@ make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';' find $RPM_BUILD_ROOT -type f -name 'percona-toolkit.pod' -exec rm -f {} ';' +rm -rf $RPM_BUILD_ROOT/usr/share/perl5 chmod -R u+w $RPM_BUILD_ROOT/* diff --git a/config/rpm/percona-toolkit.spec.bak b/config/rpm/percona-toolkit.spec.bak index 9fcb0ca7..c3ebf1d4 100644 --- a/config/rpm/percona-toolkit.spec.bak +++ b/config/rpm/percona-toolkit.spec.bak @@ -8,7 +8,7 @@ Vendor: Percona URL: http://www.percona.com/software/percona-toolkit/ Source: percona-toolkit-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -BuildArch: x86_64 +BuildArch: @@ARHITECTURE@@ Requires: perl(DBI) >= 1.13, perl(DBD::mysql) >= 1.0, perl(Time::HiRes), perl(IO::Socket::SSL), perl(Digest::MD5), perl(Term::ReadKey) AutoReq: no diff --git a/config/sphinx-build/conf.py b/config/sphinx-build/conf.py index 169a2e77..920cbe1d 100644 --- a/config/sphinx-build/conf.py +++ b/config/sphinx-build/conf.py @@ -50,7 +50,7 @@ copyright = u'2017, Percona LLC and/or its affiliates' # The short X.Y version. version = '3.0' # The full version, including alpha/beta/rc tags. -release = '3.0.1' +release = '3.0.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/percona-toolkit.pod b/docs/percona-toolkit.pod index aa674d79..1a5eb44a 100644 --- a/docs/percona-toolkit.pod +++ b/docs/percona-toolkit.pod @@ -560,6 +560,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA. =head1 VERSION -Percona Toolkit v3.0.1 released 2017-02-16 +Percona Toolkit v3.0.2 released 2017-03-23 =cut diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 33dae4c8..a839c8c5 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -1,22 +1,47 @@ Release Notes ************* -v3.0.1 released 2017-02-16 +v3.0.2 released 2017-03-27 ========================== -Release Notes -************* +Percona Toolkit 3.0.2 includes the following changes: -Percona Toolkit 3.0.0 GA includes the following changes: +New Features + +* PT-73: Added support for SSL connections to ``pt-mongodb-summary`` and ``pt-mongodb-query-digest`` + +* 1642751: Enabled gathering of information about locks and transactions by ``pt-stalk`` using Performance Schema if it is enabled (Thanks Agustin Gallego) + +Bug Fixes + +* PT-74: Fixed gathering of security settings when running ``pt-mongodb-summary`` on a mongod instance that is specified as the host + +* PT-75: Changed the default sort order in ``pt-mongodb-query-digest`` output to descending + +* PT-76: Added support of ``&`` and ``#`` symbols in passwords for ``pt-mysql-summary`` + +* PT-77: Updated ``Makefile`` to support new MongoDB tools + +* PT-89: Fixed ``pt-stalk`` to run ``top`` more than once to collect useful CPU usage + +* PT-93: Fixed ``pt-mongodb-query-digest`` to make query ID match query key (Thanks Kamil Dziedzic) + +* PT-94: Fixed ``pt-online-schema-change`` to not make duplicate rows in ``_t_new`` when updating primary key. Also see 1646713. + +* PT-101: Fixed ``pt-table-checksum`` to correctly use the ``--slave-user`` and ``--slave-password`` options. Also see 1651002. + +* PT-105: Fixed ``pt-table-checksum`` to continue running if a database is dropped in the process + +v3.0.1 released 2017-02-20 +========================== + +Percona Toolkit 3.0.1 GA includes the following changes: * Added requirement to run ``pt-mongodb-summary`` as a user with the ``clusterAdmin`` or ``root`` built-in roles. -v3.0 released 2017-02-03 +v3.0 released 2017-02-06 ======================== -Release Notes -************* - Percona Toolkit 3.0.0 RC includes the following changes: New Features @@ -1824,5359 +1849,3 @@ Bug fixes * 1632522: Fixed failure of ``pt-online-schema-change`` when altering a table with a self-referencing foreign key (Thanks Marcelo Altmann) * 1654668: Fixed failure of ``pt-summary`` on Red Hat and derivatives (Thanks Marcelo Altmann) - - -v2.2.20 released 2016-12-09 -=========================== - -Percona Toolkit 2.2.20 includes the following changes: - -New Features - -* 1636068: New ``--pause-file`` option has been implemented for ``pt-online-schema-change``. When used ``pt-online-schema-change`` will pause while the specified file exists. - -* 1638293 and 1642364: ``pt-online-schema-change`` now supports adding and removing the ``DATA DIRECTORY`` to a new table with the ``--data-dir`` and ``--remove-data-dir`` options. - -* 1642994: Following schemas/tables have been added to the default ignore list: ``mysql.gtid_execution``, ``sys.sys_config``, ``mysql.proc``, ``mysql.inventory``, ``mysql.plugin``, ``percona.*`` (including checksums, dsns table), ``test.*``, and ``percona_schema.*``. - -* 1643940: ``pt-summary`` now provides information about Transparent huge pages. - -* 1604834: New ``--preserve-embedded-numbers`` option has been implemented for ``pt-query-digest`` which can be used to preserve numbers in database/table names when fingerprinting queries. - -Bug Fixes - -* 1613915: ``pt-online-schema-change`` could miss the data due to the way ENUM values are sorted. - -* 1625005: ``pt-online-schema-change`` didn't apply underscores to foreign keys individually. - -* 1566556: ``pt-show-grants`` didn't work correctly with *MariaDB* 10 (*Daniël van Eeden*). - -* 1634900: ``pt-upgrade`` would fail when log contained ``SELECT...INTO`` queries. - -* 1639052: ``pt-table-checksum`` now automatically excludes checking schemas named ``percona`` and ``percona_schema`` which aren't consistent across the replication hierarchy. - -* 1635734: ``pt-slave-restart --config`` did not recognize ``=`` as a separator. - -* 1362942: ``pt-slave-restart`` would fail on *MariaDB* 10.0.13. - -Changelog ---------- - -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug 1566556: pt-show-grants fails against MariaDB10+ -* Feature 1604834: pt-query-digest numbers in table or column names converted to question marks (--preserve-embedded-numbers) -* Fixed bug 1613915: pt-online-schema-change misses data. Fixed sort order for ENUM fields -* Fixed bug 1625005: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1634900: pt-upgrade fails with SELECT INTO -* Fixed bug 1635734: pt-slave-restart --config does not recognize = as separator -* Feature 1636068: Added pause to NibbleIterator -* Feature 1638293: --data-dir parameter in order to create the table on a different partition -* Feature 1639052: with pt-table-checksum automatically exclude checking schemas named percona, percona_schema -* Feature 1642364: pt-online-schema-change Added --remove-data-dir feature -* Feature 1643914: Fixed several typos in the doc (Thanks Dario Minnucci) -* Feature 1643940: Add Transparent huge pages info to pt-summary -* Feature 1643941: Add Memory management library to pt-mysql-summary - -v2.2.19 released 2016-08-16 -=========================== - -Percona Toolkit 2.2.19 includes the following changes: - -New Features - -* 1221372: ``pt-online-schema-change`` now aborts with an error if the server is a slave, because this can break data consistency in case of row-based replication. If you are sure that the slave will not use row-based replication, you can disable this check using the ``--force-slave-run`` option. - -* 1485195: ``pt-table-checksum`` now forces replica table character set to UTF-8. - -* 1517155: Added ``--create-table-engine`` option to ``pt-heartbeat``, which can be used to set a storage engine for the ``heartbeat`` table different from the database default engine. - -* 1595678: Added ``--slave-user`` and ``--slave-password`` options to ``pt-online-schema-change`` - -* 1595912: Added ``--slave-user`` and ``--slave-password`` options to ``pt-table-sync`` and ``pt-table-checksum`` - -* 1610385: ``pt-online-schema-change`` now re-checks the list of slaves in the DSN table. This enables changing the contents of the table while the tool is running. - - -Bug fixes - -* 1581752: Fixed ``pt-query-digest`` date and time parsing from MySQL 5.7 slow query log. - -* 1592166: Fixed memory leak when ``pt-kill`` kills a query - -* 1592608: Fixed overflow of ``CONCAT_WS`` when ``pt-table-checksum`` or ``pt-table-sync`` checksums large BLOB, TEXT, or BINARY columns. - -* 1593265: Fixed ``pt-archiver`` deleting rows that were not archived. - -* 1610386: Fixed ``pt-slave-restart`` handling of GTID ranges where the left-side integer is larger than 9 - -* 1610387: Removed extra word 'default' from the ``--verbose`` help for ``pt-slave-restart`` - -* 1610388: Fixed ``pt-table-sync`` not quoting enum values properly. They are now recognized as CHAR fields. - -Changelog ---------- - -* Feature 1610385: Recheck the list of slaves while OSC runs (Thanks Daniël van Eeden & Mikhail Izioumtchenko) -* Fixed bug 1221372: pt-osc should error if server is a slave in row based replication -* Fixed bug 1485195: pt-table-checksum should force replica table charset to utf8 Edit (Thanks Jaime Crespo) -* Fixed bug 1517155: Added --create-table-engine param to pt-heartbeat -* Fixed bug 1581752: SlowLogParser is able to handle dates in RFC339 format for MySQL 5.7 (Thanks Nickolay Ihalainen) -* Fixed bug 1592166: pt-kill leaks memory -* Fixed bug 1592166: pt-kill leaks memory each time it kills a query -* Fixed bug 1592608: Large BLOB/TEXT/BINARY Produces NULL Checksum (Thanks Jervin Real) -* Fixed bug 1593265: Fixed pt-archiver deletes wrong rows #103 (Thanks Tibor Korocz & David Ducos) -* Fixed bug 1595678: Added --slave-user and --slave-password to pt-online-schema-change & pt-table-sync -* Fixed bug 1610386: Handle GTID ranges where the left-side integer is larger than 9 (Thanks @sodabrew) -* Fixed bug 1610387: Remove extra word 'default' from the --verbose help (Thanks @sodabrew) -* Fixed bug 1610388: add enum column type to is_char check so that values are properly quoted (Thanks Daniel Kinon) - -v2.2.18 released 2016-06-24 -=========================== - -Percona Toolkit 2.2.18 has been released. This release includes the following new features and bug fixes. - -New features: - -* 1537416: ``pt-stalk`` now sorts the output of transactions by id - -* 1553340: Added "Shared" memory info to ``pt-summary`` - -* PT-24: Added the ``--no-vertical-format`` option for ``pt-query-digest``, allowing compatibility with non-standard MySQL clients that don't support the ``\G`` directive at the end of a statement - -Bug fixes: - -* 1402776: Fixed error when parsing ``tcpdump`` capture with ``pt-query-digest`` - -* 1521880: Improved ``pt-online-schema-change`` plugin documentation - -* 1547225: Clarified the description of the ``--attribute-value-limit`` option for ``pt-query-digest`` - -* 1569564: Fixed all PERL-based tools to return a zero exit status when run with the ``--version`` option - -* 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the ``-where`` option for ``pt-table-checksum`` - -* 1585412: Fixed the inability of ``pt-query-digest`` to parse the general log generated by MySQL (and Percona Server) 5.7 instance - -* PT-36: Clarified the description of the ``--verbose`` option for ``pt-slave-restart`` - - -Changelog ---------- - -* Feature 1537416 : pt-stalk now sorts the output of transactions by id -* Feature 1553340 : Added "Shared" memory info to pt-summary -* Feature PT-24 : Added the --no-vertical-format option for pt-query-digest, allowing compatibility with non-standard MySQL clients that don't support the \G directive at the end of a statement -* Fixed bug 1402776: Fixed error when parsing tcpdump capture with pt-query-digest -* Fixed bug 1521880: Improved pt-online-schema-change plugin documentation -* Fixed bug 1547225: Clarified the description of the --attribute-value-limit option for pt-query-digest -* Fixed bug 1569564: Fixed all PERL-based tools to return a zero exit status when run with the --version option -* Fixed bug 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the -where option for pt-table-checksum -* Fixed bug 1585412: Fixed the inability of pt-query-digest to parse the general log generated by MySQL (and Percona Server) 5.7 instance -* Fixed bug PT-36 : Clarified the description of the --verbose option for pt-slave-restart - -v2.2.17 released 2016-03-07 -=========================== - -Percona Toolkit 2.2.17 has been released. This release contains 1 new feature and 15 bug fixes. - -New Features: - -* Percona Toolkit 2.2.17 has implemented general compatibility with MySQL 5.7 tools, documentation and test suite - -Bug Fixes: - -* Bug 1523685: ``pt-online-schema-change`` invalid recursion method where comma was interpreted as the separation of two DSN methods has been fixed. - -* Bugs 1480719 and 1536305: The current version of Perl on supported distributions has implemented stricter checks for arguments provided to ``sprintf``. This could cause warnings when ``pt-query-digest`` and ``pt-table-checksum`` were being run. - -* Bug 1498128: ``pt-online-schema-change`` would fail with an error if the table being altered has foreign key constraints where some start with an underscore and some don't. - -* Bug 1336734: ``pt-online-schema-change`` has implemented new ``--null-to-non-null`` flag which can be used to convert ``NULL`` columns to ``NOT NULL``. - -* Bug 1362942: ``pt-slave-restart`` would fail to run on |MariaDB| 10.0.13 due to a different implementation of ``GTID``. - -* Bug 1389041: ``pt-table-checksum`` had a high likelihood to skip a table when row count was around ``chunk-size`` * ``chunk-size-limit``. To address this issue a new ``--slave-skip-tolerance`` option has been implemented. - -* Bug 1506748: ``pt-online-schema-change`` could not set the ``SQL_MODE`` by using the ``--set-vars`` option, preventing some use case schema changes that require it. - -* Bug 1523730: ``pt-show-grants`` didn't sort the column-level privileges. - -* Bug 1526105: ``pt-online-schema-change`` would fail if used with ``--no-drop-old-table`` option after ten times. The issue would arise because there was an accumulation of tables that have already have had their names extended, the code would retry ten times to append an underscore, each time finding an old table with that number of underscores appended. - -* Bug 1529411: ``pt-mysql-summary`` was displaying incorrect information about Fast Server Restarts for Percona Server 5.6. - -* PT-30: ``pt-stalk`` shell ``collect`` module was confusing the new mysql variable ``binlog_error_action`` with the ``log_error`` variable. - -Changelog ---------- - -* Feature : General compatibility with MySQL 5.7 tools, docs and test suite -* Fixed bug 1529411: pt-mysql-summary displays incorrect info about Fast Server Restarts for Percona Server 5.6 -* Fixed bug 1506748: pt-online-schema-change cannot set sql_mode using --set-vars -* Fixed bug 1336734: pt-online-schema-change added --null-to-non-null option to allow NULLable columns to be converted to NOT NULL -* Fixed bug 1498128: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1523685: pt-online-schema Invalid recursion method: t=dsns -* Fixed bug 1526105: pt-online-schema-change fails when using --no-drop-old-table after 10 times -* Fixed bug 1536305: pt-query-digest : Redundant argument in sprintf -* Fixed bug PT-27 : pt-query-digest doc bug with --since and too many colons -* Fixed bug PT-28 : pt-query-digest: Make documentation of --attribute-value-limit option more clear -* Fixed bug 1435370: pt-show-grants fails against MySQL-5.7.6 -* Fixed bug 1523730: pt-show-grants doesn't sort column-level privileges -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug PT-30 : pt-stalk: new var binlog_error_action causes bug in collect module -* Fixed bug 1389041: pt-table-checksum has high likelyhood to skip a table when row count is around chunk-size * chunk-size-limit -* Fixed bug 1480719: pt-table-checksum redundant argument in printf - -v2.2.16 released 2015-11-09 -=========================== - -Percona Toolkit 2.2.16 has been released. This release contains 3 new features and 2 bug fixes. - -New Features: - -* 1491261: When using MySQL 5.6 or later, and ``innodb_stats_persistent`` option is enabled (by default, it is enabled), then ``pt-online-schema-change`` will now run with the ``--analyze-before-swap`` option. This ensures that queries continue to use correct execution path, instead of switching to full table scan, which could cause possible downtime. If you do not want ``pt-online-schema-change`` to run ``ANALYZE`` on new tables before the swap, you can disable this behavior using the ``--no-analyze-before-swap`` option. - -* 1402051: ``pt-online-schema-change`` will now wait forever for slaves to be available and not be lagging. This ensures that the tool does not abort during faults and connection problems on slaves. - -* 1452895: ``pt-archiver`` now issues ‘keepalive’ queries during and after bulk insert/delete process that takes a long time. This keeps the connection alive even if the ``innodb_kill_idle_transaction`` variable is set to a low value. - -Bug Fixes: - -* 1488685: The ``--filter`` option for ``pt-kill`` now works correctly. - -* 1494082: The ``pt-stalk`` tool no longer uses the ``-warn`` option when running ``find``, because the option is not supported on FreeBSD. - -Changelog ---------- - -* Fixed bug 1452895: pt-archiver dies with "MySQL server has gone away" when innodb_kill_idle_transaction set to low value and bulk insert/delete process takes too long time -* Fixed bug 1488685: pt-kill option --filter does not work -* Feature 1402051: pt-online-schema-change should reconnect to slaves -* Fixed bug 1491261: pt-online-schema-change, MySQL 5.6, and InnoDB optimizer stats can cause downtime -* Fixed bug 1494082: pt-stalk find -warn option is not portable -* Feature 1389041: Document that pt-table-checksum has high likelihood to skip a table when row count is around chunk-size * chunk-size-limit - -v2.2.15 released 2015-08-28 -=========================== - -**New Features** - -* Added ``--max-flow-ctl`` option with a value set in percent. When a Percona XtraDB Cluster node is very loaded, it sends flow control signals to the other nodes to stop sending transactions in order to catch up. When the average value of time spent in this state (in percent) exceeds the maximum provided in the option, the tool pauses until it falls below again. - - Default is no flow control checking. - - This feature was requested in the following bugs: 1413101 and 1413137. - -* Added the ``--sleep`` option for ``pt-online-schema-change`` to avoid performance problems. The option accepts float values in seconds. - - This feature was requested in the following bug: 1413140. - -* Implemented ability to specify ``--check-slave-lag`` multiple times. The following example enables lag checks for two slaves: - - .. code-block:: console - - pt-archiver --no-delete --where '1=1' --source h=oltp_server,D=test,t=tbl --dest h=olap_server --check-slave-lag h=slave1 --check-slave-lag h=slave2 --limit 1000 --commit-each - - This feature was requested in the following bug: 14452911. - -* Added the ``--rds`` option to ``pt-kill``, which makes the tool use Amazon RDS procedure calls instead of the standard MySQL ``kill`` command. - - This feature was requested in the following bug: 1470127. - -**Bugs Fixed** - -* 1042727: ``pt-table-checksum`` doesn't reconnect the slave $dbh - - Before, the tool would die if any slave connection was lost. Now the tool waits forever for slaves. - -* 1056507: ``pt-archiver --check-slave-lag`` agressiveness - - The tool now checks replication lag every 100 rows instead of every row, which significantly improves efficiency. - -* 1215587: Adding underscores to constraints when using ``pt-online-schema-change`` can create issues with constraint name length - - Before, multiple schema changes lead to underscores stacking up on the name of the constraint until it reached the 64 character limit. Now there is a limit of two underscores in the prefix, then the tool alternately removes or adds one underscore, attempting to make the name unique. - -* 1277049: ``pt-online-schema-change`` can't connect with comma in password - - For all tools, documented that commas in passwords provided on the command line must be escaped. - -* 1441928: Unlimited chunk size when using ``pt-online-schema-change`` with ``--chunk-size-limit=0`` inhibits checksumming of single-nibble tables - - When comparing table size with the slave table, the tool now ignores ``--chunk-size-limit`` if it is set to zero to avoid multiplying by zero. - -* 1443763: Update documentation and/or implentation of ``pt-archiver --check-interval`` - - Fixed the documentation for ``--check-interval`` to reflect its correct behavior. - -* 1449226: ``pt-archiver`` dies with "MySQL server has gone away" when ``--innodb_kill_idle_transaction`` is set to a low value and ``--check-slave-lag`` is enabled - - The tool now sends a dummy SQL query to avoid timing out. - -* 1446928: ``pt-online-schema-change`` not reporting meaningful errors - - The tool now produces meaningful errors based on text from MySQL errors. - -* 1450499: ReadKeyMini causes ``pt-online-schema-change`` session to lock under some circumstances - - Removed ReadKeyMini, because it is no longer necessary. - -* 1452914: ``--purge`` and ``--no-delete`` are mutually exclusive, but still allowed to be specified together by ``pt-archiver`` - - The tool now issues an error when ``--purge`` and ``--no-delete`` are specified together - -* 1455486: ``pt-mysql-summary`` is missing the ``--ask-pass`` option - - Added the ``--ask-pass`` option to the tool - -* 1457573: ``pt-sift`` fails to download ``pt-diskstats`` ``pt-pmp`` ``pt-mext`` ``pt-align`` - - Added the ``-L`` option to ``curl`` and changed download address to use HTTPS. - -* 1462904: ``pt-duplicate-key-checker`` doesn't support triple quote in column name - - Updated TableParser module to handle literal backticks. - -* 1488600: ``pt-stalk`` doesn't check TokuDB status - - Implemented status collection similar to how it is performed for InnoDB. - -* 1488611: various testing bugs related to newer perl versions - - Fixed test failures related to new Perl versions. - -v2.2.14 released 2015-04-14 -=========================== - -Percona Toolkit 2.2.14 has been released. This release contains two new features and seventeen bug fixes. - -New Features: - -* pt-slave-find can now resolve the IP address and show the slave's hostname. This can be done with the new ``--resolve-address`` option. - -* pt-table-sync can now ignore the tables whose names match specific Perl regex with the ``--ignore-tables-regex`` option. - -Bugs Fixed: - -* Fixed bug 925781: Inserting non-BMP characters into a column with utf8 charset would cause the ``Incorrect string value`` error when running the pt-table-checksum. - -* Fixed bug 1368244: pt-online-schema-change ``--alter-foreign-keys-method=drop-swap`` was not atomic and thus it could be interrupted. Fixed by disabling common interrupt signals during the critical drop-rename phase. - -* Fixed bug 1381280: pt-table-checksum was failing on ``BINARY`` field in Primary Key. Fixed by implementing new ``--binary-index`` flag to optionally create checksum table using BLOB data type. - -* Fixed bug 1421405: Running pt-upgrade against a log with many identical (or similar) queries was producing repeated sections with the same fingerprint. - -* Fixed bug 1402730: pt-duplicate-key-checker was not checking for duplicate keys when ``--verbose`` option was set. - -* Fixed bug 1406390: A race condition was causing pt-heartbeat to crash with sleep argument error. - -* Fixed bug 1417558: pt-stalk when used along with ``--collect-strace`` didn't write the strace output to the expected destination file. - -* Fixed bug 1421025: Missing dependency for ``perl-TermReadKey`` RPM package was causing toolkit commands to fail when they were run with ``--ask-pass`` option. - -* Fixed bug 1421781: pt-upgrade would fail when log contained ``SELECT...INTO`` queries. Fixed by ignoring/skipping those queries. - -* Fixed bug 1425478: pt-stalk was removing non-empty files that were starting with an empty line. - -* Fixed bug 1419098: Fixed bad formatting in the pt-table-checksum documentation. - -Changelog ---------- - -* Fixed bug 1402730 pt-duplicate-key-checker seems useless with MySQL 5.6 -* Fixed bug 1415646 pt-duplicate-key-checker documentation does not explain how Size Duplicate Indexes is calculated -* Fixed bug 1406390 pt-heartbeat crashes with sleep argument error -* Fixed bug 1368244 pt-online-schema-change --alter-foreign-keys-method=drop-swap is not atomic -* FIxed bug 1417864 pt-online-schema-change documentation, the interpretation of --tries create_triggers:5:0.5,drop_triggers:5:0.5 is wrong -* Fixed bug 1404313 pt-query-digest: specifying a file that doesn't exist as log causes the tool to wait for STDIN instead of giving an error -* Feature 1418446 pt-slave-find resolve IP addresses option -* Fixed bug 1417558 pt-stalk with --collect-strace output doesn't go to an YYYY_MM_DD_HH_mm_ss-strace file -* Fixed bug 1425478 pt-stalk removes non-empty files that start with empty line -* Fixed bug 925781 pt-table-checksum checksum error when default-character-set = utf8 -* Fixed bug 1381280 pt-table-checksum fails on BINARY field in PK -* Feature 1439842 pt-table-sync lacks --ignore-tables-regex option -* Fixed bug 1401399 pt-table-sync fails to close one db handle -* Fixed bug 1442277 pt-table-sync-ignores system databases but doc doesn't clarify this -* Fixed bug 1421781 pt-upgrade fails on SELECT ... INTO queries -* Fixed bug 1421405 pt-upgrade fails to aggregate queries based on fingerprint -* Fixed bug 1439348 pt-upgrade erroneously reports number of diffs -* Fixed bug 1421025 rpm missing dependency on perl-TermReadKey for --ask-pass - -v2.2.13 released 2015-01-26 -=========================== - -Percona Toolkit 2.2.13 has been released. This release contains one new feature and twelve bug fixes. - -New Features: - -* pt-kill now supports new ``--query-id`` option. This option can be used to print a query fingerprint hash after killing a query to enable the cross-referencing with the pt-query-digest output. This option can be used along with ``--print`` option as well. - -Bugs Fixed: - -* Fixed bug 1019479: pt-table-checksum now works with ``ONLY_FULL_GROUP_BY`` sql_mode. - -* Fixed bug 1394934: running pt-table-checksum in debug mode would cause an error. - -* Fixed bug 1396868: regression introduced in Percona Toolkit 2.2.12 caused pt-online-schema-change not to honor ``--ask-pass`` option. - -* Fixed bug 1399789: pt-table-checksum would fail to find Percona XtraDB Cluster nodes when variable ``wsrep_node_incoming_address`` was set to ``AUTO``. - -* Fixed bug 1408375: Percona Toolkit was vulnerable to MITM attack which could allow exfiltration of MySQL configuration information via ``--version-check`` option. This vulnerability was logged as `CVE 2015-1027 _` - -* Fixed bug 1321297: pt-table-checksum was reporting differences on timestamp columns with replication from 5.5 to 5.6 server version, although the data was identical. - -* Fixed bug 1388870: pt-table-checksum was showing differences if the master and slave were in different time zone. - -* Fixed bug 1402668: pt-mysql-summary would exit if Percona XtraDB Cluster was in ``Donor/Desynced`` state. - -* Fixed bug 1266869: pt-stalk would fail to start if ``$HOME`` environment variable was not set. - -Changelog ---------- - -* Feature 1391240: pt-kill added query fingerprint hash to output -* Fixed bug 1402668: pt-mysql-summary fails on cluster in Donor/Desynced status -* Fixed bug 1396870: pt-online-schema-change CTRL+C leaves terminal in inconsistent state -* Fixed bug 1396868: pt-online-schema-change --ask-pass option error -* Fixed bug 1266869: pt-stalk fails to start if $HOME environment variable is not set -* Fixed bug 1019479: pt-table-checksum does not work with sql_mode ONLY_FULL_GROUP_BY -* Fixed bug 1394934: pt-table-checksum error in debug mode -* Fixed bug 1321297: pt-table-checksum reports diffs on timestamp columns in 5.5 vs 5.6 -* Fixed bug 1399789: pt-table-checksum fails to find pxc nodes when wsrep_node_incoming_address is set to AUTO -* Fixed bug 1388870: pt-table-checksum has some errors with different time zones -* Fixed bug 1408375: vulnerable to MITM attack which would allow exfiltration of MySQL configuration information via --version-check -* Fixed bug 1404298: missing MySQL5.7 test files for pt-table-checksum -* Fixed bug 1403900: added sandbox and fixed sakila test db for 5.7 - -v2.2.12 released 2014-11-14 -=========================== - -Percona Toolkit 2.2.12 has been released. This release contains one new feature and seven bug fixes. - -New Features: - -* pt-stalk now gathers ``dmesg`` output from up to 60 seconds before the triggering event. - -Bugs Fixed: - -* Fixed bug 1376561: pt-archiver was not able to archive all the rows when a table had a hash partition. Fixed by implementing support for tables which have primary or unique indexes. - -* Fixed bug 1217466: pt-table-checksum would refuses to run on Percona XtraDB Cluster if ``server_id`` was the same on all nodes. Fixed by using the ``wsrep_node_incoming_address`` as a unique identifier for cluster nodes, instead of relying on ``server_id``. - -* Fixed bug 1269695: pt-online-schema-change documentation now contains more information about limitations on why it isn't running ``ALTER TABLE`` for a table which has only a non-unique index. - -* Fixed bug 1328686: Running pt-hearbeat with --check-read-only option would cause an error when running on server with ``read_only`` option. Tool now waits for server ``read_only`` status to be disabled before starting to run. - -* Fixed bug 1373937: pt-table-checksum now supports ``none`` as valid ``--recursion-method`` when using with Percona XtraDB Cluster. - -* Fixed bug 1377888: Documentation was stating that pt-query-digest is able to parse a raw binary log file, while it can only parse a file which was decoded with ``mysqlbinlog`` tool before. Fixed by improving the documentation and adding a check for binary file and providing a relevant error message. - -Changelog ---------- - -* Fixed bug 1376561: pt-archiver is not able to archive all the rows when a table has a hash partition -* Fixed bug 1328686: pt-heartbeat check-read-only option does not prevent creates or inserts -* Fixed bug 1269695: pt-online-schema-change does not allow ALTER for a table without a non-unique, while manual does not explain this -* Fixed bug 1217466: pt-table-checksum refuses to run on PXC if server_id is the same on all nodes -* Fixed bug 1373937: pt-table-checksum requires recursion when working with and XtraDB Cluster node -* Fixed bug 1377888: pt-query-digest manual for --type binlog is ambiguous -* Fixed bug 1349086: pt-stalk should also gather dmesg output -* Fixed bug 1361293: Some scripts fail when no-version-check option is put in global config file - -v2.2.11 released 2014-09-26 -=========================== - -Percona Toolkit 2.2.11 has been released. This release contains seven bug fixes. - -Bugs Fixed: - -* Fixed bug 1262456: pt-query-digest didn't report host details when host was using skip-name-resolve option. Fixed by using the IP of the host instead of it's name, when the hostname is missing. - -* Fixed bug 1264580: pt-mysql-summary was incorrectly parsing key/value pairs in the wsrep_provider_options option, which resulted in incomplete my.cnf information. - -* Fixed bug 1318985: pt-stalk is now using ``SQL_NO_CACHE`` when executing queries for locks and transactions. Previously this could lead to situations where most of the queries that were ``waiting on query cache mutex`` were the pt-stalk queries (INNODB_TRX). - -* Fixed bug 1348679: When using ``-- -p`` option to enter the password for pt-stalk it would ask user to re-enter the password every time tool connects to the server to retrieve the information. New option ``--ask-pass`` has been introduced that can be used to specify the password only once. - -* Fixed bug 1368379: A parsing error caused pt-summary ( specifically the ``report_system_info`` module) to choke on the "Memory Device" parameter named "Configured Clock Speed" when using dmidecode to report memory slot information. - -Changelog ---------- - -* Fixed bug 1262456: pt-query-digest doesn't report host details -* Fixed bug 1264580: pt-mysql-summary incorrectly tries to parse key/value pairs in wsrep_provider_options resulting in incomplete my.cnf information -* Fixed bug 1318985: pt-stalk should use SQL_NO_CACHE -* Fixed bug 1348679: pt-stalk handles mysql user password in awkward way -* Fixed bug 1365085: Various issues with tests -* Fixed bug 1368379: pt-summary problem parsing dmidecode output on some machines -* Fixed bug 1303388: Typo in pt-variable-advisor - -v2.2.10 released 2014-08-06 -=========================== - -Percona Toolkit 2.2.10 has been released. This release contains six bug fixes. - -Bugs Fixed: - -* Fixed bug 1287253: pt-table-checksum would exit with error if it would encounter deadlock when doing checksum. This was fixed by retrying the command in case of deadlock error. - -* Fixed bug 1311654: When used with Percona XtraDB Cluster, pt-table-checksum could show incorrect result if --resume option was used. This was fixed by adding a new ``--replicate-check-retries`` command line parameter. If you are having resume problems you can now set ``--replicate-check-retries`` N , where N is the number of times to retry a discrepant checksum (default = 1 , no retries). Setting a value of ``3`` is enough to completely eliminate spurious differences. - -* Fixed bug 1299387: pt-query-digest didn't work correctly do to a changed logging format when field ``Thread_id`` has been renamed to ``Id``. Fixed by implementing support for the new format. - -* Fixed bug 1340728: in some cases, where the index was of type "hash" , pt-online-schema-change would refuse to run because MySQL reported it would not use an index for the select. This check should have been able to be skipped using --nocheck-plan option, but it wasn't. ``--nocheck-plan`` now ignores the chosen index correctly. - -* Fixed bug 1253872: When running pt-table-checksum or pt-online-schema on a server that is unused, setting the 20% max load would fail due to tools rounding the value down. This has been fixed by rounding the value up. - -* Fixed bug 1340364: Due to incompatibility of dash and bash syntax some shell tools were showing error when queried for version. - -Changelog ---------- - -* Fixed bug 1287253: pt-table-checksum deadlock -* Fixed bug 1299387: 5.6 slow query log Thead_id becomes Id -* Fixed bug 1311654: pt-table-checksum + PXC inconsistent results upon --resume -* Fixed bug 1340728: pt-online-schema-change doesn't work with HASH indexes -* Fixed bug 1253872: pt-table-checksum max load 20% rounds down -* Fixed bug 1340364: some shell tools output error when queried for --version - -v2.2.9 released 2014-07-08 -========================== - -Percona Toolkit 2.2.9 has been released. This release contains five bug fixes. - -Bugs Fixed: - -* Fixed bug 1335960: pt-query-digest could not parse the binlogs from MySQL 5.6 because the binlog format was changed. - -* Fixed bug 1315130: pt-online-schema-change did not find child tables as expected. It could incorrectly locate tables which reference a table with the same name in a different schema and could miss tables referencing the altered table if they were in a different schema. - -* Fixed bug 1335322: pt-stalk would fail when variable or threshold was non-integer. - -* Fixed bug 1258135: pt-deadlock-logger was inserting older deadlocks into the ``deadlock`` table even if it was already there creating unnecessary noise. For example, if the deadlock happened 1 year ago, and MySQL keeps it in the memory and pt-deadlock-logger would ``INSERT`` it into ``percona.deadlocks`` table every minute all the time until server was restarted. This was fixed by comparing with the last deadlock fingerprint before issuing the ``INSERT`` query. - -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none can break FK constraints in a way that is hard to recover from. Allthough this method of handling foreign key constraints is provided so that the database administrator can disable the tool's built-in functionality if desired, a warning and confirmation request when using alter-foreign-keys-method "none" has been added to warn users when using this option. - -Changelog ---------- - -* Fixed bug 1258135: pt-deadlock-logger introduces a noise to MySQL -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none breaks constraints -* Fixed bug 1315130: pt-online-schema-change not properly detecting foreign keys -* Fixed bug 1335960: pt-query-digest cannot parse binlogs from 5.6 -* Fixed bug 1335322: pt-stalk fails when variable or threshold is non-integer - -v2.2.8 released 2014-06-04 -========================== - -Percona Toolkit 2.2.8 has been released. This release has two new features and six bug fixes. - -New Features: - -* pt-agent has been replaced by percona-agent. More information on percona-agent can be found in the `Introducing the 3-Minute MySQL Monitor `_ blogpost. -* pt-slave-restart now supports MySQL 5.6 global transaction IDs. - -* pt-table-checkum now has new --plugin option which is similar to pt-online-schema-change --plugin - -Bugs Fixed: - -* Fixed bug 1254233: pt-mysql-summary was showing blank InnoDB section for 5.6 because it was using ``have_innodb`` variable which was removed in MySQL 5.6. - -* Fixed bug 965553: pt-query-digest didn't fingerprint true/false literals correctly. - -* Fixed bug 1286250: pt-online-schema-change was requesting password twice. - -* Fixed bug 1295667: pt-deadlock-logger was logging incorrect timestamp because tool wasn't aware of the time-zones. - -* Fixed bug 1304062: when multiple tables were specified with pt-table-checksum --ignore-tables, only one of them would be ignored. - -* Fixed bug : pt-show-grant --ask-pass option was asking for password in ``STDOUT`` instead of ``STDERR`` where it could be seen. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Removed pt-agent -* Added pt-slave-restart GTID support -* Added pt-table-checksum --plugin -* Fixed bug 1304062: --ignore-tables does not work correctly -* Fixed bug 1295667: pt-deadlock-logger logs incorrect ts -* Fixed bug 1254233: pt-mysql-summary blank InnoDB section for 5.6 -* Fixed bug 1286250: pt-online-schema-change requests password twice -* Fixed bug 965553: pt-query-digest dosn't fingerprint true/false literals correctly -* Fixed bug 290911: pt-show-grant --ask-pass prints "Enter password" to STDOUT - -v2.2.7 released 2014-02-20 -========================== - -Percona Toolkit 2.2.7 has been released. This release has only one bug fix. - -* Fixed bug 1279502: --version-check behaves like spyware - -Although never used, --version-check had the ability to get any local program's version. This fix removed that ability. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -v2.2.6 released 2013-12-18 -========================== - -Percona Toolkit 2.2.6 has been released. This release has 16 bug fixes and a few new features. One bug fix is very important, so 2.2 users are strongly encouraged to upgrade: - -* Fixed bug 1223458: pt-table-sync deletes child table rows - -Buried in the pt-table-sync docs is this warning: - - Also be careful with tables that have foreign key constraints with C - or C definitions because these might cause unintended changes on the - child tables. - -Until recently, either no one had this problem, or no one reported it, or no one realized that pt-table-sync caused it. In the worst case, pt-table-sync could delete all rows in child tables, which is quite surprising and bad. As of 2.2.6, pt-table-sync has option --[no]check-child-tables which is on by default. In cases were this "bug" can happen, pt-table-sync prints a warning and skips the table. Read the option's docs to learn more. - -Another good bug fix is: - -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes - -After saying "pt-duplicate-key-checker hasn't had a bug in years" at enough conferences, users proved us wrong--thanks! The tool is better now. - -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table - -This was poor feedback from the tool more than a bug. There was a point in the tool where it waited forever for slaves to catch up, but it did this silently. Now the tool reports --progress while it's waiting and it reports which slaves, if any, it found and intends to check. In short: its feedback delivers a better user experience. - -Finally, this bug (more like a feature request/change) might be a backwards-incompatible change: - -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled - -The change is that pt-mysql-summary no longer prompts to dump and summarize schemas. To do this, you must specify --databases or, a new option, --all-databases. Several users said this behavior was better, so we made the change even though some might consider it a backwards-incompatible change. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added pt-query-digest support for Percona Server slow log rate limiting -* Added pt-agent --ping -* Added pt-mysql-summary --all-databases -* Added pt-stalk --sleep-collect -* Added pt-table-sync --[no]check-child-tables -* Fixed bug 1249150: PTDEBUG prints some info to STDOUT -* Fixed bug 1248363: pt-agent requires restart after changing MySQL options -* Fixed bug 1248778: pt-agent --install on PXC is not documented -* Fixed bug 1250973: pt-agent --install doesn't check for previous install -* Fixed bug 1250968: pt-agent --install suggest MySQL user isn't quoted -* Fixed bug 1251004: pt-agent --install error about slave is confusing -* Fixed bug 1251726: pt-agent --uninstall fails if agent is running -* Fixed bug 1248785: pt-agent docs don't list privs required for its MySQL user -* Fixed bug 1215016: pt-deadlock-logger docs use pt-fk-error-logger -* Fixed bug 1201443: pt-duplicate-key-checker error when EXPLAIN key_len=0 -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table -* Fixed bug 1249149: pt-query-digest stats prints to STDOUT instead of STDERR -* Fixed bug 1071979: pt-stak error parsing df with NFS -* Fixed bug 1223458: pt-table-sync deletes child table rows - -v2.2.5 released 2013-10-16 -========================== - -Percona Toolkit 2.2.5 has been released. This release has four new features and a number of bugfixes. - -Query_time histogram has been added to the pt-query-digest JSON output, not the actual chart but the values necessary to render the chart later, so the values for each bucket. - -As of pt-table-checksum 2.2.5, skipped chunks cause a non-zero exit status. An exit status of zero or 32 is equivalent to a zero exit status with skipped chunks in previous versions of the tool. - -New --no-drop-triggers option has been implemented for pt-online-schema-change in case users want to rename the tables manually, when the load is low. - -New --new-table-name option has been added to pt-online-schema-change which can be used to specify the temporary table name. - -* Fixed bug #1199589: pt-archiver would delete the data even with the --dry-run option. - -* Fixed bug #821692: pt-query-digest didn't distill LOAD DATA correctly. - -* Fixed bug #984053: pt-query-digest didn't distill INSERT/REPLACE without INTO correctly. - -* Fixed bug #1206677: pt-agent docs were referencing wrong web address. - -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster would crash if no nodes were found. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added Query_time histogram bucket counts to pt-query-digest JSON output -* Added pt-online-schema-change --[no]drop-triggers option -* Fixed bug #1199589: pt-archiver deletes data despite --dry-run -* Fixed bug #944051: pt-table-checksum has ambiguous exit status -* Fixed bug #1209436: pt-kill --log-dsn may not work on Perl 5.8 -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster crashes if no nodes are found -* Fixed bug #1215608: pt-online-schema-change new table suffix is hard-coded -* Fixed bug #1229861: pt-table-sync quotes float values, can't sync -* Fixed bug #821692: pt-query-digest doesn't distill LOAD DATA correctly -* Fixed bug #984053: pt-query-digest doesn't distill INSERT/REPLACE without INTO correctly -* Fixed bug #1206728: pt-deadlock-logger 2.2 requires DSN on command line -* Fixed bug #1226721: pt-agent on CentOS 5 fails to send data -* Fixed bug #821690: pt-query-digest doesn't distill IF EXISTS correctly -* Fixed bug #1206677: pt-agent docs reference clodu.percona.com - -v2.2.4 released 2013-07-18 -========================== - -Percona Toolkit 2.2.4 has been released. This release two new features and a number of bugfixes. - -pt-query-digest --output json includes query examples as of v2.2.3. Some people might not want this because it exposes real data. New option, --output json-anon, has been implemented. This option will provide the same data without query examples. It's "anonymous" in the sense that there's no identifying data; nothing more than schema and table structs can be inferred from fingerprints. - -When using drop swap with pt-online-schema-change there is some production impact. This impact can be measured because tool outputs the current timestamp on lines for operations that may take awhile. - -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -pt-table-checksum would fail if variable explicit_defaults_for_timestamp was enabled in MySQL 5.6. - -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -Trying to assign 0 to any variable by using --set-vars option would cause “Invalid --set-vars value” message. - -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get - -* Fixed the typo in the pt-online-schema-change code that could lead to a tool crash when copying the rows. - -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -pt-table-checksum was using the first non-unique index instead of the one with the highest cardinality due to a sorting bug. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added pt-query-digest anonymous JSON output -* Added pt-online-schema-change timestamp output -* Fixed bug #1136559: pt-table-checksum: Deep recursion on subroutine "SchemaIterator::_iterate_dbh" -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get -* Fixed bug #1195034: pt-deadlock-logger error: Use of uninitialized value $ts in pattern match (m//) -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -* Fixed bug #1168434: pt-upgrade reports differences on NULL -* Fixed bug #1172317: pt-sift does not work if pt-stalk did not collect due to a full disk -* Fixed bug #1176010: pt-query-digest doesn't group db and `db` together -* Fixed bug #1137556: pt-heartbeat docs don't account for --utc -* Fixed bug #1168106: pt-variable-advisor has the wrong default value for innodb_max_dirty_pages_pct in 5.5 and 5.6 -* Fixed bug #1168110: pt-variable-advisor shows key_buffer_size in 5.6 as unconfigured (even though it is) -* Fixed bug #1171968: pt-query-digest docs don't mention --type=rawlog -* Fixed bug #1174956: pt-query-digest and pt-fingerprint don't strip some multi-line comments - - -v2.2.3 released 2013-06-17 -========================== - -Percona Toolkit 2.2.3 has been released which has only two changes: pt-agent -and a bug fix for pt-online-schema-change. pt-agent is not a command line -tool but a client-side agent for Percona Cloud Tools. Visit -https://cloud.percona.com for more information. The pt-online-schema-change -bug fix is bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): -"Table 'db._t_new' doesn't exist". This happens when the tool's triggers -cannot be dropped. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added new tool: pt-agent -* Fixed bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): Table 'db._t_new' doesn't exist" - -v2.2.2 released 2013-04-24 -========================== - -Percona Toolkit 2.2.2 has been released. This is the second release of -the 2.2 series and aims to fix bugs in the previous release and provide -usability enhacements to the toolkit. - -Users may note the revival of the --show-all option in pt-query-digest. -This had been removed in 2.2.1, but resulted in too much output in -certain cases. - -A new --recursion-method was added to pt-table-checksum: cluster. This -method attempts to auto-discover cluster nodes, alleviating the need to -specify cluster node DSNs in a DSN table (--recursion-method=dsn). - -The following highlights some of the more interesting and "hot" bugs in -this release: - -* Bug #1127450: pt-archiver --bulk-insert may corrupt data - -pt-archiver --bulk-insert didn't work with --charset UTF-8. This revealed -a case where the tool could corrupt data by double-encoding. This is now -fixed, but remains relatively dangerous if using DBD::mysql 3.0007 which -does not handle UTF-8 properly. - -* Bug #1163372: pt-heartbeat --utc --check always returns 0 - -Unfortunately, the relatively new --utc option for pt-heart was still -broken because "[MySQL] interprets date as a value in the current time zone -and converts it to an internal value in UTC." Now the tool works correctly -with --utc by specifying "SET time_zone='+0:00'", and older versions of -the tool can be made to work by specifying --set-vars "time_zone='+0:00'". - -* Bug #821502: Some tools don't have --help or --version - -pt-align, pt-mext, pt-pmp and pt-sift now have both options. - -This is another solid bug fix release, and all users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added --show-all to pt-query-digest -* Added --recursion-method=cluster to pt-table-checksum -* Fixed bug 1127450: pt-archiver --bulk-insert may corrupt data -* Fixed bug 1163372: pt-heartbeat --utc --check always returns 0 -* Fixed bug 1156901: pt-query-digest --processlist reports duplicate queries for replication thread -* Fixed bug 1160338: pt-query-digest 2.2 prints unwanted debug info on tcpdump parsing errors -* Fixed bug 1160918: pt-query-digest 2.2 prints too many string values -* Fixed bug 1156867: pt-stalk prints the wrong variable name in verbose mode when --function is used -* Fixed bug 1081733: pt-stalk plugins can't access the real --prefix -* Fixed bug 1099845: pt-table-checksum pxc same_node function incorrectly uses wsrep_sst_receive_address -* Fixed bug 821502: Some tools don't have --help or --version -* Fixed bug 947893: Some tools use @@hostname without /*!50038*/ -* Fixed bug 1082406: An explicitly set wsrep_node_incoming_address may make SHOW STATUS LIKE 'wsrep_incoming_addresses' return a portless address - -v2.2.1 released 2013-03-14 -========================== - -Percona Toolkit 2.2.1 has been released. This is the first release in -the new 2.2 series which supersedes the 2.1 series and renders the 2.0 -series obsolete. We plan to do one more bug fix release for 2.1 (2.1.10), -but otherwise all new development and fixes and will now focus on 2.2. - -Percona Toolkit 2.2 has been several months in the making, and it turned -out very well, with many more new features, changes, and improvements than -originally anticipated. Here are the highlights: - ----- - -* Official support for MySQL 5.6 - -We started beta support for MySQL 5.6 in 2.1.8 when 5.6 was still beta. -Now that 5.6 is GA, so is our support for it. Check out the Percona Toolkit -supported platforms and versions: -http://www.percona.com/mysql-support/policies/percona-toolkit-supported-platforms-and-versions - -When you upgrade to MySQL 5.6, be sure to upgrade to Percona Toolkit 2.2, too. - -* Official support for Percona XtraDB Cluster (PXC) - -We also started beta support for Percona XtraDB Cluster in 2.1.8, but -now that support is official in 2.2 because we have had many months to -work with PXC and figure out which tools work with it and how. There's -still one noticeable omission: pt-table-sync. It's still unclear if -or how one would sync a cluster that, in theory, doesn't become out-of-sync. -As Percona XtraDB Cluster develops, Percona Toolkit will continue to -evolve to support it. - -* pt-online-schema-change (pt-osc) is much more resilient - -pt-online-schema-change 2.1 has been a great success, and people have been -using it for evermore difficult and challenging tasks. Consequently, we -needed to make it "try harder", even though it already tried pretty hard -to keep working despite recoverable errors and such. Whereas pt-osc 2.1 -only retries certain operations, pt-osc 2.2 retries every critical operation, -and its tries and wait time between tries for all operations are configurable. -Also, we removed --lock-wait-timeout which set innodb_lock_wait_timeout -because that now conflicts, or is at least confused with, lock_wait_timeout -(introduced in MySQL 5.5) for metadata locks. Now --set-vars is used to -set both of these (or any) system variables. For a quick intro to metadata -locks and how they may affect you, see Ovais's article: -http://www.mysqlperformanceblog.com/2013/02/01/implications-of-metadata-locking-changes-in-mysql-5-5/ - -What does this all mean? In short: pt-online-schema-change 2.2 is far more -resilient out of the box. It's also aware of metadata locks now, whereas -2.1 was not really aware of them. And it's highly configurable, so you can -make the tool try _very_ hard to keep working. - -* pt-upgrade is brand-new - -pt-upgrade was written once long ago, thrown into the world, and then never -heard from again... until now. Now that we have four base versions of -MySQL (5.0, 5.1, 5.5, and 5.6), plus at least four major forks (Percona -Server, MariaDB, Percona XtraDB Cluster, and MariaDB Galera Cluster), -upgrades are fashionable, so to speak. Problem is: "original" pt-upgrade -was too noisy and too complex. pt-upgrade 2.2 is far simpler and far -easier to use. It's basically what you expect from such a tool. - -Moreover, it has a really helpful new feature: "reference results", i.e. -saved results from running queries on a server. Granted, this can take -*a lot* of disk space, but it allows you to "run now, compare later." - -If you're thinking about upgrading, give pt-upgrade a try. It also reads -every type of log now (slow, general, binary, and tcpdump), so you shouldn't -have a problem finding queries to run and compare. - -* pt-query-digest is simpler - -pt-query-digest 2.2 has fewer options now. Basically, we re-focused it -on its primary objective: analyzing MySQL query logs. So the ability -to parse memcached, Postgres, Apache, and other logs was removed. We -also removed several options that probably nobody ever used, and -changed/renamed other options to be more logical. The result is a simpler, -more focused tool, i.e. less overwhelming. - -Also, pt-query-digest 2.2 can save results in JSON format (--output=json). -This feature is still in development while we determine the optimal -JSON structure. - -* Version check is on by default - -Way back in 2.1.4, released September/October 2012, we introduced a feature -called "version check" into most tools: http://percona.com/version-check -It's like a lot of software that automatically checks for updates, but -it's also more: it's a free service from Percona that advises when certain -programs (Percona Toolkit tools, MySQL, Perl, etc.) are either out of date -or are known bad versions. For example, there are two versions of the -DBD::mysql Perl module that have problems. And there are certain versions -of MySQL that have critical bugs. Version check will warn you about these -if your system is running them. - -What's new in 2.2 is that, whereas this feature (specifically, the option -in tools: --version-check) was off by default, now it's on by default. -If the IO::Socket::SSL Perl module is installed (easily available through -your package manager), it will use a secure (https) connection over the web, -else it will use a standard (http) connection. - -Check out http://percona.com/version-check for more information. - -* pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player are gone - -We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. -Granted, no tool is ever really gone: if you need one of these tools, -get it from 2.1. pt-log-player is now superseded by Percona Playback -(http://www.percona.com/doc/percona-playback/). pt-query-advisor was -removed so that we can focus our efforts on its online counterpart instead: -https://tools.percona.com/query-advisor. The other tools were special -projects that were not widely used. - -* pt-stalk and pt-mysql-summary have built-in MySQL options - -No more "pt-stalk -- -h db1 -u me". pt-stalk 2.2 and pt-mysql-summary 2.2 -have all the standard MySQL options built-in, like other tools: --user, ---host, --port, --password, --socket, --defaults-file. So now the command -line is what you expect: pt-stalk -h dhb1 -u me. - -* pt-stalk --no-stalk is no longer magical - -Originally, pt-stalk --no-stalk was meant to simulate pt-collect, i.e. -collect once and exit. To do that, the tool magically set some options -and clobbered others, resulting in no way to do repeated collections -at intervals. Now --no-stalk means only that: don't stalk, just collect, -respecting --interval and --iterations as usual. So to collect once -and exit: pt-stalk --no-stalk --iterations 1. - -* pt-fk-error-logger and pt-deadlock-logger are standardized - -Similar to the pt-stalk --no-stalk changes, pt-fk-error-logger and -pt-deadlock-logger received mini overhauls in 2.2 to make their -run-related options (--run-time, --interval, --iterations) standard. -If you hadn't noticed, one tool would run forever by default, while -the other would run once and exit. And each treated their run-related -options a little differently. This magic is gone now: both tools run -forever by default, so specify --iterations or --run-time to limit how -long they run. - ----- - -There were other miscellaneous bug fixes, too. See -https://launchpad.net/percona-toolkit/+milestone/2.2.1 for the full list. - -As the first release in a new series, 2.2 features are not yet finalized. -In other words, we may change things like the pt-query-digest --output json -format in future releases after receiving real-world feedback. - -Percona Toolkit 2.2 is an exciting release with many helpful new -features. Users are encouraged to begin upgrading, particularly given -that, except for the forthcoming 2.1.10 release, no more work will be -done on 2.1 (unless you're a Percona customer with a support contract or -other agreement). - -If you upgrade from 2.1 to 2.2, be sure to re-read tools' documentation -to see what has changed because much as changed for certain tools. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Official support for MySQL 5.6 -* Official support for Percona XtraDB Cluster -* Redesigned pt-query-digest -* Redesigned pt-upgrade -* Redesigned pt-fk-error-logger -* Redesigned pt-deadlock-logger -* Changed --set-vars in all tools -* Renamed --retries to --tries in pt-online-schema-change -* Added --check-read-only to pt-heartbeat -* Added MySQL options to pt-mysql-summary -* Added MySQL options to pt-stalk -* Removed --lock-wait-timeout from pt-online-schema-change (use --set-vars) -* Removed --lock-wait-timeout from pt-table-checksum (use --set-vars) -* Removed pt-query-advisor -* Removed pt-tcp-model -* Removed pt-trend -* Removed pt-log-player -* Enabled --version-check by default in all tools -* Fixed bug 1008796: Several tools don't have --database -* Fixed bug 1087319: Quoter::serialize_list() doesn't handle multiple NULL values -* Fixed bug 1086018: pt-config-diff needs to parse wsrep_provider_options -* Fixed bug 1056838: pt-fk-error-logger --run-time works differently than pt-deadlock-logger --run-time -* Fixed bug 1093016: pt-online-schema-change doesn't retry RENAME TABLE -* Fixed bug 1113301: pt-online-schema-change blocks on metadata locks -* Fixed bug 1125665: pt-stalk --no-stalk silently clobbers other options, acts magically -* Fixed bug 1019648: pt-stalk truncates InnoDB status if there are too many transactions -* Fixed bug 1087804: pt-table-checksum doesn't warn if no slaves are found - -v2.1.9 released 2013-02-14 -========================== - -Percona Toolkit 2.1.9 has been released. This release primarily aims to -restore backwards-compatibility with pt-heartbeat 2.1.7 and older, but it -also has important bug fixes for other tools. - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP - -The previous release switched the time authority from Perl to MySQL, and from -local time to UTC. Unfortunately, these changes caused a loss of precision and, -if mixing versions of pt-heartbeat, made the tool report a huge amount of -replication lag. This release makes the tool compatible with pt-heartbeat -2.1.7 and older again, but the UTC behavior introduced in 2.1.8 is now only -available by specifying the new --utc option. - -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" - -This is an important bug fix for pt-table-sync: certain chunks from -pt-table-checksum resulted in an impossible WHERE, causing the false-positive -"Cannot nibble" error, if those chunks had diffs. - -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB - -MariaDB 5.5.28 (https://kb.askmonty.org/en/mariadb-5528-changelog/) fixed -a bug: "Added warnings for duplicate key errors when using INSERT IGNORE". -However, standard MySQL does not warn in this case, despite the docs saying -that it should. Since pt-online-schema-change has always intended to ignore -duplicate entry errors by using "INSERT IGNORE", it now handles the MariaDB -case by also ignoring duplicate entry errors in the code. - -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns - -pt-online-schema-change 2.1.9 handles another case of changing the primary key. -However, since changing the primary key is tricky, the tool stops if --alter -contains "DROP PRIMARY KEY", and you have to specify --no-check-alter to -acknowledge this case. - -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -Previously, pt-stalk printed a line for every check. Since the tool is -designed to be a long-running daemon, this could result in huge log files -with "matched=no" lines. The tool has a new --verbose option which makes it -quieter by default. - -All users should upgrade, but in particular, users of versions 2.1.7 and -older are strongly recommended to skip 2.1.8 and go directly to 2.1.9. - -Users of pt-heartbeat in 2.1.8 who prefer the UTC behavior should keep in -mind that they will have to use the --utc option after upgrading. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns -* Fixed bug 1115333: pt-pmp doesn't list the origin lib for each function -* Fixed bug 823411: pt-query-digest shouldn't print "Error: none" for tcpdump -* Fixed bug 1103045: pt-query-digest fails to parse non-SQL errors -* Fixed bug 1105077: pt-table-checksum: Confusing error message with binlog_format ROW or MIXED on slave -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -v2.1.8 released 2012-12-21 -========================== - -Percona Toolkit 2.1.8 has been released. This release includes 28 bug fixes, beta support for MySQL 5.6, and extensive support for Percona XtraDB Cluster (PXC). Users intending on running the tools on Percona XtraDB Cluster or MySQL 5.6 should upgrade. The following tools have been verified to work on PXC versions 5.5.28 and newer: - -* pt-table-chcecksum -* pt-online-schema-change -* pt-archive -* pt-mysql-summary -* pt-heartbeat -* pt-variable-advisor -* pt-config-diff -* pt-deadlock-logger - -However, there are limitations when running these tools on PXC; see the Percona XtraDB Cluster section in each tool's documentation for further details. All other tools, with the exception of pt-slave-find, pt-slave-delay and pt-slave-restart, should also work correctly, but in some cases they have not been modified to take advantage of PXC features, so they may behave differently in future releases. - -The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query - -Slow logs which include timestamps but no query--which can happen if using slow_query_log_timestamp_always in Percona Server--were misparsed, resulting in an erroneous report. Now such no-query events show up in reports as ``/* No query */``. - -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" - -The "as" was misparsed and the following word would end up reported as the database; pt-query-digest now handles this correctly. - -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 - -Some renamed variables had caused the Percona Server section to work unreliably. - -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only - -When using --replicate-check-only, filter options like --databases and --tables were not applied. - -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently - -Previously, pt-heartbeat respected the MySQL time zone, but this caused false readings (e.g. very high lag) with slaves running in different time zones. Now pt-heartbeat uses UTC regardless of the server or MySQL time zone. - -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables - -Since MyISAM tables can't have foreign keys, and the tool uses the information_schema to find child tables, this could cause unnecessary load on the server. - -2.1.8 continues the trend of solid bug fix releases, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Beta support for MySQL 5.6 -* Beta support for Percona XtraDB Cluster -* pt-online-schema-change: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-table-checksum: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-upgrade: Added --[no]disable-query-cache -* Fixed bug 927955: Bad pod2rst transformation -* Fixed bug 898665: Bad online docs formatting for --[no]vars -* Fixed bug 1022622: pt-config-diff is case-sensitive -* Fixed bug 1007938: pt-config-diff doesn't handle end-of-line comments -* Fixed bug 917770: pt-config-diff Use of uninitialized value in substitution (s///) at line 1996 -* Fixed bug 1082104: pt-deadlock-logger doesn't handle usernames with dashes -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently -* Fixed bug 1086259: pt-kill --log-dsn timestamp is wrong -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables -* Fixed bug 823431: pt-query-advisor hangs on big queries -* Fixed bug 996069: pt-query-advisor RES.001 is incorrect -* Fixed bug 933465: pt-query-advisor false positive on RES.001 -* Fixed bug 937234: pt-query-advisor issues wrong RES.001 -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" -* Fixed bug 957442: pt-query-digest with custom --group-by throws error -* Fixed bug 887638: pt-query-digest prints negative byte offset -* Fixed bug 831525: pt-query-digest help output mangled -* Fixed bug 932614: pt-slave-restart CHANGE MASTER query causes error -* Fixed bug 1046440: pt-stalk purge_samples slows down checks -* Fixed bug 986847: pt-stalk does not report NFS iostat -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only -* Fixed bug 911385: pt-table-checksum v2 fails when --resume + --ignore-database is used -* Fixed bug 1041391: pt-table-checksum debug statement for "Chosen hash func" prints undef -* Fixed bug 1075638: pt-table-checksum Illegal division by zero at line 7950 -* Fixed bug 1052475: pt-table-checksum uninitialized value in numeric lt (<) at line 8611 -* Fixed bug 1078887: Tools let --set-vars clobber the required SQL mode - -v2.1.7 released 2012-11-19 -========================== - -Percona Toolkit 2.1.7 has been released which is a hotfix for two bugs when using pt-table-checksum with Percona XtraDB Cluster: - -* Bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should upgrade. Otherwise, users can wait until the next full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Fixed bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -v2.1.6 released 2012-11-13 -========================== - -Percona Toolkit 2.1.6 has been released. This release includes 33 bug fixes and three new features: pt-online-schema-change now handles renaming columns without losing data, removing one of the tool's limitations. pt-online-schema-change also got two new options: --default-engine and --statistics. Finally, pt-stalk now has a plugin hook interface, available through the --plugin option. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Bug 978133: pt-query-digest review table privilege checks don't work - -The same checks were removed from pt-table-checksum on 2.1.3 and pt-table-sync on 2.1.4, so this just follows suit. - -* Bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves - -A particularly important fix, as it may stop pt-table-checksum from breaking replication in these setups. - -* Bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag - -If you run multiple instances of pt-table-checksum on a badly lagged server, actually respecting --run-time stops the instances from divebombing the server when the replica catches up. - -* Bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key - -Fixed by choosing a key on the new table for the DELETE trigger. - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -A follow up to the same fix in the previous release, this adds to warnings for cases in which pt-table-checksum may work incorrectly and require some user intervention: One for the case of master -> cluster, and one for cluster1 -> cluster2. - -* Bug 821715: LOAD DATA LOCAL INFILE broken in some platforms - -This bug has hounded the toolkit for quite some time. In some platforms, trying to use LOAD DATA LOCAL INFILE would fail as if the user didn't have enough privileges to perform the operation. This was a misdiagnoses from MySQL; The actual problem was that the libmysqlclient.so provided by some vendors was compiled in a way that disallowed users from using the statement without some extra work. This fix adds an 'L' option to the DSNs the toolkit uses, tells the the tools to explicitly enables LOAD DATA LOCAL INFILE. This affected two pt-archiver and pt-upgrade, so if you are on an effected OS and need to use those, you can simply tag an L=1 to your DSN and everything should start working. - -* Bug 866075: pt-show-grant doesn't support column-level grants - -This was actually the 'hottest' bug in the tracker. - -This is another solid bug fix release, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-online-schema-change: Columns can now be renamed without data loss -* pt-online-schema-change: New --default-engine option -* pt-stalk: Plugin hooks available through the --plugin option to extend the tool's functionality -* Fixed bug 1069951: --version-check default should be explicitly "off" -* Fixed bug 821715: LOAD DATA LOCAL INFILE broken in some platforms -* Fixed bug 995896: Useless use of cat in Daemon.pm -* Fixed bug 1039074: Tools exit 0 on error parsing options, should exit non-zero -* Fixed bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves -* Fixed bug 1009510: pt-table-checksum breaks replication if a slave table is missing or different -* Fixed bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag -* Fixed bug 1073532: pt-table-checksum error: Use of uninitialized value in int at line 2778 -* Fixed bug 1016131: pt-table-checksum can crash with --columns if none match -* Fixed bug 1039569: pt-table-checksum dies if creating the --replicate table fails -* Fixed bug 1059732: pt-table-checksum doesn't test all hash functions -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1043528: pt-deadlock-logger can't parse db/tbl/index on partitioned tables -* Fixed bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key -* Fixed bug 1058285: pt-online-schema-change fails if sql_mode explicitly or implicitly uses ANSI_QUOTES -* Fixed bug 1073996: pt-online-schema-change fails with "I need a max_rows argument" -* Fixed bug 1039541: pt-online-schema-change --quiet doesn't disable --progress -* Fixed bug 1045317: pt-online-schema-change doesn't report how many warnings it suppressed -* Fixed bug 1060774: pt-upgrade fails if select column > 64 chars -* Fixed bug 1070916: pt-mysql-summary may report the wrong cnf file -* Fixed bug 903229: pt-mysql-summary incorrectly categorizes databases -* Fixed bug 866075: pt-show-grant doesn't support column-level grants -* Fixed bug 978133: pt-query-digest review table privilege checks don't work -* Fixed bug 956981: pt-query-digest docs for event attributes link to defunct Maatkit wiki -* Fixed bug 1047335: pt-duplicate-key-checker fails when it encounters a crashed table -* Fixed bug 1047701: pt-stalk deletes non-empty files -* Fixed bug 1070434: pt-stalk --no-stalk and --iterations 1 don't wait for the collect -* Fixed bug 1052722: pt-fifo-split is processing n-1 rows initially -* Fixed bug 1013407: pt-find documentation error with mtime and InnoDB -* Fixed bug 1059757: pt-trend output has no header -* Fixed bug 1063933: pt-visual-explain docs link to missing pdf -* Fixed bug 1075773: pt-fk-error-logger crashes if there's no foreign key error -* Fixed bug 1075775: pt-fk-error-logger --dest table example doesn't work - -v2.1.5 released 2012-10-08 -========================== - -Percona Toolkit 2.1.5 has been released. This release is less than two weeks after the release of 2.1.4 because we wanted to address these bugs quickly: - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -* Bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes - -* Bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL - -The first two bugs fix how pt-table-checksum works with Percona XtraDB Cluster (PXC). Although the 2.1.4 release did introduce support for PXC, these bugs prevented pt-table-checksum from working correctly with a cluster. - -The third bug is also related to a feature new in 2.1.4: --version-check. The feature uses HTTPS/SSL by default, but some modules in pt-table-sync weren't update which could prevent it from working on older systems. Related, the version check web page mentioned in tools' documentation was also created. - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should definitely upgrade. Otherwise, users can wait until 2.1.6 for another full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes -* Fixed bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL -* Fixed bug 1060423: Missing version-check page - -v2.1.4 released 2012-09-20 -========================== - -Percona Toolkit 2.1.4 has been released. This release includes 26 bug fixes and three new features: Making pt-table-checksum work with Percona XtraDB Cluster, adding a --run-time option to pt-table-checksum, and implementing the "Version Check" feature, enabled through the --version-check switch. For further information on --version-check, see http://www.mysqlperformanceblog.com/2012/09/10/introducing-the-version-check-feature-in-percona-toolkit/. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1017626: pt-table-checksum doesn't work with Percona XtraDB Cluster - -Note that this requires Percona XtraDB Cluster 5.5.27-23.6 or newer, as the fix depends on this bug https://bugs.launchpad.net/codership-mysql/+bug/1023911 being resolved. - -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves - -Previously, users had no recourse but using --recursion-method in conjunction with a dsn table to sidestep this bug, so this fix is a huge usability gain. This was caused by the toolkit not copying the -F portion of the main dsn. - -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" - -Which were stopping pt-upgrade from working on a MySQL 4.1 host. - -* Fixed bug 1036747: pt-table-sync priv checks need to be removed - -The same checks were removed in the previous release from pt-table-checksum, so this continues the trend. - -* Fixed bug 1038995: pt-stalk --notify-by-email fails - -This was a bug in our shell option parsing library, and would potentially affect any option starting with 'no'. - -Like 2.1.3, this is another solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-table-checksum: Percona XtraDB Cluster support -* pt-table-checksum: Implemented the standard --run-time option -* Implemented the version-check feature in several tools, enabled with the --version-check option -* Fixed bug 856060: Document gdb dependency -* Fixed bug 1041394: Unquoted arguments to tr break the bash tools -* Fixed bug 1035311: pt-diskstats shows wrong device names -* Fixed bug 1036804: pt-duplicate-key-checker error parsing InnoDB table with no PK or unique keys -* Fixed bug 1022658: pt-online-schema-change dropping FK limitation isn't documented -* Fixed bug 1041372: pt-online-schema-changes fails if db+tbl name exceeds 64 characters -* Fixed bug 1029178: pt-query-digest --type tcpdump memory usage keeps increasing -* Fixed bug 1037211: pt-query-digest won't distill LOCK TABLES in lowercase -* Fixed bug 942114: pt-stalk warns about bad "find" usage -* Fixed bug 1035319: pt-stalk df -h throws away needed details -* Fixed bug 1038995: pt-stalk --notify-by-email fails -* Fixed bug 1038995: pt-stalk does not get all InnoDB lock data -* Fixed bug 952722: pt-summary should show information about Fusion-io cards -* Fixed bug 899415: pt-table-checksum doesn't work if slaves use RBR -* Fixed bug 954588: pt-table-checksum --check-slave-lag docs aren't clear -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves -* Fixed bug 930693: pt-table-sync and text columns with just whitespace -* Fixed bug 1028710: pt-table-sync base_count fails on n = 1000, base = 10 -* Fixed bug 1034717: pt-table-sync division by zero error with varchar primary key -* Fixed bug 1036747: pt-table-sync priv checks need to be removed -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" -* Fixed bug 1035260: sh warnings in pt-summary and pt-mysql-summary -* Fixed bug 1038276: ChangeHandler doesn't quote varchar columns with hex-looking values -* Fixed bug 916925: CentOS 5 yum dependency resolution for perl module is wrong -* Fixed bug 1035950: Percona Toolkit RPM should contain a dependency on perl-Time-HiRes - -v2.1.3 released 2012-08-03 -========================== - -Percona Toolkit 2.1.3 has been released. This release includes 31 bug fixes and one new feature: pt-kill --log-dsn to log information about killed queries to a table. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 - -pt-table-checksum used to check the user's privileges, but the method was not always reliable, and due to http://bugs.mysql.com/bug.php?id=61846 it became quite unreliable on MySQL 5.5. So the privs check was removed altogether, meaning that the tool may fail later if the user's privileges are insufficient. - -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS - -In certain cases where the master and replicas have different schemas and/or tables, pt-table-checksum could break replication because the checksums table did not exist on a replica. - -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns - -Certain distributions of MySQL add extra columns to SHOW PROCESSLIST which caused pt-query-digest --processlist to crash at times. - -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost - -pt-kill is meant to be a long-running daemon, so naturally it's important that it stays connected to MySQL. - -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error - -The combination of these pt-heartbeat options could cause replication to break due to a duplicate key error. - -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 - -This bug was related to how --quiet was handled, and it could happen even if --quiet wasn't given on the command line. - -All in all, this is solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-kill: Implemented --log-dsn to log info about killed queries to a table -* Fixed bug 1016127: Install hint for DBD::mysql is wrong -* Fixed bug 984915: DSNParser does not check success of --set-vars -* Fixed bug 889739: pt-config-diff doesn't diff quoted strings properly -* Fixed bug 969669: pt-duplicate-key-checker --key-types=k doesn't work -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error -* Fixed bug 1028614: pt-index-usage ignores --database -* Fixed bug 940733: pt-ioprofile leaves behind temp directory -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost -* Fixed bug 1016114: pt-online-schema-change docs don't mention default values -* Fixed bug 1020997: pt-online-schema-change fails when table is empty -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 -* Fixed bug 937225: pt-query-advisor OUTER JOIN advice in JOI.003 is confusing -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns -* Fixed bug 924950: pt-query-digest --group-by db may crash profile report -* Fixed bug 1022851: pt-sift error: PREFIX: unbound variable -* Fixed bug 969703: pt-sift defaults to '.' instead of '/var/lib/pt-talk' -* Fixed bug 962330: pt-slave-delay incorrectly computes lag if started when slave is already lagging -* Fixed bug 954990: pt-stalk --nostalk does not work -* Fixed bug 977226: pt-summary doesn't detect LSI RAID control -* Fixed bug 1030031: pt-table-checksum reports wrong number of DIFFS -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS -* Fixed bug 953141: pt-table-checksum ignores its default and explicit --recursion-method -* Fixed bug 1030975: pt-table-sync crashes if sql_mode includes ANSI_QUOTES -* Fixed bug 869005: pt-table-sync should always set REPEATABLE READ -* Fixed bug 903510: pt-tcp-model crashes in --type=requests mode on empty file -* Fixed bug 934310: pt-tcp-model --quantile docs wrong -* Fixed bug 980318: pt-upgrade results truncated if hostnames are long -* Fixed bug 821696: pt-variable-advisor shows too long of a snippet -* Fixed bug 844880: pt-variable-advisor shows binary logging as both enabled and disabled - -v2.1.2 released 2012-06-12 -========================== - -Percona Toolkit 2.1.2 has been released. This is a very important release because it fixes a critical bug in pt-table-sync (bug 1003014) which caused various failures. All users of Percona Toolkit 2.1 should upgrade to this release. There were 47 other bug fixes, several new options, and other changes. The following is a high-level summary of the most important changes. - -In addition to the critical bug fix mentioned above, another important pt-table-sync bug was fixed, bug 1002365: --ignore-* options did not work with --replicate. The --lock-and-rename feature of the tool was also disabled unless running MySQL 5.5 or newer because it did not work reliably in earlier versions of MySQL. - -Several important pt-table-checksum bugs were fixed. First, a bug caused the tool to ignore the primary key. Second, the tool did not wait for the checksum table to replicate, so it could select from a nonexistent table on a replica and crash. Third, it did not check if all checksum queries were safe and chunk index with more than 3 columns could cause MySQL to scan many more rows than expected. - -pt-online-schema-change received many improvements and fixes: it did not retry deadlocks, but now it does; --no-swap-tables caused an error; it did not handle column renames; it did not allow disabling foreign key checks; --dry-run always failed on tables with foreign keys; it used different keys for chunking and triggers; etc. In short: pt-online-schema-change 2.1.2 is superior to 2.1.1. - -Two pt-archiver bugs were fixed: bug 979092, --sleep conflicts with bulk operations; and bug 903379, --file doesn't create a file. - ---recursion-method=none was implemented in pt-heartbeat, pt-online-schema-change, pt-slave-find, pt-slave-restart, pt-table-checksum, and pt-table-sync. This allows these tools to avoid executing SHOW SLAVE STATUS which requires a privilege not available to Amazon RDS users. - -Other bugs were fixed in pt-stalk, pt-variable-advisor, pt-duplicate-key-checker, pt-diskstats, pt-query-digest, pt-sift, pt-kill, pt-summary, and pt-deadlock-logger. - -Percona Toolkit 2.1.2 should be backwards-compatible with 2.1.1, so users are strongly encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-heartbeat: Implemented --recursion-method=none -* pt-index-usage: MySQL 5.5 compatibility fixes -* pt-log-player: MySQL 5.5 compatibility fixes -* pt-online-schema-change: Added --chunk-index-columns -* pt-online-schema-change: Added --[no]check-plan -* pt-online-schema-change: Added --[no]drop-new-table -* pt-online-schema-change: Implemented --recursion-method=none -* pt-query-advisor: Added --report-type for JSON output -* pt-query-digest: Removed --[no]zero-bool -* pt-slave-delay: Added --database -* pt-slave-find: Implemented --recursion-method=none -* pt-slave-restart: Implemented --recursion-method=none -* pt-table-checksum: Added --chunk-index-columns -* pt-table-checksum: Added --[no]check-plan -* pt-table-checksum: Implemented --recursion-method=none -* pt-table-sync: Disabled --lock-and-rename except for MySQL 5.5 and newer -* pt-table-sync: Implemented --recursion-method=none -* Fixed bug 945079: Shell tools TMPDIR may break -* Fixed bug 912902: Some shell tools still use basename -* Fixed bug 987694: There is no --recursion-method=none option -* Fixed bug 886077: Passwords with commas don't work, expose part of password -* Fixed bug 856024: Lintian warnings when building percona-toolkit Debian package -* Fixed bug 903379: pt-archiver --file doesn't create a file -* Fixed bug 979092: pt-archiver --sleep conflicts with bulk operations -* Fixed bug 903443: pt-deadlock-logger crashes on MySQL 5.5 -* Fixed bug 941064: pt-deadlock-logger can't clear deadlocks on 5.5 -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 994176: pt-diskstats --group-by=all --headers=scroll prints a header for every sample -* Fixed bug 894140: pt-duplicate-key-checker sometimes recreates a key it shouldn't -* Fixed bug 923896: pt-kill: uninitialized value causes script to exit -* Fixed bug 1003003: pt-online-schema-change uses different keys for chunking and triggers -* Fixed bug 1003315: pt-online-schema-change --dry-run always fails on table with foreign keys -* Fixed bug 1004551: pt-online-schema-change --no-swap-tables causes error -* Fixed bug 976108: pt-online-schema-change doesn't allow to disable foreign key checks -* Fixed bug 976109: pt-online-schema-change doesn't handle column renames -* Fixed bug 988036: pt-online-schema-change causes deadlocks under heavy write load -* Fixed bug 989227: pt-online-schema-change crashes with PTDEBUG -* Fixed bug 994002: pt-online-schema-change 2.1.1 doesn't choose the PRIMARY KEY -* Fixed bug 994010: pt-online-schema-change 2.1.1 crashes without InnoDB -* Fixed bug 996915: pt-online-schema-change crashes with invalid --max-load and --critical-load -* Fixed bug 998831: pt-online-schema-change -- Should have an option to NOT drop tables on failure -* Fixed bug 1002448: pt-online-schema-change: typo for finding usable indexes -* Fixed bug 885382: pt-query-digest --embedded-attributes doesn't check cardinality -* Fixed bug 888114: pt-query-digest report crashes with infinite loop -* Fixed bug 949630: pt-query-digest mentions a Subversion repository -* Fixed bug 844034: pt-show-grants --separate fails with proxy user -* Fixed bug 946707: pt-sift loses STDIN after pt-diskstats -* Fixed bug 994947: pt-stalk doesn't reset cycles_true after collection -* Fixed bug 986151: pt-stalk-has mktemp error -* Fixed bug 993436: pt-summary Memory: Total reports M instead of G -* Fixed bug 1008778: pt-table-checksum doesn't wait for checksum table to replicate -* Fixed bug 1010232: pt-table-checksum doesn't check the size of checksum chunks -* Fixed bug 1011738: pt-table-checksum SKIPPED is zero but chunks were skipped -* Fixed bug 919499: pt-table-checksum fails with binary log error in mysql >= 5.5.18 -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 978432: pt-table-checksum ignoring primary key -* Fixed bug 995274: pt-table-checksum can't use an undefined value as an ARRAY reference at line 2206 -* Fixed bug 996110: pt-table-checksum crashes if InnoDB is disabled -* Fixed bug 987393: pt-table-checksum: Empy tables cause "undefined value as an ARRAY" errors -* Fixed bug 1002365: pt-table-sync --ignore-* options don't work with --replicate -* Fixed bug 1003014: pt-table-sync --replicate and --sync-to-master error "index does not exist" -* Fixed bug 823403: pt-table-sync --lock-and-rename doesn't work on 5.1 -* Fixed bug 898138: pt-variable-advisor doesn't recognize 5.5.3+ concurrent_insert values - -v2.1.1 released 2012-04-03 -========================== - -Percona Toolkit 2.1.1 has been released. This is the first release in the -new 2.1 series which supersedes the 2.0 series. We will continue to fix bugs -in 2.0, but 2.1 is now the focus of development. - -2.1 introduces a lot of new code for: - -* pt-online-schema-change (completely redesigned) -* pt-mysql-summary (completely redesigned) -* pt-summary (completely redesigned) -* pt-fingerprint (new tool) -* pt-table-usage (new tool) - -There were also several bug fixes. - -The redesigned tools are meant to replace their 2.0 counterparts because -the 2.1 versions have the same or more functionality and they are simpler -and more reliable. pt-online-schema-change was particularly enhanced to -be as safe as possible given that the tool is inherently risky. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Completely redesigned pt-online-schema-change -* Completely redesigned pt-mysql-summary -* Completely redesigned pt-summary -* Added new tool: pt-table-usage -* Added new tool: pt-fingerprint -* Fixed bug 955860: pt-stalk doesn't run vmstat, iostat, and mpstat for --run-time -* Fixed bug 960513: SHOW TABLE STATUS is used needlessly -* Fixed bug 969726: pt-online-schema-change loses foreign keys -* Fixed bug 846028: pt-online-schema-change does not show progress until completed -* Fixed bug 898695: pt-online-schema-change add useless ORDER BY -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 963225: pt-query-digest fails to set history columns for disk tmp tables and disk filesort -* Fixed bug 967451: Char chunking doesn't quote column name -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 896553: Various documentation spelling fixes -* Fixed bug 949154: pt-variable-advisor advice for relay-log-space-limit -* Fixed bug 953461: pt-upgrade manual broken 'output' section -* Fixed bug 949653: pt-table-checksum docs don't mention risks posed by inconsistent schemas - -v2.0.4 released 2012-03-07 -========================== - -Percona Toolkit 2.0.4 has been released. 23 bugs were fixed in this release, -and three new features were implemented. First, --filter was added to pt-kill -which allows for arbitrary --group-by. Second, pt-online-schema-change now -requires that its new --execute option be given, else the tool will just check -the tables and exit. This is a safeguard to encourage users to read the -documentation, particularly when replication is involved. Third, pt-stalk -also received a new option: --[no]stalk. To collect immediately without -stalking, specify --no-stalk and the tool will collect once and exit. - -This release is completely backwards compatible with previous 2.0 releases. -Given the number of bug fixes, it's worth upgrading to 2.0.4. - -Changelog ---------- - -* Added --filter to pt-kill to allow arbitrary --group-by -* Added --[no]stalk to pt-stalk (bug 932331) -* Added --execute to pt-online-schema-change (bug 933232) -* Fixed bug 873598: pt-online-schema-change doesn't like reserved words in column names -* Fixed bug 928966: pt-pmp still uses insecure /tmp -* Fixed bug 933232: pt-online-schema-change can break replication -* Fixed bug 941225: Use of qw(...) as parentheses is deprecated at pt-kill line 3511 -* Fixed bug 821694: pt-query-digest doesn't recognize hex InnoDB txn IDs -* Fixed bug 894255: pt-kill shouldn't check if STDIN is a tty when --daemonize is given -* Fixed bug 916999: pt-table-checksum error: DBD::mysql::st execute failed: called with 2 bind variables when 6 are needed -* Fixed bug 926598: DBD::mysql bug causes pt-upgrade to use wrong precision (M) and scale (D) -* Fixed bug 928226: pt-diskstats illegal division by zero -* Fixed bug 928415: Typo in pt-stalk doc: --trigger should be --function -* Fixed bug 930317: pt-archiver doc refers to nonexistent pt-query-profiler -* Fixed bug 930533: pt-sift looking for ``*-processlist1;`` broken compatibility with pt-stalk -* Fixed bug 932331: pt-stalk cannot collect without stalking -* Fixed bug 932442: pt-table-checksum error when column name has two spaces -* Fixed bug 932883: File Debian bug after each release -* Fixed bug 940503: pt-stalk disk space checks wrong on 32bit platforms -* Fixed bug 944420: --daemonize doesn't always close STDIN -* Fixed bug 945834: pt-sift invokes pt-diskstats with deprecated argument -* Fixed bug 945836: pt-sift prints awk error if there are no stack traces to aggregate -* Fixed bug 945842: pt-sift generates wrong state sum during processlist analysis -* Fixed bug 946438: pt-query-digest should print a better message when an unsupported log format is specified -* Fixed bug 946776: pt-table-checksum ignores --lock-wait-timeout -* Fixed bug 940440: Bad grammar in pt-kill docs - -v2.0.3 released 2012-02-03 -========================== - -Percona Toolkit 2.0.3 has been released. The development team was very -busy last month making this release significant: two completely -redesigned and improved tools, pt-diskstats and pt-stalk, and 20 bug fixes. - -Both pt-diskstats and pt-stalk were redesigned and rewritten from the ground -up. This allowed us to greatly improve these tools' functionality and -increase testing for them. The accuracy and output of pt-diskstats was -enhanced, and the tool was rewritten in Perl. pt-collect was removed and -its functionality was put into a new, enhanced pt-stalk. pt-stalk is now -designed to be a stable, long-running daemon on a variety of common platforms. -It is worth re-reading the documentation for each of these tools. - -The 20 bug fixes cover a wide range of problems. The most important are -fixes to pt-table-checksum, pt-iostats, and pt-kill. Apart from pt-diskstats, -pt-stalk, and pt-collect (which was removed), no other tools were changed -in backwards-incompatible ways, so it is worth reviewing the full changelog -for this release and upgrading if you use any tools which had bug fixes. - -Thank you to the many people who reported bugs and submitted patches. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-diskstats -* Completely redesigned pt-stalk -* Removed pt-collect and put its functionality in pt-stalk -* Fixed bug 871438: Bash tools are insecure -* Fixed bug 897758: Failed to prepare TableSyncChunk plugin: Use of uninitialized value $args{"chunk_range"} in lc at pt-table-sync line 3055 -* Fixed bug 919819: pt-kill --execute-command creates zombies -* Fixed bug 925778: pt-ioprofile doesn't run without a file -* Fixed bug 925477: pt-ioprofile docs refer to pt-iostats -* Fixed bug 857091: pt-sift downloads http://percona.com/get/pt-pmp, which does not work -* Fixed bug 857104: pt-sift tries to invoke mext, should be pt-mext -* Fixed bug 872699: pt-diskstats: rd_avkb & wr_avkb derived incorrectly -* Fixed bug 897029: pt-diskstats computes wrong values for md0 -* Fixed bug 882918: pt-stalk spams warning if oprofile isn't installed -* Fixed bug 884504: pt-stalk doesn't check pt-collect -* Fixed bug 897483: pt-online-schema-change "uninitialized value" due to update-foreign-keys-method -* Fixed bug 925007: pt-online-schema-change Use of uninitialized value $tables{"old_table"} in concatenation (.) or string at line 4330 -* Fixed bug 915598: pt-config-diff ignores --ask-pass option -* Fixed bug 919352: pt-table-checksum changes binlog_format even if already set to statement -* Fixed bug 921700: pt-table-checksum doesn't add --where to chunk size test on replicas -* Fixed bug 921802: pt-table-checksum does not recognize --recursion-method=processlist -* Fixed bug 925855: pt-table-checksum index check is case-sensitive -* Fixed bug 821709: pt-show-grants --revoke and --separate don't work together -* Fixed bug 918247: Some tools use VALUE instead of VALUES - -v2.0.2 released 2012-01-05 -========================== - -Percona Toolkit 2.0.2 fixes one critical bug: pt-table-sync --replicate -did not work with character values, causing an "Unknown column" error. -If using Percona Toolkit 2.0.1, you should upgrade to 2.0.2. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Fixed bug 911996: pt-table-sync --replicate causes "Unknown column" error - -v2.0.1 released 2011-12-30 -========================== - -The Percona Toolkit development team is proud to announce a new major version: -2.0. Beginning with Percona Toolkit 2.0, we are overhauling, redesigning, and -improving the major tools. 2.0 tools are therefore not backwards compatible -with 1.0 tools, which we still support but will not continue to develop. - -New in Percona Toolkit 2.0.1 is a completely redesigned pt-table-checksum. -The original pt-table-checksum 1.0 was rather complex, but it worked well -for many years. By contrast, the new pt-table-checksum 2.0 is much simpler but -also much more efficient and reliable. We spent months rethinking, redesigning, -and testing every aspect of the tool. The three most significant changes: -pt-table-checksum 2.0 does only --replicate, it has only one chunking algorithm, -and its memory usage is stable even with hundreds of thousands of tables and -trillions of rows. The tool is now dedicated to verifying MySQL replication -integrity, nothing else, which it does extremely well. - -In Percona Toolkit 2.0.1 we also fixed various small bugs and forked ioprofile -and align (as pt-ioprofile and pt-align) from Aspersa. - -If you still need functionalities in the original pt-table-checksum, -the latest Percona Toolkit 1.0 release remains available for download. -Otherwise, all new development in Percona Toolkit will happen in 2.0. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-table-checksum -* Fixed bug 856065: pt-trend does not work -* Fixed bug 887688: Prepared statements crash pt-query-digest -* Fixed bug 888286: align not part of percona-toolkit -* Fixed bug 897961: ptc 2.0 replicate-check error does not include hostname -* Fixed bug 898318: ptc 2.0 --resume with --tables does not always work -* Fixed bug 903513: MKDEBUG should be PTDEBUG -* Fixed bug 908256: Percona Toolkit should include pt-ioprofile -* Fixed bug 821717: pt-tcp-model --type=requests crashes -* Fixed bug 844038: pt-online-schema-change documentation example w/drop-tmp-table does not work -* Fixed bug 864205: Remove the query to reset @crc from pt-table-checksum -* Fixed bug 898663: Typo in pt-log-player documentation - -v1.0.1 released 2011-09-01 -========================== - -Percona Toolkit 1.0.1 has been released. In July, Baron announced planned -changes to Maatkit and Aspersa development;[1] Percona Toolkit is the -result. In brief, Percona Toolkit is the combined fork of Maatkit and -Aspersa, so although the toolkit is new, the programs are not. That means -Percona Toolkit 1.0.1 is mature, stable, and production-ready. In fact, -it's even a little more stable because we fixed a few bugs in this release. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Although Maatkit and Aspersa development use Google Code, Percona Toolkit -uses Launchpad: https://launchpad.net/percona-toolkit - -[1] http://www.xaprb.com/blog/2011/07/06/planned-change-in-maatkit-aspersa-development/ - -Changelog ---------- - -* Fixed bug 819421: MasterSlave::is_replication_thread() doesn't match all -* Fixed bug 821673: pt-table-checksum doesn't include --where in min max queries -* Fixed bug 821688: pt-table-checksum SELECT MIN MAX for char chunking is wrong -* Fixed bug 838211: pt-collect: line 24: [: : integer expression expected -* Fixed bug 838248: pt-collect creates a "5.1" file - -v0.9.5 released 2011-08-04 -========================== - -Percona Toolkit 0.9.5 represents the completed transition from Maatkit and Aspersa. There are no bug fixes or new features, but some features have been removed (like --save-results from pt-query-digest). This release is the starting point for the 1.0 series where new development will happen, and no more changes will be made to the 0.9 series. - -Changelog ---------- - -* Forked, combined, and rebranded Maatkit and Aspersa as Percona Toolkit. - -Changelog ---------- - -* Fixed bug 1279502: --version-check behaves like spyware - -Changelog ---------- - - -Percona Toolkit 3.0.0 GA includes the following changes: - -* Added requirement to run ``pt-mongodb-summary`` as a user with the ``clusterAdmin`` or ``root`` built-in roles. - -v3.0 released 2017-02-03 -======================== - -Release Notes -************* - -Percona Toolkit 3.0.0 RC includes the following changes: - -New Features - -* Added ``pt-mongodb-summary`` tool - -* Added ``pt-mongodb-query-digest`` tool - -Bug fixes - -* 1402776: Updated ``MySQLProtocolParser`` to fix error when parsing ``tcpdump`` capture with ``pt-query-digest`` - -* 1632522: Fixed failure of ``pt-online-schema-change`` when altering a table with a self-referencing foreign key (Thanks Amiel Marqeta) - -* 1654668: Fixed failure of ``pt-summary`` on Red Hat and derivatives (Thanks Marcelo Altmann) - - -v2.2.20 released 2016-12-09 -=========================== - -Percona Toolkit 2.2.20 includes the following changes: - -New Features - -* 1636068: New ``--pause-file`` option has been implemented for ``pt-online-schema-change``. When used ``pt-online-schema-change`` will pause while the specified file exists. - -* 1638293 and 1642364: ``pt-online-schema-change`` now supports adding and removing the ``DATA DIRECTORY`` to a new table with the ``--data-dir`` and ``--remove-data-dir`` options. - -* 1642994: Following schemas/tables have been added to the default ignore list: ``mysql.gtid_execution``, ``sys.sys_config``, ``mysql.proc``, ``mysql.inventory``, ``mysql.plugin``, ``percona.*`` (including checksums, dsns table), ``test.*``, and ``percona_schema.*``. - -* 1643940: ``pt-summary`` now provides information about Transparent huge pages. - -* 1604834: New ``--preserve-embedded-numbers`` option has been implemented for ``pt-query-digest`` which can be used to preserve numbers in database/table names when fingerprinting queries. - -Bug Fixes - -* 1613915: ``pt-online-schema-change`` could miss the data due to the way ENUM values are sorted. - -* 1625005: ``pt-online-schema-change`` didn't apply underscores to foreign keys individually. - -* 1566556: ``pt-show-grants`` didn't work correctly with *MariaDB* 10 (*Daniël van Eeden*). - -* 1634900: ``pt-upgrade`` would fail when log contained ``SELECT...INTO`` queries. - -* 1639052: ``pt-table-checksum`` now automatically excludes checking schemas named ``percona`` and ``percona_schema`` which aren't consistent across the replication hierarchy. - -* 1635734: ``pt-slave-restart --config`` did not recognize ``=`` as a separator. - -* 1362942: ``pt-slave-restart`` would fail on *MariaDB* 10.0.13. - -Changelog ---------- - -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug 1566556: pt-show-grants fails against MariaDB10+ -* Feature 1604834: pt-query-digest numbers in table or column names converted to question marks (--preserve-embedded-numbers) -* Fixed bug 1613915: pt-online-schema-change misses data. Fixed sort order for ENUM fields -* Fixed bug 1625005: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1634900: pt-upgrade fails with SELECT INTO -* Fixed bug 1635734: pt-slave-restart --config does not recognize = as separator -* Feature 1636068: Added pause to NibbleIterator -* Feature 1638293: --data-dir parameter in order to create the table on a different partition -* Feature 1639052: with pt-table-checksum automatically exclude checking schemas named percona, percona_schema -* Feature 1642364: pt-online-schema-change Added --remove-data-dir feature -* Feature 1643914: Fixed several typos in the doc (Thanks Dario Minnucci) -* Feature 1643940: Add Transparent huge pages info to pt-summary -* Feature 1643941: Add Memory management library to pt-mysql-summary - -v2.2.19 released 2016-08-16 -=========================== - -Percona Toolkit 2.2.19 includes the following changes: - -New Features - -* 1221372: ``pt-online-schema-change`` now aborts with an error if the server is a slave, because this can break data consistency in case of row-based replication. If you are sure that the slave will not use row-based replication, you can disable this check using the ``--force-slave-run`` option. - -* 1485195: ``pt-table-checksum`` now forces replica table character set to UTF-8. - -* 1517155: Added ``--create-table-engine`` option to ``pt-heartbeat``, which can be used to set a storage engine for the ``heartbeat`` table different from the database default engine. - -* 1595678: Added ``--slave-user`` and ``--slave-password`` options to ``pt-online-schema-change`` - -* 1595912: Added ``--slave-user`` and ``--slave-password`` options to ``pt-table-sync`` and ``pt-table-checksum`` - -* 1610385: ``pt-online-schema-change`` now re-checks the list of slaves in the DSN table. This enables changing the contents of the table while the tool is running. - - -Bug fixes - -* 1581752: Fixed ``pt-query-digest`` date and time parsing from MySQL 5.7 slow query log. - -* 1592166: Fixed memory leak when ``pt-kill`` kills a query - -* 1592608: Fixed overflow of ``CONCAT_WS`` when ``pt-table-checksum`` or ``pt-table-sync`` checksums large BLOB, TEXT, or BINARY columns. - -* 1593265: Fixed ``pt-archiver`` deleting rows that were not archived. - -* 1610386: Fixed ``pt-slave-restart`` handling of GTID ranges where the left-side integer is larger than 9 - -* 1610387: Removed extra word 'default' from the ``--verbose`` help for ``pt-slave-restart`` - -* 1610388: Fixed ``pt-table-sync`` not quoting enum values properly. They are now recognized as CHAR fields. - -Changelog ---------- - -* Feature 1610385: Recheck the list of slaves while OSC runs (Thanks Daniël van Eeden & Mikhail Izioumtchenko) -* Fixed bug 1221372: pt-osc should error if server is a slave in row based replication -* Fixed bug 1485195: pt-table-checksum should force replica table charset to utf8 Edit (Thanks Jaime Crespo) -* Fixed bug 1517155: Added --create-table-engine param to pt-heartbeat -* Fixed bug 1581752: SlowLogParser is able to handle dates in RFC339 format for MySQL 5.7 (Thanks Nickolay Ihalainen) -* Fixed bug 1592166: pt-kill leaks memory -* Fixed bug 1592166: pt-kill leaks memory each time it kills a query -* Fixed bug 1592608: Large BLOB/TEXT/BINARY Produces NULL Checksum (Thanks Jervin Real) -* Fixed bug 1593265: Fixed pt-archiver deletes wrong rows #103 (Thanks Tibor Korocz & David Ducos) -* Fixed bug 1595678: Added --slave-user and --slave-password to pt-online-schema-change & pt-table-sync -* Fixed bug 1610386: Handle GTID ranges where the left-side integer is larger than 9 (Thanks @sodabrew) -* Fixed bug 1610387: Remove extra word 'default' from the --verbose help (Thanks @sodabrew) -* Fixed bug 1610388: add enum column type to is_char check so that values are properly quoted (Thanks Daniel Kinon) - -v2.2.18 released 2016-06-24 -=========================== - -Percona Toolkit 2.2.18 has been released. This release includes the following new features and bug fixes. - -New features: - -* 1537416: ``pt-stalk`` now sorts the output of transactions by id - -* 1553340: Added "Shared" memory info to ``pt-summary`` - -* PT-24: Added the ``--no-vertical-format`` option for ``pt-query-digest``, allowing compatibility with non-standard MySQL clients that don't support the ``\G`` directive at the end of a statement - -Bug fixes: - -* 1402776: Fixed error when parsing ``tcpdump`` capture with ``pt-query-digest`` - -* 1521880: Improved ``pt-online-schema-change`` plugin documentation - -* 1547225: Clarified the description of the ``--attribute-value-limit`` option for ``pt-query-digest`` - -* 1569564: Fixed all PERL-based tools to return a zero exit status when run with the ``--version`` option - -* 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the ``-where`` option for ``pt-table-checksum`` - -* 1585412: Fixed the inability of ``pt-query-digest`` to parse the general log generated by MySQL (and Percona Server) 5.7 instance - -* PT-36: Clarified the description of the ``--verbose`` option for ``pt-slave-restart`` - - -Changelog ---------- - -* Feature 1537416 : pt-stalk now sorts the output of transactions by id -* Feature 1553340 : Added "Shared" memory info to pt-summary -* Feature PT-24 : Added the --no-vertical-format option for pt-query-digest, allowing compatibility with non-standard MySQL clients that don't support the \G directive at the end of a statement -* Fixed bug 1402776: Fixed error when parsing tcpdump capture with pt-query-digest -* Fixed bug 1521880: Improved pt-online-schema-change plugin documentation -* Fixed bug 1547225: Clarified the description of the --attribute-value-limit option for pt-query-digest -* Fixed bug 1569564: Fixed all PERL-based tools to return a zero exit status when run with the --version option -* Fixed bug 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the -where option for pt-table-checksum -* Fixed bug 1585412: Fixed the inability of pt-query-digest to parse the general log generated by MySQL (and Percona Server) 5.7 instance -* Fixed bug PT-36 : Clarified the description of the --verbose option for pt-slave-restart - -v2.2.17 released 2016-03-07 -=========================== - -Percona Toolkit 2.2.17 has been released. This release contains 1 new feature and 15 bug fixes. - -New Features: - -* Percona Toolkit 2.2.17 has implemented general compatibility with MySQL 5.7 tools, documentation and test suite - -Bug Fixes: - -* Bug 1523685: ``pt-online-schema-change`` invalid recursion method where comma was interpreted as the separation of two DSN methods has been fixed. - -* Bugs 1480719 and 1536305: The current version of Perl on supported distributions has implemented stricter checks for arguments provided to ``sprintf``. This could cause warnings when ``pt-query-digest`` and ``pt-table-checksum`` were being run. - -* Bug 1498128: ``pt-online-schema-change`` would fail with an error if the table being altered has foreign key constraints where some start with an underscore and some don't. - -* Bug 1336734: ``pt-online-schema-change`` has implemented new ``--null-to-non-null`` flag which can be used to convert ``NULL`` columns to ``NOT NULL``. - -* Bug 1362942: ``pt-slave-restart`` would fail to run on |MariaDB| 10.0.13 due to a different implementation of ``GTID``. - -* Bug 1389041: ``pt-table-checksum`` had a high likelihood to skip a table when row count was around ``chunk-size`` * ``chunk-size-limit``. To address this issue a new ``--slave-skip-tolerance`` option has been implemented. - -* Bug 1506748: ``pt-online-schema-change`` could not set the ``SQL_MODE`` by using the ``--set-vars`` option, preventing some use case schema changes that require it. - -* Bug 1523730: ``pt-show-grants`` didn't sort the column-level privileges. - -* Bug 1526105: ``pt-online-schema-change`` would fail if used with ``--no-drop-old-table`` option after ten times. The issue would arise because there was an accumulation of tables that have already have had their names extended, the code would retry ten times to append an underscore, each time finding an old table with that number of underscores appended. - -* Bug 1529411: ``pt-mysql-summary`` was displaying incorrect information about Fast Server Restarts for Percona Server 5.6. - -* PT-30: ``pt-stalk`` shell ``collect`` module was confusing the new mysql variable ``binlog_error_action`` with the ``log_error`` variable. - -Changelog ---------- - -* Feature : General compatibility with MySQL 5.7 tools, docs and test suite -* Fixed bug 1529411: pt-mysql-summary displays incorrect info about Fast Server Restarts for Percona Server 5.6 -* Fixed bug 1506748: pt-online-schema-change cannot set sql_mode using --set-vars -* Fixed bug 1336734: pt-online-schema-change added --null-to-non-null option to allow NULLable columns to be converted to NOT NULL -* Fixed bug 1498128: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1523685: pt-online-schema Invalid recursion method: t=dsns -* Fixed bug 1526105: pt-online-schema-change fails when using --no-drop-old-table after 10 times -* Fixed bug 1536305: pt-query-digest : Redundant argument in sprintf -* Fixed bug PT-27 : pt-query-digest doc bug with --since and too many colons -* Fixed bug PT-28 : pt-query-digest: Make documentation of --attribute-value-limit option more clear -* Fixed bug 1435370: pt-show-grants fails against MySQL-5.7.6 -* Fixed bug 1523730: pt-show-grants doesn't sort column-level privileges -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug PT-30 : pt-stalk: new var binlog_error_action causes bug in collect module -* Fixed bug 1389041: pt-table-checksum has high likelyhood to skip a table when row count is around chunk-size * chunk-size-limit -* Fixed bug 1480719: pt-table-checksum redundant argument in printf - -v2.2.16 released 2015-11-09 -=========================== - -Percona Toolkit 2.2.16 has been released. This release contains 3 new features and 2 bug fixes. - -New Features: - -* 1491261: When using MySQL 5.6 or later, and ``innodb_stats_persistent`` option is enabled (by default, it is enabled), then ``pt-online-schema-change`` will now run with the ``--analyze-before-swap`` option. This ensures that queries continue to use correct execution path, instead of switching to full table scan, which could cause possible downtime. If you do not want ``pt-online-schema-change`` to run ``ANALYZE`` on new tables before the swap, you can disable this behavior using the ``--no-analyze-before-swap`` option. - -* 1402051: ``pt-online-schema-change`` will now wait forever for slaves to be available and not be lagging. This ensures that the tool does not abort during faults and connection problems on slaves. - -* 1452895: ``pt-archiver`` now issues ‘keepalive’ queries during and after bulk insert/delete process that takes a long time. This keeps the connection alive even if the ``innodb_kill_idle_transaction`` variable is set to a low value. - -Bug Fixes: - -* 1488685: The ``--filter`` option for ``pt-kill`` now works correctly. - -* 1494082: The ``pt-stalk`` tool no longer uses the ``-warn`` option when running ``find``, because the option is not supported on FreeBSD. - -Changelog ---------- - -* Fixed bug 1452895: pt-archiver dies with "MySQL server has gone away" when innodb_kill_idle_transaction set to low value and bulk insert/delete process takes too long time -* Fixed bug 1488685: pt-kill option --filter does not work -* Feature 1402051: pt-online-schema-change should reconnect to slaves -* Fixed bug 1491261: pt-online-schema-change, MySQL 5.6, and InnoDB optimizer stats can cause downtime -* Fixed bug 1494082: pt-stalk find -warn option is not portable -* Feature 1389041: Document that pt-table-checksum has high likelihood to skip a table when row count is around chunk-size * chunk-size-limit - -v2.2.15 released 2015-08-28 -=========================== - -**New Features** - -* Added ``--max-flow-ctl`` option with a value set in percent. When a Percona XtraDB Cluster node is very loaded, it sends flow control signals to the other nodes to stop sending transactions in order to catch up. When the average value of time spent in this state (in percent) exceeds the maximum provided in the option, the tool pauses until it falls below again. - - Default is no flow control checking. - - This feature was requested in the following bugs: 1413101 and 1413137. - -* Added the ``--sleep`` option for ``pt-online-schema-change`` to avoid performance problems. The option accepts float values in seconds. - - This feature was requested in the following bug: 1413140. - -* Implemented ability to specify ``--check-slave-lag`` multiple times. The following example enables lag checks for two slaves: - - .. code-block:: console - - pt-archiver --no-delete --where '1=1' --source h=oltp_server,D=test,t=tbl --dest h=olap_server --check-slave-lag h=slave1 --check-slave-lag h=slave2 --limit 1000 --commit-each - - This feature was requested in the following bug: 14452911. - -* Added the ``--rds`` option to ``pt-kill``, which makes the tool use Amazon RDS procedure calls instead of the standard MySQL ``kill`` command. - - This feature was requested in the following bug: 1470127. - -**Bugs Fixed** - -* 1042727: ``pt-table-checksum`` doesn't reconnect the slave $dbh - - Before, the tool would die if any slave connection was lost. Now the tool waits forever for slaves. - -* 1056507: ``pt-archiver --check-slave-lag`` agressiveness - - The tool now checks replication lag every 100 rows instead of every row, which significantly improves efficiency. - -* 1215587: Adding underscores to constraints when using ``pt-online-schema-change`` can create issues with constraint name length - - Before, multiple schema changes lead to underscores stacking up on the name of the constraint until it reached the 64 character limit. Now there is a limit of two underscores in the prefix, then the tool alternately removes or adds one underscore, attempting to make the name unique. - -* 1277049: ``pt-online-schema-change`` can't connect with comma in password - - For all tools, documented that commas in passwords provided on the command line must be escaped. - -* 1441928: Unlimited chunk size when using ``pt-online-schema-change`` with ``--chunk-size-limit=0`` inhibits checksumming of single-nibble tables - - When comparing table size with the slave table, the tool now ignores ``--chunk-size-limit`` if it is set to zero to avoid multiplying by zero. - -* 1443763: Update documentation and/or implentation of ``pt-archiver --check-interval`` - - Fixed the documentation for ``--check-interval`` to reflect its correct behavior. - -* 1449226: ``pt-archiver`` dies with "MySQL server has gone away" when ``--innodb_kill_idle_transaction`` is set to a low value and ``--check-slave-lag`` is enabled - - The tool now sends a dummy SQL query to avoid timing out. - -* 1446928: ``pt-online-schema-change`` not reporting meaningful errors - - The tool now produces meaningful errors based on text from MySQL errors. - -* 1450499: ReadKeyMini causes ``pt-online-schema-change`` session to lock under some circumstances - - Removed ReadKeyMini, because it is no longer necessary. - -* 1452914: ``--purge`` and ``--no-delete`` are mutually exclusive, but still allowed to be specified together by ``pt-archiver`` - - The tool now issues an error when ``--purge`` and ``--no-delete`` are specified together - -* 1455486: ``pt-mysql-summary`` is missing the ``--ask-pass`` option - - Added the ``--ask-pass`` option to the tool - -* 1457573: ``pt-sift`` fails to download ``pt-diskstats`` ``pt-pmp`` ``pt-mext`` ``pt-align`` - - Added the ``-L`` option to ``curl`` and changed download address to use HTTPS. - -* 1462904: ``pt-duplicate-key-checker`` doesn't support triple quote in column name - - Updated TableParser module to handle literal backticks. - -* 1488600: ``pt-stalk`` doesn't check TokuDB status - - Implemented status collection similar to how it is performed for InnoDB. - -* 1488611: various testing bugs related to newer perl versions - - Fixed test failures related to new Perl versions. - -v2.2.14 released 2015-04-14 -=========================== - -Percona Toolkit 2.2.14 has been released. This release contains two new features and seventeen bug fixes. - -New Features: - -* pt-slave-find can now resolve the IP address and show the slave's hostname. This can be done with the new ``--resolve-address`` option. - -* pt-table-sync can now ignore the tables whose names match specific Perl regex with the ``--ignore-tables-regex`` option. - -Bugs Fixed: - -* Fixed bug 925781: Inserting non-BMP characters into a column with utf8 charset would cause the ``Incorrect string value`` error when running the pt-table-checksum. - -* Fixed bug 1368244: pt-online-schema-change ``--alter-foreign-keys-method=drop-swap`` was not atomic and thus it could be interrupted. Fixed by disabling common interrupt signals during the critical drop-rename phase. - -* Fixed bug 1381280: pt-table-checksum was failing on ``BINARY`` field in Primary Key. Fixed by implementing new ``--binary-index`` flag to optionally create checksum table using BLOB data type. - -* Fixed bug 1421405: Running pt-upgrade against a log with many identical (or similar) queries was producing repeated sections with the same fingerprint. - -* Fixed bug 1402730: pt-duplicate-key-checker was not checking for duplicate keys when ``--verbose`` option was set. - -* Fixed bug 1406390: A race condition was causing pt-heartbeat to crash with sleep argument error. - -* Fixed bug 1417558: pt-stalk when used along with ``--collect-strace`` didn't write the strace output to the expected destination file. - -* Fixed bug 1421025: Missing dependency for ``perl-TermReadKey`` RPM package was causing toolkit commands to fail when they were run with ``--ask-pass`` option. - -* Fixed bug 1421781: pt-upgrade would fail when log contained ``SELECT...INTO`` queries. Fixed by ignoring/skipping those queries. - -* Fixed bug 1425478: pt-stalk was removing non-empty files that were starting with an empty line. - -* Fixed bug 1419098: Fixed bad formatting in the pt-table-checksum documentation. - -Changelog ---------- - -* Fixed bug 1402730 pt-duplicate-key-checker seems useless with MySQL 5.6 -* Fixed bug 1415646 pt-duplicate-key-checker documentation does not explain how Size Duplicate Indexes is calculated -* Fixed bug 1406390 pt-heartbeat crashes with sleep argument error -* Fixed bug 1368244 pt-online-schema-change --alter-foreign-keys-method=drop-swap is not atomic -* FIxed bug 1417864 pt-online-schema-change documentation, the interpretation of --tries create_triggers:5:0.5,drop_triggers:5:0.5 is wrong -* Fixed bug 1404313 pt-query-digest: specifying a file that doesn't exist as log causes the tool to wait for STDIN instead of giving an error -* Feature 1418446 pt-slave-find resolve IP addresses option -* Fixed bug 1417558 pt-stalk with --collect-strace output doesn't go to an YYYY_MM_DD_HH_mm_ss-strace file -* Fixed bug 1425478 pt-stalk removes non-empty files that start with empty line -* Fixed bug 925781 pt-table-checksum checksum error when default-character-set = utf8 -* Fixed bug 1381280 pt-table-checksum fails on BINARY field in PK -* Feature 1439842 pt-table-sync lacks --ignore-tables-regex option -* Fixed bug 1401399 pt-table-sync fails to close one db handle -* Fixed bug 1442277 pt-table-sync-ignores system databases but doc doesn't clarify this -* Fixed bug 1421781 pt-upgrade fails on SELECT ... INTO queries -* Fixed bug 1421405 pt-upgrade fails to aggregate queries based on fingerprint -* Fixed bug 1439348 pt-upgrade erroneously reports number of diffs -* Fixed bug 1421025 rpm missing dependency on perl-TermReadKey for --ask-pass - -v2.2.13 released 2015-01-26 -=========================== - -Percona Toolkit 2.2.13 has been released. This release contains one new feature and twelve bug fixes. - -New Features: - -* pt-kill now supports new ``--query-id`` option. This option can be used to print a query fingerprint hash after killing a query to enable the cross-referencing with the pt-query-digest output. This option can be used along with ``--print`` option as well. - -Bugs Fixed: - -* Fixed bug 1019479: pt-table-checksum now works with ``ONLY_FULL_GROUP_BY`` sql_mode. - -* Fixed bug 1394934: running pt-table-checksum in debug mode would cause an error. - -* Fixed bug 1396868: regression introduced in Percona Toolkit 2.2.12 caused pt-online-schema-change not to honor ``--ask-pass`` option. - -* Fixed bug 1399789: pt-table-checksum would fail to find Percona XtraDB Cluster nodes when variable ``wsrep_node_incoming_address`` was set to ``AUTO``. - -* Fixed bug 1408375: Percona Toolkit was vulnerable to MITM attack which could allow exfiltration of MySQL configuration information via ``--version-check`` option. This vulnerability was logged as `CVE 2015-1027 _` - -* Fixed bug 1321297: pt-table-checksum was reporting differences on timestamp columns with replication from 5.5 to 5.6 server version, although the data was identical. - -* Fixed bug 1388870: pt-table-checksum was showing differences if the master and slave were in different time zone. - -* Fixed bug 1402668: pt-mysql-summary would exit if Percona XtraDB Cluster was in ``Donor/Desynced`` state. - -* Fixed bug 1266869: pt-stalk would fail to start if ``$HOME`` environment variable was not set. - -Changelog ---------- - -* Feature 1391240: pt-kill added query fingerprint hash to output -* Fixed bug 1402668: pt-mysql-summary fails on cluster in Donor/Desynced status -* Fixed bug 1396870: pt-online-schema-change CTRL+C leaves terminal in inconsistent state -* Fixed bug 1396868: pt-online-schema-change --ask-pass option error -* Fixed bug 1266869: pt-stalk fails to start if $HOME environment variable is not set -* Fixed bug 1019479: pt-table-checksum does not work with sql_mode ONLY_FULL_GROUP_BY -* Fixed bug 1394934: pt-table-checksum error in debug mode -* Fixed bug 1321297: pt-table-checksum reports diffs on timestamp columns in 5.5 vs 5.6 -* Fixed bug 1399789: pt-table-checksum fails to find pxc nodes when wsrep_node_incoming_address is set to AUTO -* Fixed bug 1388870: pt-table-checksum has some errors with different time zones -* Fixed bug 1408375: vulnerable to MITM attack which would allow exfiltration of MySQL configuration information via --version-check -* Fixed bug 1404298: missing MySQL5.7 test files for pt-table-checksum -* Fixed bug 1403900: added sandbox and fixed sakila test db for 5.7 - -v2.2.12 released 2014-11-14 -=========================== - -Percona Toolkit 2.2.12 has been released. This release contains one new feature and seven bug fixes. - -New Features: - -* pt-stalk now gathers ``dmesg`` output from up to 60 seconds before the triggering event. - -Bugs Fixed: - -* Fixed bug 1376561: pt-archiver was not able to archive all the rows when a table had a hash partition. Fixed by implementing support for tables which have primary or unique indexes. - -* Fixed bug 1217466: pt-table-checksum would refuses to run on Percona XtraDB Cluster if ``server_id`` was the same on all nodes. Fixed by using the ``wsrep_node_incoming_address`` as a unique identifier for cluster nodes, instead of relying on ``server_id``. - -* Fixed bug 1269695: pt-online-schema-change documentation now contains more information about limitations on why it isn't running ``ALTER TABLE`` for a table which has only a non-unique index. - -* Fixed bug 1328686: Running pt-hearbeat with --check-read-only option would cause an error when running on server with ``read_only`` option. Tool now waits for server ``read_only`` status to be disabled before starting to run. - -* Fixed bug 1373937: pt-table-checksum now supports ``none`` as valid ``--recursion-method`` when using with Percona XtraDB Cluster. - -* Fixed bug 1377888: Documentation was stating that pt-query-digest is able to parse a raw binary log file, while it can only parse a file which was decoded with ``mysqlbinlog`` tool before. Fixed by improving the documentation and adding a check for binary file and providing a relevant error message. - -Changelog ---------- - -* Fixed bug 1376561: pt-archiver is not able to archive all the rows when a table has a hash partition -* Fixed bug 1328686: pt-heartbeat check-read-only option does not prevent creates or inserts -* Fixed bug 1269695: pt-online-schema-change does not allow ALTER for a table without a non-unique, while manual does not explain this -* Fixed bug 1217466: pt-table-checksum refuses to run on PXC if server_id is the same on all nodes -* Fixed bug 1373937: pt-table-checksum requires recursion when working with and XtraDB Cluster node -* Fixed bug 1377888: pt-query-digest manual for --type binlog is ambiguous -* Fixed bug 1349086: pt-stalk should also gather dmesg output -* Fixed bug 1361293: Some scripts fail when no-version-check option is put in global config file - -v2.2.11 released 2014-09-26 -=========================== - -Percona Toolkit 2.2.11 has been released. This release contains seven bug fixes. - -Bugs Fixed: - -* Fixed bug 1262456: pt-query-digest didn't report host details when host was using skip-name-resolve option. Fixed by using the IP of the host instead of it's name, when the hostname is missing. - -* Fixed bug 1264580: pt-mysql-summary was incorrectly parsing key/value pairs in the wsrep_provider_options option, which resulted in incomplete my.cnf information. - -* Fixed bug 1318985: pt-stalk is now using ``SQL_NO_CACHE`` when executing queries for locks and transactions. Previously this could lead to situations where most of the queries that were ``waiting on query cache mutex`` were the pt-stalk queries (INNODB_TRX). - -* Fixed bug 1348679: When using ``-- -p`` option to enter the password for pt-stalk it would ask user to re-enter the password every time tool connects to the server to retrieve the information. New option ``--ask-pass`` has been introduced that can be used to specify the password only once. - -* Fixed bug 1368379: A parsing error caused pt-summary ( specifically the ``report_system_info`` module) to choke on the "Memory Device" parameter named "Configured Clock Speed" when using dmidecode to report memory slot information. - -Changelog ---------- - -* Fixed bug 1262456: pt-query-digest doesn't report host details -* Fixed bug 1264580: pt-mysql-summary incorrectly tries to parse key/value pairs in wsrep_provider_options resulting in incomplete my.cnf information -* Fixed bug 1318985: pt-stalk should use SQL_NO_CACHE -* Fixed bug 1348679: pt-stalk handles mysql user password in awkward way -* Fixed bug 1365085: Various issues with tests -* Fixed bug 1368379: pt-summary problem parsing dmidecode output on some machines -* Fixed bug 1303388: Typo in pt-variable-advisor - -v2.2.10 released 2014-08-06 -=========================== - -Percona Toolkit 2.2.10 has been released. This release contains six bug fixes. - -Bugs Fixed: - -* Fixed bug 1287253: pt-table-checksum would exit with error if it would encounter deadlock when doing checksum. This was fixed by retrying the command in case of deadlock error. - -* Fixed bug 1311654: When used with Percona XtraDB Cluster, pt-table-checksum could show incorrect result if --resume option was used. This was fixed by adding a new ``--replicate-check-retries`` command line parameter. If you are having resume problems you can now set ``--replicate-check-retries`` N , where N is the number of times to retry a discrepant checksum (default = 1 , no retries). Setting a value of ``3`` is enough to completely eliminate spurious differences. - -* Fixed bug 1299387: pt-query-digest didn't work correctly do to a changed logging format when field ``Thread_id`` has been renamed to ``Id``. Fixed by implementing support for the new format. - -* Fixed bug 1340728: in some cases, where the index was of type "hash" , pt-online-schema-change would refuse to run because MySQL reported it would not use an index for the select. This check should have been able to be skipped using --nocheck-plan option, but it wasn't. ``--nocheck-plan`` now ignores the chosen index correctly. - -* Fixed bug 1253872: When running pt-table-checksum or pt-online-schema on a server that is unused, setting the 20% max load would fail due to tools rounding the value down. This has been fixed by rounding the value up. - -* Fixed bug 1340364: Due to incompatibility of dash and bash syntax some shell tools were showing error when queried for version. - -Changelog ---------- - -* Fixed bug 1287253: pt-table-checksum deadlock -* Fixed bug 1299387: 5.6 slow query log Thead_id becomes Id -* Fixed bug 1311654: pt-table-checksum + PXC inconsistent results upon --resume -* Fixed bug 1340728: pt-online-schema-change doesn't work with HASH indexes -* Fixed bug 1253872: pt-table-checksum max load 20% rounds down -* Fixed bug 1340364: some shell tools output error when queried for --version - -v2.2.9 released 2014-07-08 -========================== - -Percona Toolkit 2.2.9 has been released. This release contains five bug fixes. - -Bugs Fixed: - -* Fixed bug 1335960: pt-query-digest could not parse the binlogs from MySQL 5.6 because the binlog format was changed. - -* Fixed bug 1315130: pt-online-schema-change did not find child tables as expected. It could incorrectly locate tables which reference a table with the same name in a different schema and could miss tables referencing the altered table if they were in a different schema. - -* Fixed bug 1335322: pt-stalk would fail when variable or threshold was non-integer. - -* Fixed bug 1258135: pt-deadlock-logger was inserting older deadlocks into the ``deadlock`` table even if it was already there creating unnecessary noise. For example, if the deadlock happened 1 year ago, and MySQL keeps it in the memory and pt-deadlock-logger would ``INSERT`` it into ``percona.deadlocks`` table every minute all the time until server was restarted. This was fixed by comparing with the last deadlock fingerprint before issuing the ``INSERT`` query. - -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none can break FK constraints in a way that is hard to recover from. Allthough this method of handling foreign key constraints is provided so that the database administrator can disable the tool's built-in functionality if desired, a warning and confirmation request when using alter-foreign-keys-method "none" has been added to warn users when using this option. - -Changelog ---------- - -* Fixed bug 1258135: pt-deadlock-logger introduces a noise to MySQL -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none breaks constraints -* Fixed bug 1315130: pt-online-schema-change not properly detecting foreign keys -* Fixed bug 1335960: pt-query-digest cannot parse binlogs from 5.6 -* Fixed bug 1335322: pt-stalk fails when variable or threshold is non-integer - -v2.2.8 released 2014-06-04 -========================== - -Percona Toolkit 2.2.8 has been released. This release has two new features and six bug fixes. - -New Features: - -* pt-agent has been replaced by percona-agent. More information on percona-agent can be found in the `Introducing the 3-Minute MySQL Monitor `_ blogpost. -* pt-slave-restart now supports MySQL 5.6 global transaction IDs. - -* pt-table-checkum now has new --plugin option which is similar to pt-online-schema-change --plugin - -Bugs Fixed: - -* Fixed bug 1254233: pt-mysql-summary was showing blank InnoDB section for 5.6 because it was using ``have_innodb`` variable which was removed in MySQL 5.6. - -* Fixed bug 965553: pt-query-digest didn't fingerprint true/false literals correctly. - -* Fixed bug 1286250: pt-online-schema-change was requesting password twice. - -* Fixed bug 1295667: pt-deadlock-logger was logging incorrect timestamp because tool wasn't aware of the time-zones. - -* Fixed bug 1304062: when multiple tables were specified with pt-table-checksum --ignore-tables, only one of them would be ignored. - -* Fixed bug : pt-show-grant --ask-pass option was asking for password in ``STDOUT`` instead of ``STDERR`` where it could be seen. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Removed pt-agent -* Added pt-slave-restart GTID support -* Added pt-table-checksum --plugin -* Fixed bug 1304062: --ignore-tables does not work correctly -* Fixed bug 1295667: pt-deadlock-logger logs incorrect ts -* Fixed bug 1254233: pt-mysql-summary blank InnoDB section for 5.6 -* Fixed bug 1286250: pt-online-schema-change requests password twice -* Fixed bug 965553: pt-query-digest dosn't fingerprint true/false literals correctly -* Fixed bug 290911: pt-show-grant --ask-pass prints "Enter password" to STDOUT - -v2.2.7 released 2014-02-20 -========================== - -Percona Toolkit 2.2.7 has been released. This release has only one bug fix. - -* Fixed bug 1279502: --version-check behaves like spyware - -Although never used, --version-check had the ability to get any local program's version. This fix removed that ability. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -v2.2.6 released 2013-12-18 -========================== - -Percona Toolkit 2.2.6 has been released. This release has 16 bug fixes and a few new features. One bug fix is very important, so 2.2 users are strongly encouraged to upgrade: - -* Fixed bug 1223458: pt-table-sync deletes child table rows - -Buried in the pt-table-sync docs is this warning: - - Also be careful with tables that have foreign key constraints with C - or C definitions because these might cause unintended changes on the - child tables. - -Until recently, either no one had this problem, or no one reported it, or no one realized that pt-table-sync caused it. In the worst case, pt-table-sync could delete all rows in child tables, which is quite surprising and bad. As of 2.2.6, pt-table-sync has option --[no]check-child-tables which is on by default. In cases were this "bug" can happen, pt-table-sync prints a warning and skips the table. Read the option's docs to learn more. - -Another good bug fix is: - -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes - -After saying "pt-duplicate-key-checker hasn't had a bug in years" at enough conferences, users proved us wrong--thanks! The tool is better now. - -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table - -This was poor feedback from the tool more than a bug. There was a point in the tool where it waited forever for slaves to catch up, but it did this silently. Now the tool reports --progress while it's waiting and it reports which slaves, if any, it found and intends to check. In short: its feedback delivers a better user experience. - -Finally, this bug (more like a feature request/change) might be a backwards-incompatible change: - -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled - -The change is that pt-mysql-summary no longer prompts to dump and summarize schemas. To do this, you must specify --databases or, a new option, --all-databases. Several users said this behavior was better, so we made the change even though some might consider it a backwards-incompatible change. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added pt-query-digest support for Percona Server slow log rate limiting -* Added pt-agent --ping -* Added pt-mysql-summary --all-databases -* Added pt-stalk --sleep-collect -* Added pt-table-sync --[no]check-child-tables -* Fixed bug 1249150: PTDEBUG prints some info to STDOUT -* Fixed bug 1248363: pt-agent requires restart after changing MySQL options -* Fixed bug 1248778: pt-agent --install on PXC is not documented -* Fixed bug 1250973: pt-agent --install doesn't check for previous install -* Fixed bug 1250968: pt-agent --install suggest MySQL user isn't quoted -* Fixed bug 1251004: pt-agent --install error about slave is confusing -* Fixed bug 1251726: pt-agent --uninstall fails if agent is running -* Fixed bug 1248785: pt-agent docs don't list privs required for its MySQL user -* Fixed bug 1215016: pt-deadlock-logger docs use pt-fk-error-logger -* Fixed bug 1201443: pt-duplicate-key-checker error when EXPLAIN key_len=0 -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table -* Fixed bug 1249149: pt-query-digest stats prints to STDOUT instead of STDERR -* Fixed bug 1071979: pt-stak error parsing df with NFS -* Fixed bug 1223458: pt-table-sync deletes child table rows - -v2.2.5 released 2013-10-16 -========================== - -Percona Toolkit 2.2.5 has been released. This release has four new features and a number of bugfixes. - -Query_time histogram has been added to the pt-query-digest JSON output, not the actual chart but the values necessary to render the chart later, so the values for each bucket. - -As of pt-table-checksum 2.2.5, skipped chunks cause a non-zero exit status. An exit status of zero or 32 is equivalent to a zero exit status with skipped chunks in previous versions of the tool. - -New --no-drop-triggers option has been implemented for pt-online-schema-change in case users want to rename the tables manually, when the load is low. - -New --new-table-name option has been added to pt-online-schema-change which can be used to specify the temporary table name. - -* Fixed bug #1199589: pt-archiver would delete the data even with the --dry-run option. - -* Fixed bug #821692: pt-query-digest didn't distill LOAD DATA correctly. - -* Fixed bug #984053: pt-query-digest didn't distill INSERT/REPLACE without INTO correctly. - -* Fixed bug #1206677: pt-agent docs were referencing wrong web address. - -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster would crash if no nodes were found. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added Query_time histogram bucket counts to pt-query-digest JSON output -* Added pt-online-schema-change --[no]drop-triggers option -* Fixed bug #1199589: pt-archiver deletes data despite --dry-run -* Fixed bug #944051: pt-table-checksum has ambiguous exit status -* Fixed bug #1209436: pt-kill --log-dsn may not work on Perl 5.8 -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster crashes if no nodes are found -* Fixed bug #1215608: pt-online-schema-change new table suffix is hard-coded -* Fixed bug #1229861: pt-table-sync quotes float values, can't sync -* Fixed bug #821692: pt-query-digest doesn't distill LOAD DATA correctly -* Fixed bug #984053: pt-query-digest doesn't distill INSERT/REPLACE without INTO correctly -* Fixed bug #1206728: pt-deadlock-logger 2.2 requires DSN on command line -* Fixed bug #1226721: pt-agent on CentOS 5 fails to send data -* Fixed bug #821690: pt-query-digest doesn't distill IF EXISTS correctly -* Fixed bug #1206677: pt-agent docs reference clodu.percona.com - -v2.2.4 released 2013-07-18 -========================== - -Percona Toolkit 2.2.4 has been released. This release two new features and a number of bugfixes. - -pt-query-digest --output json includes query examples as of v2.2.3. Some people might not want this because it exposes real data. New option, --output json-anon, has been implemented. This option will provide the same data without query examples. It's "anonymous" in the sense that there's no identifying data; nothing more than schema and table structs can be inferred from fingerprints. - -When using drop swap with pt-online-schema-change there is some production impact. This impact can be measured because tool outputs the current timestamp on lines for operations that may take awhile. - -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -pt-table-checksum would fail if variable explicit_defaults_for_timestamp was enabled in MySQL 5.6. - -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -Trying to assign 0 to any variable by using --set-vars option would cause “Invalid --set-vars value” message. - -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get - -* Fixed the typo in the pt-online-schema-change code that could lead to a tool crash when copying the rows. - -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -pt-table-checksum was using the first non-unique index instead of the one with the highest cardinality due to a sorting bug. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added pt-query-digest anonymous JSON output -* Added pt-online-schema-change timestamp output -* Fixed bug #1136559: pt-table-checksum: Deep recursion on subroutine "SchemaIterator::_iterate_dbh" -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get -* Fixed bug #1195034: pt-deadlock-logger error: Use of uninitialized value $ts in pattern match (m//) -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -* Fixed bug #1168434: pt-upgrade reports differences on NULL -* Fixed bug #1172317: pt-sift does not work if pt-stalk did not collect due to a full disk -* Fixed bug #1176010: pt-query-digest doesn't group db and `db` together -* Fixed bug #1137556: pt-heartbeat docs don't account for --utc -* Fixed bug #1168106: pt-variable-advisor has the wrong default value for innodb_max_dirty_pages_pct in 5.5 and 5.6 -* Fixed bug #1168110: pt-variable-advisor shows key_buffer_size in 5.6 as unconfigured (even though it is) -* Fixed bug #1171968: pt-query-digest docs don't mention --type=rawlog -* Fixed bug #1174956: pt-query-digest and pt-fingerprint don't strip some multi-line comments - - -v2.2.3 released 2013-06-17 -========================== - -Percona Toolkit 2.2.3 has been released which has only two changes: pt-agent -and a bug fix for pt-online-schema-change. pt-agent is not a command line -tool but a client-side agent for Percona Cloud Tools. Visit -https://cloud.percona.com for more information. The pt-online-schema-change -bug fix is bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): -"Table 'db._t_new' doesn't exist". This happens when the tool's triggers -cannot be dropped. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added new tool: pt-agent -* Fixed bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): Table 'db._t_new' doesn't exist" - -v2.2.2 released 2013-04-24 -========================== - -Percona Toolkit 2.2.2 has been released. This is the second release of -the 2.2 series and aims to fix bugs in the previous release and provide -usability enhacements to the toolkit. - -Users may note the revival of the --show-all option in pt-query-digest. -This had been removed in 2.2.1, but resulted in too much output in -certain cases. - -A new --recursion-method was added to pt-table-checksum: cluster. This -method attempts to auto-discover cluster nodes, alleviating the need to -specify cluster node DSNs in a DSN table (--recursion-method=dsn). - -The following highlights some of the more interesting and "hot" bugs in -this release: - -* Bug #1127450: pt-archiver --bulk-insert may corrupt data - -pt-archiver --bulk-insert didn't work with --charset UTF-8. This revealed -a case where the tool could corrupt data by double-encoding. This is now -fixed, but remains relatively dangerous if using DBD::mysql 3.0007 which -does not handle UTF-8 properly. - -* Bug #1163372: pt-heartbeat --utc --check always returns 0 - -Unfortunately, the relatively new --utc option for pt-heart was still -broken because "[MySQL] interprets date as a value in the current time zone -and converts it to an internal value in UTC." Now the tool works correctly -with --utc by specifying "SET time_zone='+0:00'", and older versions of -the tool can be made to work by specifying --set-vars "time_zone='+0:00'". - -* Bug #821502: Some tools don't have --help or --version - -pt-align, pt-mext, pt-pmp and pt-sift now have both options. - -This is another solid bug fix release, and all users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added --show-all to pt-query-digest -* Added --recursion-method=cluster to pt-table-checksum -* Fixed bug 1127450: pt-archiver --bulk-insert may corrupt data -* Fixed bug 1163372: pt-heartbeat --utc --check always returns 0 -* Fixed bug 1156901: pt-query-digest --processlist reports duplicate queries for replication thread -* Fixed bug 1160338: pt-query-digest 2.2 prints unwanted debug info on tcpdump parsing errors -* Fixed bug 1160918: pt-query-digest 2.2 prints too many string values -* Fixed bug 1156867: pt-stalk prints the wrong variable name in verbose mode when --function is used -* Fixed bug 1081733: pt-stalk plugins can't access the real --prefix -* Fixed bug 1099845: pt-table-checksum pxc same_node function incorrectly uses wsrep_sst_receive_address -* Fixed bug 821502: Some tools don't have --help or --version -* Fixed bug 947893: Some tools use @@hostname without /*!50038*/ -* Fixed bug 1082406: An explicitly set wsrep_node_incoming_address may make SHOW STATUS LIKE 'wsrep_incoming_addresses' return a portless address - -v2.2.1 released 2013-03-14 -========================== - -Percona Toolkit 2.2.1 has been released. This is the first release in -the new 2.2 series which supersedes the 2.1 series and renders the 2.0 -series obsolete. We plan to do one more bug fix release for 2.1 (2.1.10), -but otherwise all new development and fixes and will now focus on 2.2. - -Percona Toolkit 2.2 has been several months in the making, and it turned -out very well, with many more new features, changes, and improvements than -originally anticipated. Here are the highlights: - ----- - -* Official support for MySQL 5.6 - -We started beta support for MySQL 5.6 in 2.1.8 when 5.6 was still beta. -Now that 5.6 is GA, so is our support for it. Check out the Percona Toolkit -supported platforms and versions: -http://www.percona.com/mysql-support/policies/percona-toolkit-supported-platforms-and-versions - -When you upgrade to MySQL 5.6, be sure to upgrade to Percona Toolkit 2.2, too. - -* Official support for Percona XtraDB Cluster (PXC) - -We also started beta support for Percona XtraDB Cluster in 2.1.8, but -now that support is official in 2.2 because we have had many months to -work with PXC and figure out which tools work with it and how. There's -still one noticeable omission: pt-table-sync. It's still unclear if -or how one would sync a cluster that, in theory, doesn't become out-of-sync. -As Percona XtraDB Cluster develops, Percona Toolkit will continue to -evolve to support it. - -* pt-online-schema-change (pt-osc) is much more resilient - -pt-online-schema-change 2.1 has been a great success, and people have been -using it for evermore difficult and challenging tasks. Consequently, we -needed to make it "try harder", even though it already tried pretty hard -to keep working despite recoverable errors and such. Whereas pt-osc 2.1 -only retries certain operations, pt-osc 2.2 retries every critical operation, -and its tries and wait time between tries for all operations are configurable. -Also, we removed --lock-wait-timeout which set innodb_lock_wait_timeout -because that now conflicts, or is at least confused with, lock_wait_timeout -(introduced in MySQL 5.5) for metadata locks. Now --set-vars is used to -set both of these (or any) system variables. For a quick intro to metadata -locks and how they may affect you, see Ovais's article: -http://www.mysqlperformanceblog.com/2013/02/01/implications-of-metadata-locking-changes-in-mysql-5-5/ - -What does this all mean? In short: pt-online-schema-change 2.2 is far more -resilient out of the box. It's also aware of metadata locks now, whereas -2.1 was not really aware of them. And it's highly configurable, so you can -make the tool try _very_ hard to keep working. - -* pt-upgrade is brand-new - -pt-upgrade was written once long ago, thrown into the world, and then never -heard from again... until now. Now that we have four base versions of -MySQL (5.0, 5.1, 5.5, and 5.6), plus at least four major forks (Percona -Server, MariaDB, Percona XtraDB Cluster, and MariaDB Galera Cluster), -upgrades are fashionable, so to speak. Problem is: "original" pt-upgrade -was too noisy and too complex. pt-upgrade 2.2 is far simpler and far -easier to use. It's basically what you expect from such a tool. - -Moreover, it has a really helpful new feature: "reference results", i.e. -saved results from running queries on a server. Granted, this can take -*a lot* of disk space, but it allows you to "run now, compare later." - -If you're thinking about upgrading, give pt-upgrade a try. It also reads -every type of log now (slow, general, binary, and tcpdump), so you shouldn't -have a problem finding queries to run and compare. - -* pt-query-digest is simpler - -pt-query-digest 2.2 has fewer options now. Basically, we re-focused it -on its primary objective: analyzing MySQL query logs. So the ability -to parse memcached, Postgres, Apache, and other logs was removed. We -also removed several options that probably nobody ever used, and -changed/renamed other options to be more logical. The result is a simpler, -more focused tool, i.e. less overwhelming. - -Also, pt-query-digest 2.2 can save results in JSON format (--output=json). -This feature is still in development while we determine the optimal -JSON structure. - -* Version check is on by default - -Way back in 2.1.4, released September/October 2012, we introduced a feature -called "version check" into most tools: http://percona.com/version-check -It's like a lot of software that automatically checks for updates, but -it's also more: it's a free service from Percona that advises when certain -programs (Percona Toolkit tools, MySQL, Perl, etc.) are either out of date -or are known bad versions. For example, there are two versions of the -DBD::mysql Perl module that have problems. And there are certain versions -of MySQL that have critical bugs. Version check will warn you about these -if your system is running them. - -What's new in 2.2 is that, whereas this feature (specifically, the option -in tools: --version-check) was off by default, now it's on by default. -If the IO::Socket::SSL Perl module is installed (easily available through -your package manager), it will use a secure (https) connection over the web, -else it will use a standard (http) connection. - -Check out http://percona.com/version-check for more information. - -* pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player are gone - -We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. -Granted, no tool is ever really gone: if you need one of these tools, -get it from 2.1. pt-log-player is now superseded by Percona Playback -(http://www.percona.com/doc/percona-playback/). pt-query-advisor was -removed so that we can focus our efforts on its online counterpart instead: -https://tools.percona.com/query-advisor. The other tools were special -projects that were not widely used. - -* pt-stalk and pt-mysql-summary have built-in MySQL options - -No more "pt-stalk -- -h db1 -u me". pt-stalk 2.2 and pt-mysql-summary 2.2 -have all the standard MySQL options built-in, like other tools: --user, ---host, --port, --password, --socket, --defaults-file. So now the command -line is what you expect: pt-stalk -h dhb1 -u me. - -* pt-stalk --no-stalk is no longer magical - -Originally, pt-stalk --no-stalk was meant to simulate pt-collect, i.e. -collect once and exit. To do that, the tool magically set some options -and clobbered others, resulting in no way to do repeated collections -at intervals. Now --no-stalk means only that: don't stalk, just collect, -respecting --interval and --iterations as usual. So to collect once -and exit: pt-stalk --no-stalk --iterations 1. - -* pt-fk-error-logger and pt-deadlock-logger are standardized - -Similar to the pt-stalk --no-stalk changes, pt-fk-error-logger and -pt-deadlock-logger received mini overhauls in 2.2 to make their -run-related options (--run-time, --interval, --iterations) standard. -If you hadn't noticed, one tool would run forever by default, while -the other would run once and exit. And each treated their run-related -options a little differently. This magic is gone now: both tools run -forever by default, so specify --iterations or --run-time to limit how -long they run. - ----- - -There were other miscellaneous bug fixes, too. See -https://launchpad.net/percona-toolkit/+milestone/2.2.1 for the full list. - -As the first release in a new series, 2.2 features are not yet finalized. -In other words, we may change things like the pt-query-digest --output json -format in future releases after receiving real-world feedback. - -Percona Toolkit 2.2 is an exciting release with many helpful new -features. Users are encouraged to begin upgrading, particularly given -that, except for the forthcoming 2.1.10 release, no more work will be -done on 2.1 (unless you're a Percona customer with a support contract or -other agreement). - -If you upgrade from 2.1 to 2.2, be sure to re-read tools' documentation -to see what has changed because much as changed for certain tools. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Official support for MySQL 5.6 -* Official support for Percona XtraDB Cluster -* Redesigned pt-query-digest -* Redesigned pt-upgrade -* Redesigned pt-fk-error-logger -* Redesigned pt-deadlock-logger -* Changed --set-vars in all tools -* Renamed --retries to --tries in pt-online-schema-change -* Added --check-read-only to pt-heartbeat -* Added MySQL options to pt-mysql-summary -* Added MySQL options to pt-stalk -* Removed --lock-wait-timeout from pt-online-schema-change (use --set-vars) -* Removed --lock-wait-timeout from pt-table-checksum (use --set-vars) -* Removed pt-query-advisor -* Removed pt-tcp-model -* Removed pt-trend -* Removed pt-log-player -* Enabled --version-check by default in all tools -* Fixed bug 1008796: Several tools don't have --database -* Fixed bug 1087319: Quoter::serialize_list() doesn't handle multiple NULL values -* Fixed bug 1086018: pt-config-diff needs to parse wsrep_provider_options -* Fixed bug 1056838: pt-fk-error-logger --run-time works differently than pt-deadlock-logger --run-time -* Fixed bug 1093016: pt-online-schema-change doesn't retry RENAME TABLE -* Fixed bug 1113301: pt-online-schema-change blocks on metadata locks -* Fixed bug 1125665: pt-stalk --no-stalk silently clobbers other options, acts magically -* Fixed bug 1019648: pt-stalk truncates InnoDB status if there are too many transactions -* Fixed bug 1087804: pt-table-checksum doesn't warn if no slaves are found - -v2.1.9 released 2013-02-14 -========================== - -Percona Toolkit 2.1.9 has been released. This release primarily aims to -restore backwards-compatibility with pt-heartbeat 2.1.7 and older, but it -also has important bug fixes for other tools. - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP - -The previous release switched the time authority from Perl to MySQL, and from -local time to UTC. Unfortunately, these changes caused a loss of precision and, -if mixing versions of pt-heartbeat, made the tool report a huge amount of -replication lag. This release makes the tool compatible with pt-heartbeat -2.1.7 and older again, but the UTC behavior introduced in 2.1.8 is now only -available by specifying the new --utc option. - -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" - -This is an important bug fix for pt-table-sync: certain chunks from -pt-table-checksum resulted in an impossible WHERE, causing the false-positive -"Cannot nibble" error, if those chunks had diffs. - -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB - -MariaDB 5.5.28 (https://kb.askmonty.org/en/mariadb-5528-changelog/) fixed -a bug: "Added warnings for duplicate key errors when using INSERT IGNORE". -However, standard MySQL does not warn in this case, despite the docs saying -that it should. Since pt-online-schema-change has always intended to ignore -duplicate entry errors by using "INSERT IGNORE", it now handles the MariaDB -case by also ignoring duplicate entry errors in the code. - -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns - -pt-online-schema-change 2.1.9 handles another case of changing the primary key. -However, since changing the primary key is tricky, the tool stops if --alter -contains "DROP PRIMARY KEY", and you have to specify --no-check-alter to -acknowledge this case. - -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -Previously, pt-stalk printed a line for every check. Since the tool is -designed to be a long-running daemon, this could result in huge log files -with "matched=no" lines. The tool has a new --verbose option which makes it -quieter by default. - -All users should upgrade, but in particular, users of versions 2.1.7 and -older are strongly recommended to skip 2.1.8 and go directly to 2.1.9. - -Users of pt-heartbeat in 2.1.8 who prefer the UTC behavior should keep in -mind that they will have to use the --utc option after upgrading. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns -* Fixed bug 1115333: pt-pmp doesn't list the origin lib for each function -* Fixed bug 823411: pt-query-digest shouldn't print "Error: none" for tcpdump -* Fixed bug 1103045: pt-query-digest fails to parse non-SQL errors -* Fixed bug 1105077: pt-table-checksum: Confusing error message with binlog_format ROW or MIXED on slave -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -v2.1.8 released 2012-12-21 -========================== - -Percona Toolkit 2.1.8 has been released. This release includes 28 bug fixes, beta support for MySQL 5.6, and extensive support for Percona XtraDB Cluster (PXC). Users intending on running the tools on Percona XtraDB Cluster or MySQL 5.6 should upgrade. The following tools have been verified to work on PXC versions 5.5.28 and newer: - -* pt-table-chcecksum -* pt-online-schema-change -* pt-archive -* pt-mysql-summary -* pt-heartbeat -* pt-variable-advisor -* pt-config-diff -* pt-deadlock-logger - -However, there are limitations when running these tools on PXC; see the Percona XtraDB Cluster section in each tool's documentation for further details. All other tools, with the exception of pt-slave-find, pt-slave-delay and pt-slave-restart, should also work correctly, but in some cases they have not been modified to take advantage of PXC features, so they may behave differently in future releases. - -The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query - -Slow logs which include timestamps but no query--which can happen if using slow_query_log_timestamp_always in Percona Server--were misparsed, resulting in an erroneous report. Now such no-query events show up in reports as ``/* No query */``. - -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" - -The "as" was misparsed and the following word would end up reported as the database; pt-query-digest now handles this correctly. - -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 - -Some renamed variables had caused the Percona Server section to work unreliably. - -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only - -When using --replicate-check-only, filter options like --databases and --tables were not applied. - -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently - -Previously, pt-heartbeat respected the MySQL time zone, but this caused false readings (e.g. very high lag) with slaves running in different time zones. Now pt-heartbeat uses UTC regardless of the server or MySQL time zone. - -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables - -Since MyISAM tables can't have foreign keys, and the tool uses the information_schema to find child tables, this could cause unnecessary load on the server. - -2.1.8 continues the trend of solid bug fix releases, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Beta support for MySQL 5.6 -* Beta support for Percona XtraDB Cluster -* pt-online-schema-change: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-table-checksum: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-upgrade: Added --[no]disable-query-cache -* Fixed bug 927955: Bad pod2rst transformation -* Fixed bug 898665: Bad online docs formatting for --[no]vars -* Fixed bug 1022622: pt-config-diff is case-sensitive -* Fixed bug 1007938: pt-config-diff doesn't handle end-of-line comments -* Fixed bug 917770: pt-config-diff Use of uninitialized value in substitution (s///) at line 1996 -* Fixed bug 1082104: pt-deadlock-logger doesn't handle usernames with dashes -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently -* Fixed bug 1086259: pt-kill --log-dsn timestamp is wrong -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables -* Fixed bug 823431: pt-query-advisor hangs on big queries -* Fixed bug 996069: pt-query-advisor RES.001 is incorrect -* Fixed bug 933465: pt-query-advisor false positive on RES.001 -* Fixed bug 937234: pt-query-advisor issues wrong RES.001 -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" -* Fixed bug 957442: pt-query-digest with custom --group-by throws error -* Fixed bug 887638: pt-query-digest prints negative byte offset -* Fixed bug 831525: pt-query-digest help output mangled -* Fixed bug 932614: pt-slave-restart CHANGE MASTER query causes error -* Fixed bug 1046440: pt-stalk purge_samples slows down checks -* Fixed bug 986847: pt-stalk does not report NFS iostat -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only -* Fixed bug 911385: pt-table-checksum v2 fails when --resume + --ignore-database is used -* Fixed bug 1041391: pt-table-checksum debug statement for "Chosen hash func" prints undef -* Fixed bug 1075638: pt-table-checksum Illegal division by zero at line 7950 -* Fixed bug 1052475: pt-table-checksum uninitialized value in numeric lt (<) at line 8611 -* Fixed bug 1078887: Tools let --set-vars clobber the required SQL mode - -v2.1.7 released 2012-11-19 -========================== - -Percona Toolkit 2.1.7 has been released which is a hotfix for two bugs when using pt-table-checksum with Percona XtraDB Cluster: - -* Bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should upgrade. Otherwise, users can wait until the next full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Fixed bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -v2.1.6 released 2012-11-13 -========================== - -Percona Toolkit 2.1.6 has been released. This release includes 33 bug fixes and three new features: pt-online-schema-change now handles renaming columns without losing data, removing one of the tool's limitations. pt-online-schema-change also got two new options: --default-engine and --statistics. Finally, pt-stalk now has a plugin hook interface, available through the --plugin option. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Bug 978133: pt-query-digest review table privilege checks don't work - -The same checks were removed from pt-table-checksum on 2.1.3 and pt-table-sync on 2.1.4, so this just follows suit. - -* Bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves - -A particularly important fix, as it may stop pt-table-checksum from breaking replication in these setups. - -* Bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag - -If you run multiple instances of pt-table-checksum on a badly lagged server, actually respecting --run-time stops the instances from divebombing the server when the replica catches up. - -* Bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key - -Fixed by choosing a key on the new table for the DELETE trigger. - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -A follow up to the same fix in the previous release, this adds to warnings for cases in which pt-table-checksum may work incorrectly and require some user intervention: One for the case of master -> cluster, and one for cluster1 -> cluster2. - -* Bug 821715: LOAD DATA LOCAL INFILE broken in some platforms - -This bug has hounded the toolkit for quite some time. In some platforms, trying to use LOAD DATA LOCAL INFILE would fail as if the user didn't have enough privileges to perform the operation. This was a misdiagnoses from MySQL; The actual problem was that the libmysqlclient.so provided by some vendors was compiled in a way that disallowed users from using the statement without some extra work. This fix adds an 'L' option to the DSNs the toolkit uses, tells the the tools to explicitly enables LOAD DATA LOCAL INFILE. This affected two pt-archiver and pt-upgrade, so if you are on an effected OS and need to use those, you can simply tag an L=1 to your DSN and everything should start working. - -* Bug 866075: pt-show-grant doesn't support column-level grants - -This was actually the 'hottest' bug in the tracker. - -This is another solid bug fix release, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-online-schema-change: Columns can now be renamed without data loss -* pt-online-schema-change: New --default-engine option -* pt-stalk: Plugin hooks available through the --plugin option to extend the tool's functionality -* Fixed bug 1069951: --version-check default should be explicitly "off" -* Fixed bug 821715: LOAD DATA LOCAL INFILE broken in some platforms -* Fixed bug 995896: Useless use of cat in Daemon.pm -* Fixed bug 1039074: Tools exit 0 on error parsing options, should exit non-zero -* Fixed bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves -* Fixed bug 1009510: pt-table-checksum breaks replication if a slave table is missing or different -* Fixed bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag -* Fixed bug 1073532: pt-table-checksum error: Use of uninitialized value in int at line 2778 -* Fixed bug 1016131: pt-table-checksum can crash with --columns if none match -* Fixed bug 1039569: pt-table-checksum dies if creating the --replicate table fails -* Fixed bug 1059732: pt-table-checksum doesn't test all hash functions -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1043528: pt-deadlock-logger can't parse db/tbl/index on partitioned tables -* Fixed bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key -* Fixed bug 1058285: pt-online-schema-change fails if sql_mode explicitly or implicitly uses ANSI_QUOTES -* Fixed bug 1073996: pt-online-schema-change fails with "I need a max_rows argument" -* Fixed bug 1039541: pt-online-schema-change --quiet doesn't disable --progress -* Fixed bug 1045317: pt-online-schema-change doesn't report how many warnings it suppressed -* Fixed bug 1060774: pt-upgrade fails if select column > 64 chars -* Fixed bug 1070916: pt-mysql-summary may report the wrong cnf file -* Fixed bug 903229: pt-mysql-summary incorrectly categorizes databases -* Fixed bug 866075: pt-show-grant doesn't support column-level grants -* Fixed bug 978133: pt-query-digest review table privilege checks don't work -* Fixed bug 956981: pt-query-digest docs for event attributes link to defunct Maatkit wiki -* Fixed bug 1047335: pt-duplicate-key-checker fails when it encounters a crashed table -* Fixed bug 1047701: pt-stalk deletes non-empty files -* Fixed bug 1070434: pt-stalk --no-stalk and --iterations 1 don't wait for the collect -* Fixed bug 1052722: pt-fifo-split is processing n-1 rows initially -* Fixed bug 1013407: pt-find documentation error with mtime and InnoDB -* Fixed bug 1059757: pt-trend output has no header -* Fixed bug 1063933: pt-visual-explain docs link to missing pdf -* Fixed bug 1075773: pt-fk-error-logger crashes if there's no foreign key error -* Fixed bug 1075775: pt-fk-error-logger --dest table example doesn't work - -v2.1.5 released 2012-10-08 -========================== - -Percona Toolkit 2.1.5 has been released. This release is less than two weeks after the release of 2.1.4 because we wanted to address these bugs quickly: - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -* Bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes - -* Bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL - -The first two bugs fix how pt-table-checksum works with Percona XtraDB Cluster (PXC). Although the 2.1.4 release did introduce support for PXC, these bugs prevented pt-table-checksum from working correctly with a cluster. - -The third bug is also related to a feature new in 2.1.4: --version-check. The feature uses HTTPS/SSL by default, but some modules in pt-table-sync weren't update which could prevent it from working on older systems. Related, the version check web page mentioned in tools' documentation was also created. - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should definitely upgrade. Otherwise, users can wait until 2.1.6 for another full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes -* Fixed bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL -* Fixed bug 1060423: Missing version-check page - -v2.1.4 released 2012-09-20 -========================== - -Percona Toolkit 2.1.4 has been released. This release includes 26 bug fixes and three new features: Making pt-table-checksum work with Percona XtraDB Cluster, adding a --run-time option to pt-table-checksum, and implementing the "Version Check" feature, enabled through the --version-check switch. For further information on --version-check, see http://www.mysqlperformanceblog.com/2012/09/10/introducing-the-version-check-feature-in-percona-toolkit/. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1017626: pt-table-checksum doesn't work with Percona XtraDB Cluster - -Note that this requires Percona XtraDB Cluster 5.5.27-23.6 or newer, as the fix depends on this bug https://bugs.launchpad.net/codership-mysql/+bug/1023911 being resolved. - -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves - -Previously, users had no recourse but using --recursion-method in conjunction with a dsn table to sidestep this bug, so this fix is a huge usability gain. This was caused by the toolkit not copying the -F portion of the main dsn. - -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" - -Which were stopping pt-upgrade from working on a MySQL 4.1 host. - -* Fixed bug 1036747: pt-table-sync priv checks need to be removed - -The same checks were removed in the previous release from pt-table-checksum, so this continues the trend. - -* Fixed bug 1038995: pt-stalk --notify-by-email fails - -This was a bug in our shell option parsing library, and would potentially affect any option starting with 'no'. - -Like 2.1.3, this is another solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-table-checksum: Percona XtraDB Cluster support -* pt-table-checksum: Implemented the standard --run-time option -* Implemented the version-check feature in several tools, enabled with the --version-check option -* Fixed bug 856060: Document gdb dependency -* Fixed bug 1041394: Unquoted arguments to tr break the bash tools -* Fixed bug 1035311: pt-diskstats shows wrong device names -* Fixed bug 1036804: pt-duplicate-key-checker error parsing InnoDB table with no PK or unique keys -* Fixed bug 1022658: pt-online-schema-change dropping FK limitation isn't documented -* Fixed bug 1041372: pt-online-schema-changes fails if db+tbl name exceeds 64 characters -* Fixed bug 1029178: pt-query-digest --type tcpdump memory usage keeps increasing -* Fixed bug 1037211: pt-query-digest won't distill LOCK TABLES in lowercase -* Fixed bug 942114: pt-stalk warns about bad "find" usage -* Fixed bug 1035319: pt-stalk df -h throws away needed details -* Fixed bug 1038995: pt-stalk --notify-by-email fails -* Fixed bug 1038995: pt-stalk does not get all InnoDB lock data -* Fixed bug 952722: pt-summary should show information about Fusion-io cards -* Fixed bug 899415: pt-table-checksum doesn't work if slaves use RBR -* Fixed bug 954588: pt-table-checksum --check-slave-lag docs aren't clear -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves -* Fixed bug 930693: pt-table-sync and text columns with just whitespace -* Fixed bug 1028710: pt-table-sync base_count fails on n = 1000, base = 10 -* Fixed bug 1034717: pt-table-sync division by zero error with varchar primary key -* Fixed bug 1036747: pt-table-sync priv checks need to be removed -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" -* Fixed bug 1035260: sh warnings in pt-summary and pt-mysql-summary -* Fixed bug 1038276: ChangeHandler doesn't quote varchar columns with hex-looking values -* Fixed bug 916925: CentOS 5 yum dependency resolution for perl module is wrong -* Fixed bug 1035950: Percona Toolkit RPM should contain a dependency on perl-Time-HiRes - -v2.1.3 released 2012-08-03 -========================== - -Percona Toolkit 2.1.3 has been released. This release includes 31 bug fixes and one new feature: pt-kill --log-dsn to log information about killed queries to a table. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 - -pt-table-checksum used to check the user's privileges, but the method was not always reliable, and due to http://bugs.mysql.com/bug.php?id=61846 it became quite unreliable on MySQL 5.5. So the privs check was removed altogether, meaning that the tool may fail later if the user's privileges are insufficient. - -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS - -In certain cases where the master and replicas have different schemas and/or tables, pt-table-checksum could break replication because the checksums table did not exist on a replica. - -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns - -Certain distributions of MySQL add extra columns to SHOW PROCESSLIST which caused pt-query-digest --processlist to crash at times. - -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost - -pt-kill is meant to be a long-running daemon, so naturally it's important that it stays connected to MySQL. - -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error - -The combination of these pt-heartbeat options could cause replication to break due to a duplicate key error. - -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 - -This bug was related to how --quiet was handled, and it could happen even if --quiet wasn't given on the command line. - -All in all, this is solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-kill: Implemented --log-dsn to log info about killed queries to a table -* Fixed bug 1016127: Install hint for DBD::mysql is wrong -* Fixed bug 984915: DSNParser does not check success of --set-vars -* Fixed bug 889739: pt-config-diff doesn't diff quoted strings properly -* Fixed bug 969669: pt-duplicate-key-checker --key-types=k doesn't work -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error -* Fixed bug 1028614: pt-index-usage ignores --database -* Fixed bug 940733: pt-ioprofile leaves behind temp directory -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost -* Fixed bug 1016114: pt-online-schema-change docs don't mention default values -* Fixed bug 1020997: pt-online-schema-change fails when table is empty -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 -* Fixed bug 937225: pt-query-advisor OUTER JOIN advice in JOI.003 is confusing -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns -* Fixed bug 924950: pt-query-digest --group-by db may crash profile report -* Fixed bug 1022851: pt-sift error: PREFIX: unbound variable -* Fixed bug 969703: pt-sift defaults to '.' instead of '/var/lib/pt-talk' -* Fixed bug 962330: pt-slave-delay incorrectly computes lag if started when slave is already lagging -* Fixed bug 954990: pt-stalk --nostalk does not work -* Fixed bug 977226: pt-summary doesn't detect LSI RAID control -* Fixed bug 1030031: pt-table-checksum reports wrong number of DIFFS -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS -* Fixed bug 953141: pt-table-checksum ignores its default and explicit --recursion-method -* Fixed bug 1030975: pt-table-sync crashes if sql_mode includes ANSI_QUOTES -* Fixed bug 869005: pt-table-sync should always set REPEATABLE READ -* Fixed bug 903510: pt-tcp-model crashes in --type=requests mode on empty file -* Fixed bug 934310: pt-tcp-model --quantile docs wrong -* Fixed bug 980318: pt-upgrade results truncated if hostnames are long -* Fixed bug 821696: pt-variable-advisor shows too long of a snippet -* Fixed bug 844880: pt-variable-advisor shows binary logging as both enabled and disabled - -v2.1.2 released 2012-06-12 -========================== - -Percona Toolkit 2.1.2 has been released. This is a very important release because it fixes a critical bug in pt-table-sync (bug 1003014) which caused various failures. All users of Percona Toolkit 2.1 should upgrade to this release. There were 47 other bug fixes, several new options, and other changes. The following is a high-level summary of the most important changes. - -In addition to the critical bug fix mentioned above, another important pt-table-sync bug was fixed, bug 1002365: --ignore-* options did not work with --replicate. The --lock-and-rename feature of the tool was also disabled unless running MySQL 5.5 or newer because it did not work reliably in earlier versions of MySQL. - -Several important pt-table-checksum bugs were fixed. First, a bug caused the tool to ignore the primary key. Second, the tool did not wait for the checksum table to replicate, so it could select from a nonexistent table on a replica and crash. Third, it did not check if all checksum queries were safe and chunk index with more than 3 columns could cause MySQL to scan many more rows than expected. - -pt-online-schema-change received many improvements and fixes: it did not retry deadlocks, but now it does; --no-swap-tables caused an error; it did not handle column renames; it did not allow disabling foreign key checks; --dry-run always failed on tables with foreign keys; it used different keys for chunking and triggers; etc. In short: pt-online-schema-change 2.1.2 is superior to 2.1.1. - -Two pt-archiver bugs were fixed: bug 979092, --sleep conflicts with bulk operations; and bug 903379, --file doesn't create a file. - ---recursion-method=none was implemented in pt-heartbeat, pt-online-schema-change, pt-slave-find, pt-slave-restart, pt-table-checksum, and pt-table-sync. This allows these tools to avoid executing SHOW SLAVE STATUS which requires a privilege not available to Amazon RDS users. - -Other bugs were fixed in pt-stalk, pt-variable-advisor, pt-duplicate-key-checker, pt-diskstats, pt-query-digest, pt-sift, pt-kill, pt-summary, and pt-deadlock-logger. - -Percona Toolkit 2.1.2 should be backwards-compatible with 2.1.1, so users are strongly encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-heartbeat: Implemented --recursion-method=none -* pt-index-usage: MySQL 5.5 compatibility fixes -* pt-log-player: MySQL 5.5 compatibility fixes -* pt-online-schema-change: Added --chunk-index-columns -* pt-online-schema-change: Added --[no]check-plan -* pt-online-schema-change: Added --[no]drop-new-table -* pt-online-schema-change: Implemented --recursion-method=none -* pt-query-advisor: Added --report-type for JSON output -* pt-query-digest: Removed --[no]zero-bool -* pt-slave-delay: Added --database -* pt-slave-find: Implemented --recursion-method=none -* pt-slave-restart: Implemented --recursion-method=none -* pt-table-checksum: Added --chunk-index-columns -* pt-table-checksum: Added --[no]check-plan -* pt-table-checksum: Implemented --recursion-method=none -* pt-table-sync: Disabled --lock-and-rename except for MySQL 5.5 and newer -* pt-table-sync: Implemented --recursion-method=none -* Fixed bug 945079: Shell tools TMPDIR may break -* Fixed bug 912902: Some shell tools still use basename -* Fixed bug 987694: There is no --recursion-method=none option -* Fixed bug 886077: Passwords with commas don't work, expose part of password -* Fixed bug 856024: Lintian warnings when building percona-toolkit Debian package -* Fixed bug 903379: pt-archiver --file doesn't create a file -* Fixed bug 979092: pt-archiver --sleep conflicts with bulk operations -* Fixed bug 903443: pt-deadlock-logger crashes on MySQL 5.5 -* Fixed bug 941064: pt-deadlock-logger can't clear deadlocks on 5.5 -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 994176: pt-diskstats --group-by=all --headers=scroll prints a header for every sample -* Fixed bug 894140: pt-duplicate-key-checker sometimes recreates a key it shouldn't -* Fixed bug 923896: pt-kill: uninitialized value causes script to exit -* Fixed bug 1003003: pt-online-schema-change uses different keys for chunking and triggers -* Fixed bug 1003315: pt-online-schema-change --dry-run always fails on table with foreign keys -* Fixed bug 1004551: pt-online-schema-change --no-swap-tables causes error -* Fixed bug 976108: pt-online-schema-change doesn't allow to disable foreign key checks -* Fixed bug 976109: pt-online-schema-change doesn't handle column renames -* Fixed bug 988036: pt-online-schema-change causes deadlocks under heavy write load -* Fixed bug 989227: pt-online-schema-change crashes with PTDEBUG -* Fixed bug 994002: pt-online-schema-change 2.1.1 doesn't choose the PRIMARY KEY -* Fixed bug 994010: pt-online-schema-change 2.1.1 crashes without InnoDB -* Fixed bug 996915: pt-online-schema-change crashes with invalid --max-load and --critical-load -* Fixed bug 998831: pt-online-schema-change -- Should have an option to NOT drop tables on failure -* Fixed bug 1002448: pt-online-schema-change: typo for finding usable indexes -* Fixed bug 885382: pt-query-digest --embedded-attributes doesn't check cardinality -* Fixed bug 888114: pt-query-digest report crashes with infinite loop -* Fixed bug 949630: pt-query-digest mentions a Subversion repository -* Fixed bug 844034: pt-show-grants --separate fails with proxy user -* Fixed bug 946707: pt-sift loses STDIN after pt-diskstats -* Fixed bug 994947: pt-stalk doesn't reset cycles_true after collection -* Fixed bug 986151: pt-stalk-has mktemp error -* Fixed bug 993436: pt-summary Memory: Total reports M instead of G -* Fixed bug 1008778: pt-table-checksum doesn't wait for checksum table to replicate -* Fixed bug 1010232: pt-table-checksum doesn't check the size of checksum chunks -* Fixed bug 1011738: pt-table-checksum SKIPPED is zero but chunks were skipped -* Fixed bug 919499: pt-table-checksum fails with binary log error in mysql >= 5.5.18 -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 978432: pt-table-checksum ignoring primary key -* Fixed bug 995274: pt-table-checksum can't use an undefined value as an ARRAY reference at line 2206 -* Fixed bug 996110: pt-table-checksum crashes if InnoDB is disabled -* Fixed bug 987393: pt-table-checksum: Empy tables cause "undefined value as an ARRAY" errors -* Fixed bug 1002365: pt-table-sync --ignore-* options don't work with --replicate -* Fixed bug 1003014: pt-table-sync --replicate and --sync-to-master error "index does not exist" -* Fixed bug 823403: pt-table-sync --lock-and-rename doesn't work on 5.1 -* Fixed bug 898138: pt-variable-advisor doesn't recognize 5.5.3+ concurrent_insert values - -v2.1.1 released 2012-04-03 -========================== - -Percona Toolkit 2.1.1 has been released. This is the first release in the -new 2.1 series which supersedes the 2.0 series. We will continue to fix bugs -in 2.0, but 2.1 is now the focus of development. - -2.1 introduces a lot of new code for: - -* pt-online-schema-change (completely redesigned) -* pt-mysql-summary (completely redesigned) -* pt-summary (completely redesigned) -* pt-fingerprint (new tool) -* pt-table-usage (new tool) - -There were also several bug fixes. - -The redesigned tools are meant to replace their 2.0 counterparts because -the 2.1 versions have the same or more functionality and they are simpler -and more reliable. pt-online-schema-change was particularly enhanced to -be as safe as possible given that the tool is inherently risky. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Completely redesigned pt-online-schema-change -* Completely redesigned pt-mysql-summary -* Completely redesigned pt-summary -* Added new tool: pt-table-usage -* Added new tool: pt-fingerprint -* Fixed bug 955860: pt-stalk doesn't run vmstat, iostat, and mpstat for --run-time -* Fixed bug 960513: SHOW TABLE STATUS is used needlessly -* Fixed bug 969726: pt-online-schema-change loses foreign keys -* Fixed bug 846028: pt-online-schema-change does not show progress until completed -* Fixed bug 898695: pt-online-schema-change add useless ORDER BY -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 963225: pt-query-digest fails to set history columns for disk tmp tables and disk filesort -* Fixed bug 967451: Char chunking doesn't quote column name -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 896553: Various documentation spelling fixes -* Fixed bug 949154: pt-variable-advisor advice for relay-log-space-limit -* Fixed bug 953461: pt-upgrade manual broken 'output' section -* Fixed bug 949653: pt-table-checksum docs don't mention risks posed by inconsistent schemas - -v2.0.4 released 2012-03-07 -========================== - -Percona Toolkit 2.0.4 has been released. 23 bugs were fixed in this release, -and three new features were implemented. First, --filter was added to pt-kill -which allows for arbitrary --group-by. Second, pt-online-schema-change now -requires that its new --execute option be given, else the tool will just check -the tables and exit. This is a safeguard to encourage users to read the -documentation, particularly when replication is involved. Third, pt-stalk -also received a new option: --[no]stalk. To collect immediately without -stalking, specify --no-stalk and the tool will collect once and exit. - -This release is completely backwards compatible with previous 2.0 releases. -Given the number of bug fixes, it's worth upgrading to 2.0.4. - -Changelog ---------- - -* Added --filter to pt-kill to allow arbitrary --group-by -* Added --[no]stalk to pt-stalk (bug 932331) -* Added --execute to pt-online-schema-change (bug 933232) -* Fixed bug 873598: pt-online-schema-change doesn't like reserved words in column names -* Fixed bug 928966: pt-pmp still uses insecure /tmp -* Fixed bug 933232: pt-online-schema-change can break replication -* Fixed bug 941225: Use of qw(...) as parentheses is deprecated at pt-kill line 3511 -* Fixed bug 821694: pt-query-digest doesn't recognize hex InnoDB txn IDs -* Fixed bug 894255: pt-kill shouldn't check if STDIN is a tty when --daemonize is given -* Fixed bug 916999: pt-table-checksum error: DBD::mysql::st execute failed: called with 2 bind variables when 6 are needed -* Fixed bug 926598: DBD::mysql bug causes pt-upgrade to use wrong precision (M) and scale (D) -* Fixed bug 928226: pt-diskstats illegal division by zero -* Fixed bug 928415: Typo in pt-stalk doc: --trigger should be --function -* Fixed bug 930317: pt-archiver doc refers to nonexistent pt-query-profiler -* Fixed bug 930533: pt-sift looking for ``*-processlist1;`` broken compatibility with pt-stalk -* Fixed bug 932331: pt-stalk cannot collect without stalking -* Fixed bug 932442: pt-table-checksum error when column name has two spaces -* Fixed bug 932883: File Debian bug after each release -* Fixed bug 940503: pt-stalk disk space checks wrong on 32bit platforms -* Fixed bug 944420: --daemonize doesn't always close STDIN -* Fixed bug 945834: pt-sift invokes pt-diskstats with deprecated argument -* Fixed bug 945836: pt-sift prints awk error if there are no stack traces to aggregate -* Fixed bug 945842: pt-sift generates wrong state sum during processlist analysis -* Fixed bug 946438: pt-query-digest should print a better message when an unsupported log format is specified -* Fixed bug 946776: pt-table-checksum ignores --lock-wait-timeout -* Fixed bug 940440: Bad grammar in pt-kill docs - -v2.0.3 released 2012-02-03 -========================== - -Percona Toolkit 2.0.3 has been released. The development team was very -busy last month making this release significant: two completely -redesigned and improved tools, pt-diskstats and pt-stalk, and 20 bug fixes. - -Both pt-diskstats and pt-stalk were redesigned and rewritten from the ground -up. This allowed us to greatly improve these tools' functionality and -increase testing for them. The accuracy and output of pt-diskstats was -enhanced, and the tool was rewritten in Perl. pt-collect was removed and -its functionality was put into a new, enhanced pt-stalk. pt-stalk is now -designed to be a stable, long-running daemon on a variety of common platforms. -It is worth re-reading the documentation for each of these tools. - -The 20 bug fixes cover a wide range of problems. The most important are -fixes to pt-table-checksum, pt-iostats, and pt-kill. Apart from pt-diskstats, -pt-stalk, and pt-collect (which was removed), no other tools were changed -in backwards-incompatible ways, so it is worth reviewing the full changelog -for this release and upgrading if you use any tools which had bug fixes. - -Thank you to the many people who reported bugs and submitted patches. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-diskstats -* Completely redesigned pt-stalk -* Removed pt-collect and put its functionality in pt-stalk -* Fixed bug 871438: Bash tools are insecure -* Fixed bug 897758: Failed to prepare TableSyncChunk plugin: Use of uninitialized value $args{"chunk_range"} in lc at pt-table-sync line 3055 -* Fixed bug 919819: pt-kill --execute-command creates zombies -* Fixed bug 925778: pt-ioprofile doesn't run without a file -* Fixed bug 925477: pt-ioprofile docs refer to pt-iostats -* Fixed bug 857091: pt-sift downloads http://percona.com/get/pt-pmp, which does not work -* Fixed bug 857104: pt-sift tries to invoke mext, should be pt-mext -* Fixed bug 872699: pt-diskstats: rd_avkb & wr_avkb derived incorrectly -* Fixed bug 897029: pt-diskstats computes wrong values for md0 -* Fixed bug 882918: pt-stalk spams warning if oprofile isn't installed -* Fixed bug 884504: pt-stalk doesn't check pt-collect -* Fixed bug 897483: pt-online-schema-change "uninitialized value" due to update-foreign-keys-method -* Fixed bug 925007: pt-online-schema-change Use of uninitialized value $tables{"old_table"} in concatenation (.) or string at line 4330 -* Fixed bug 915598: pt-config-diff ignores --ask-pass option -* Fixed bug 919352: pt-table-checksum changes binlog_format even if already set to statement -* Fixed bug 921700: pt-table-checksum doesn't add --where to chunk size test on replicas -* Fixed bug 921802: pt-table-checksum does not recognize --recursion-method=processlist -* Fixed bug 925855: pt-table-checksum index check is case-sensitive -* Fixed bug 821709: pt-show-grants --revoke and --separate don't work together -* Fixed bug 918247: Some tools use VALUE instead of VALUES - -v2.0.2 released 2012-01-05 -========================== - -Percona Toolkit 2.0.2 fixes one critical bug: pt-table-sync --replicate -did not work with character values, causing an "Unknown column" error. -If using Percona Toolkit 2.0.1, you should upgrade to 2.0.2. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Fixed bug 911996: pt-table-sync --replicate causes "Unknown column" error - -v2.0.1 released 2011-12-30 -========================== - -The Percona Toolkit development team is proud to announce a new major version: -2.0. Beginning with Percona Toolkit 2.0, we are overhauling, redesigning, and -improving the major tools. 2.0 tools are therefore not backwards compatible -with 1.0 tools, which we still support but will not continue to develop. - -New in Percona Toolkit 2.0.1 is a completely redesigned pt-table-checksum. -The original pt-table-checksum 1.0 was rather complex, but it worked well -for many years. By contrast, the new pt-table-checksum 2.0 is much simpler but -also much more efficient and reliable. We spent months rethinking, redesigning, -and testing every aspect of the tool. The three most significant changes: -pt-table-checksum 2.0 does only --replicate, it has only one chunking algorithm, -and its memory usage is stable even with hundreds of thousands of tables and -trillions of rows. The tool is now dedicated to verifying MySQL replication -integrity, nothing else, which it does extremely well. - -In Percona Toolkit 2.0.1 we also fixed various small bugs and forked ioprofile -and align (as pt-ioprofile and pt-align) from Aspersa. - -If you still need functionalities in the original pt-table-checksum, -the latest Percona Toolkit 1.0 release remains available for download. -Otherwise, all new development in Percona Toolkit will happen in 2.0. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-table-checksum -* Fixed bug 856065: pt-trend does not work -* Fixed bug 887688: Prepared statements crash pt-query-digest -* Fixed bug 888286: align not part of percona-toolkit -* Fixed bug 897961: ptc 2.0 replicate-check error does not include hostname -* Fixed bug 898318: ptc 2.0 --resume with --tables does not always work -* Fixed bug 903513: MKDEBUG should be PTDEBUG -* Fixed bug 908256: Percona Toolkit should include pt-ioprofile -* Fixed bug 821717: pt-tcp-model --type=requests crashes -* Fixed bug 844038: pt-online-schema-change documentation example w/drop-tmp-table does not work -* Fixed bug 864205: Remove the query to reset @crc from pt-table-checksum -* Fixed bug 898663: Typo in pt-log-player documentation - -v1.0.1 released 2011-09-01 -========================== - -Percona Toolkit 1.0.1 has been released. In July, Baron announced planned -changes to Maatkit and Aspersa development;[1] Percona Toolkit is the -result. In brief, Percona Toolkit is the combined fork of Maatkit and -Aspersa, so although the toolkit is new, the programs are not. That means -Percona Toolkit 1.0.1 is mature, stable, and production-ready. In fact, -it's even a little more stable because we fixed a few bugs in this release. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Although Maatkit and Aspersa development use Google Code, Percona Toolkit -uses Launchpad: https://launchpad.net/percona-toolkit - -[1] http://www.xaprb.com/blog/2011/07/06/planned-change-in-maatkit-aspersa-development/ - -Changelog ---------- - -* Fixed bug 819421: MasterSlave::is_replication_thread() doesn't match all -* Fixed bug 821673: pt-table-checksum doesn't include --where in min max queries -* Fixed bug 821688: pt-table-checksum SELECT MIN MAX for char chunking is wrong -* Fixed bug 838211: pt-collect: line 24: [: : integer expression expected -* Fixed bug 838248: pt-collect creates a "5.1" file - -v0.9.5 released 2011-08-04 -========================== - -Percona Toolkit 0.9.5 represents the completed transition from Maatkit and Aspersa. There are no bug fixes or new features, but some features have been removed (like --save-results from pt-query-digest). This release is the starting point for the 1.0 series where new development will happen, and no more changes will be made to the 0.9 series. - -Changelog ---------- - -* Forked, combined, and rebranded Maatkit and Aspersa as Percona Toolkit. - -Changelog ---------- - -* Fixed bug 1279502: --version-check behaves like spyware - -Changelog ---------- - -* Fixed bug 1402776: Improved fix (protocol parser fix): error when parsing tcpdump capture with pt-query-digest -* Fixed bug 1632522: pt-osc: Fails with duplicate key in table for self-referencing (Thanks Amiel Marqeta) -* Fixed bug 1654668: pt-summary exists with an error (Thanks Marcelo Altmann) -* New tool : pt-mongodb-summary -* New tool : pt-mongodb-query-digest - -Percona Toolkit 3.0.0 RC includes the following changes: - -New Features - -* Added ``pt-mongodb-summary`` tool - -* Added ``pt-mongodb-query-profiler`` tool - -Bug fixes - -* 1402776: Updated ``MySQLProtocolParser`` to fix error when parsing ``tcpdump`` capture with ``pt-query-digest`` - -* 1632522: Fixed failure of ``pt-online-schema-change`` when altering a table with a self-referencing foreign key (Thanks Marcelo Altmann) - -* 1654668: Fixed failure of ``pt-summary`` on Red Hat and derivatives (Thanks Marcelo Altmann) - - -v2.2.20 released 2016-12-09 -=========================== - -Percona Toolkit 2.2.20 includes the following changes: - -New Features - -* 1636068: New ``--pause-file`` option has been implemented for ``pt-online-schema-change``. When used ``pt-online-schema-change`` will pause while the specified file exists. - -* 1638293 and 1642364: ``pt-online-schema-change`` now supports adding and removing the ``DATA DIRECTORY`` to a new table with the ``--data-dir`` and ``--remove-data-dir`` options. - -* 1642994: Following schemas/tables have been added to the default ignore list: ``mysql.gtid_execution``, ``sys.sys_config``, ``mysql.proc``, ``mysql.inventory``, ``mysql.plugin``, ``percona.*`` (including checksums, dsns table), ``test.*``, and ``percona_schema.*``. - -* 1643940: ``pt-summary`` now provides information about Transparent huge pages. - -* 1604834: New ``--preserve-embedded-numbers`` option has been implemented for ``pt-query-digest`` which can be used to preserve numbers in database/table names when fingerprinting queries. - -Bug Fixes - -* 1613915: ``pt-online-schema-change`` could miss the data due to the way ENUM values are sorted. - -* 1625005: ``pt-online-schema-change`` didn't apply underscores to foreign keys individually. - -* 1566556: ``pt-show-grants`` didn't work correctly with *MariaDB* 10 (*Daniël van Eeden*). - -* 1634900: ``pt-upgrade`` would fail when log contained ``SELECT...INTO`` queries. - -* 1639052: ``pt-table-checksum`` now automatically excludes checking schemas named ``percona`` and ``percona_schema`` which aren't consistent across the replication hierarchy. - -* 1635734: ``pt-slave-restart --config`` did not recognize ``=`` as a separator. - -* 1362942: ``pt-slave-restart`` would fail on *MariaDB* 10.0.13. - -Changelog ---------- - -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug 1566556: pt-show-grants fails against MariaDB10+ -* Feature 1604834: pt-query-digest numbers in table or column names converted to question marks (--preserve-embedded-numbers) -* Fixed bug 1613915: pt-online-schema-change misses data. Fixed sort order for ENUM fields -* Fixed bug 1625005: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1634900: pt-upgrade fails with SELECT INTO -* Fixed bug 1635734: pt-slave-restart --config does not recognize = as separator -* Feature 1636068: Added pause to NibbleIterator -* Feature 1638293: --data-dir parameter in order to create the table on a different partition -* Feature 1639052: with pt-table-checksum automatically exclude checking schemas named percona, percona_schema -* Feature 1642364: pt-online-schema-change Added --remove-data-dir feature -* Feature 1643914: Fixed several typos in the doc (Thanks Dario Minnucci) -* Feature 1643940: Add Transparent huge pages info to pt-summary -* Feature 1643941: Add Memory management library to pt-mysql-summary - -v2.2.19 released 2016-08-16 -=========================== - -Percona Toolkit 2.2.19 includes the following changes: - -New Features - -* 1221372: ``pt-online-schema-change`` now aborts with an error if the server is a slave, because this can break data consistency in case of row-based replication. If you are sure that the slave will not use row-based replication, you can disable this check using the ``--force-slave-run`` option. - -* 1485195: ``pt-table-checksum`` now forces replica table character set to UTF-8. - -* 1517155: Added ``--create-table-engine`` option to ``pt-heartbeat``, which can be used to set a storage engine for the ``heartbeat`` table different from the database default engine. - -* 1595678: Added ``--slave-user`` and ``--slave-password`` options to ``pt-online-schema-change`` - -* 1595912: Added ``--slave-user`` and ``--slave-password`` options to ``pt-table-sync`` and ``pt-table-checksum`` - -* 1610385: ``pt-online-schema-change`` now re-checks the list of slaves in the DSN table. This enables changing the contents of the table while the tool is running. - - -Bug fixes - -* 1581752: Fixed ``pt-query-digest`` date and time parsing from MySQL 5.7 slow query log. - -* 1592166: Fixed memory leak when ``pt-kill`` kills a query - -* 1592608: Fixed overflow of ``CONCAT_WS`` when ``pt-table-checksum`` or ``pt-table-sync`` checksums large BLOB, TEXT, or BINARY columns. - -* 1593265: Fixed ``pt-archiver`` deleting rows that were not archived. - -* 1610386: Fixed ``pt-slave-restart`` handling of GTID ranges where the left-side integer is larger than 9 - -* 1610387: Removed extra word 'default' from the ``--verbose`` help for ``pt-slave-restart`` - -* 1610388: Fixed ``pt-table-sync`` not quoting enum values properly. They are now recognized as CHAR fields. - -Changelog ---------- - -* Feature 1610385: Recheck the list of slaves while OSC runs (Thanks Daniël van Eeden & Mikhail Izioumtchenko) -* Fixed bug 1221372: pt-osc should error if server is a slave in row based replication -* Fixed bug 1485195: pt-table-checksum should force replica table charset to utf8 Edit (Thanks Jaime Crespo) -* Fixed bug 1517155: Added --create-table-engine param to pt-heartbeat -* Fixed bug 1581752: SlowLogParser is able to handle dates in RFC339 format for MySQL 5.7 (Thanks Nickolay Ihalainen) -* Fixed bug 1592166: pt-kill leaks memory -* Fixed bug 1592166: pt-kill leaks memory each time it kills a query -* Fixed bug 1592608: Large BLOB/TEXT/BINARY Produces NULL Checksum (Thanks Jervin Real) -* Fixed bug 1593265: Fixed pt-archiver deletes wrong rows #103 (Thanks Tibor Korocz & David Ducos) -* Fixed bug 1595678: Added --slave-user and --slave-password to pt-online-schema-change & pt-table-sync -* Fixed bug 1610386: Handle GTID ranges where the left-side integer is larger than 9 (Thanks @sodabrew) -* Fixed bug 1610387: Remove extra word 'default' from the --verbose help (Thanks @sodabrew) -* Fixed bug 1610388: add enum column type to is_char check so that values are properly quoted (Thanks Daniel Kinon) - -v2.2.18 released 2016-06-24 -=========================== - -Percona Toolkit 2.2.18 has been released. This release includes the following new features and bug fixes. - -New features: - -* 1537416: ``pt-stalk`` now sorts the output of transactions by id - -* 1553340: Added "Shared" memory info to ``pt-summary`` - -* PT-24: Added the ``--no-vertical-format`` option for ``pt-query-digest``, allowing compatibility with non-standard MySQL clients that don't support the ``\G`` directive at the end of a statement - -Bug fixes: - -* 1402776: Fixed error when parsing ``tcpdump`` capture with ``pt-query-digest`` - -* 1521880: Improved ``pt-online-schema-change`` plugin documentation - -* 1547225: Clarified the description of the ``--attribute-value-limit`` option for ``pt-query-digest`` - -* 1569564: Fixed all PERL-based tools to return a zero exit status when run with the ``--version`` option - -* 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the ``-where`` option for ``pt-table-checksum`` - -* 1585412: Fixed the inability of ``pt-query-digest`` to parse the general log generated by MySQL (and Percona Server) 5.7 instance - -* PT-36: Clarified the description of the ``--verbose`` option for ``pt-slave-restart`` - - -Changelog ---------- - -* Feature 1537416 : pt-stalk now sorts the output of transactions by id -* Feature 1553340 : Added "Shared" memory info to pt-summary -* Feature PT-24 : Added the --no-vertical-format option for pt-query-digest, allowing compatibility with non-standard MySQL clients that don't support the \G directive at the end of a statement -* Fixed bug 1402776: Fixed error when parsing tcpdump capture with pt-query-digest -* Fixed bug 1521880: Improved pt-online-schema-change plugin documentation -* Fixed bug 1547225: Clarified the description of the --attribute-value-limit option for pt-query-digest -* Fixed bug 1569564: Fixed all PERL-based tools to return a zero exit status when run with the --version option -* Fixed bug 1576036: Fixed error that sometimes prevented to choose the primary key as index, when using the -where option for pt-table-checksum -* Fixed bug 1585412: Fixed the inability of pt-query-digest to parse the general log generated by MySQL (and Percona Server) 5.7 instance -* Fixed bug PT-36 : Clarified the description of the --verbose option for pt-slave-restart - -v2.2.17 released 2016-03-07 -=========================== - -Percona Toolkit 2.2.17 has been released. This release contains 1 new feature and 15 bug fixes. - -New Features: - -* Percona Toolkit 2.2.17 has implemented general compatibility with MySQL 5.7 tools, documentation and test suite - -Bug Fixes: - -* Bug 1523685: ``pt-online-schema-change`` invalid recursion method where comma was interpreted as the separation of two DSN methods has been fixed. - -* Bugs 1480719 and 1536305: The current version of Perl on supported distributions has implemented stricter checks for arguments provided to ``sprintf``. This could cause warnings when ``pt-query-digest`` and ``pt-table-checksum`` were being run. - -* Bug 1498128: ``pt-online-schema-change`` would fail with an error if the table being altered has foreign key constraints where some start with an underscore and some don't. - -* Bug 1336734: ``pt-online-schema-change`` has implemented new ``--null-to-non-null`` flag which can be used to convert ``NULL`` columns to ``NOT NULL``. - -* Bug 1362942: ``pt-slave-restart`` would fail to run on |MariaDB| 10.0.13 due to a different implementation of ``GTID``. - -* Bug 1389041: ``pt-table-checksum`` had a high likelihood to skip a table when row count was around ``chunk-size`` * ``chunk-size-limit``. To address this issue a new ``--slave-skip-tolerance`` option has been implemented. - -* Bug 1506748: ``pt-online-schema-change`` could not set the ``SQL_MODE`` by using the ``--set-vars`` option, preventing some use case schema changes that require it. - -* Bug 1523730: ``pt-show-grants`` didn't sort the column-level privileges. - -* Bug 1526105: ``pt-online-schema-change`` would fail if used with ``--no-drop-old-table`` option after ten times. The issue would arise because there was an accumulation of tables that have already have had their names extended, the code would retry ten times to append an underscore, each time finding an old table with that number of underscores appended. - -* Bug 1529411: ``pt-mysql-summary`` was displaying incorrect information about Fast Server Restarts for Percona Server 5.6. - -* PT-30: ``pt-stalk`` shell ``collect`` module was confusing the new mysql variable ``binlog_error_action`` with the ``log_error`` variable. - -Changelog ---------- - -* Feature : General compatibility with MySQL 5.7 tools, docs and test suite -* Fixed bug 1529411: pt-mysql-summary displays incorrect info about Fast Server Restarts for Percona Server 5.6 -* Fixed bug 1506748: pt-online-schema-change cannot set sql_mode using --set-vars -* Fixed bug 1336734: pt-online-schema-change added --null-to-non-null option to allow NULLable columns to be converted to NOT NULL -* Fixed bug 1498128: pt-online-schema-change doesn't apply underscores to foreign keys individually -* Fixed bug 1523685: pt-online-schema Invalid recursion method: t=dsns -* Fixed bug 1526105: pt-online-schema-change fails when using --no-drop-old-table after 10 times -* Fixed bug 1536305: pt-query-digest : Redundant argument in sprintf -* Fixed bug PT-27 : pt-query-digest doc bug with --since and too many colons -* Fixed bug PT-28 : pt-query-digest: Make documentation of --attribute-value-limit option more clear -* Fixed bug 1435370: pt-show-grants fails against MySQL-5.7.6 -* Fixed bug 1523730: pt-show-grants doesn't sort column-level privileges -* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion) -* Fixed bug PT-30 : pt-stalk: new var binlog_error_action causes bug in collect module -* Fixed bug 1389041: pt-table-checksum has high likelyhood to skip a table when row count is around chunk-size * chunk-size-limit -* Fixed bug 1480719: pt-table-checksum redundant argument in printf - -v2.2.16 released 2015-11-09 -=========================== - -Percona Toolkit 2.2.16 has been released. This release contains 3 new features and 2 bug fixes. - -New Features: - -* 1491261: When using MySQL 5.6 or later, and ``innodb_stats_persistent`` option is enabled (by default, it is enabled), then ``pt-online-schema-change`` will now run with the ``--analyze-before-swap`` option. This ensures that queries continue to use correct execution path, instead of switching to full table scan, which could cause possible downtime. If you do not want ``pt-online-schema-change`` to run ``ANALYZE`` on new tables before the swap, you can disable this behavior using the ``--no-analyze-before-swap`` option. - -* 1402051: ``pt-online-schema-change`` will now wait forever for slaves to be available and not be lagging. This ensures that the tool does not abort during faults and connection problems on slaves. - -* 1452895: ``pt-archiver`` now issues ‘keepalive’ queries during and after bulk insert/delete process that takes a long time. This keeps the connection alive even if the ``innodb_kill_idle_transaction`` variable is set to a low value. - -Bug Fixes: - -* 1488685: The ``--filter`` option for ``pt-kill`` now works correctly. - -* 1494082: The ``pt-stalk`` tool no longer uses the ``-warn`` option when running ``find``, because the option is not supported on FreeBSD. - -Changelog ---------- - -* Fixed bug 1452895: pt-archiver dies with "MySQL server has gone away" when innodb_kill_idle_transaction set to low value and bulk insert/delete process takes too long time -* Fixed bug 1488685: pt-kill option --filter does not work -* Feature 1402051: pt-online-schema-change should reconnect to slaves -* Fixed bug 1491261: pt-online-schema-change, MySQL 5.6, and InnoDB optimizer stats can cause downtime -* Fixed bug 1494082: pt-stalk find -warn option is not portable -* Feature 1389041: Document that pt-table-checksum has high likelihood to skip a table when row count is around chunk-size * chunk-size-limit - -v2.2.15 released 2015-08-28 -=========================== - -**New Features** - -* Added ``--max-flow-ctl`` option with a value set in percent. When a Percona XtraDB Cluster node is very loaded, it sends flow control signals to the other nodes to stop sending transactions in order to catch up. When the average value of time spent in this state (in percent) exceeds the maximum provided in the option, the tool pauses until it falls below again. - - Default is no flow control checking. - - This feature was requested in the following bugs: 1413101 and 1413137. - -* Added the ``--sleep`` option for ``pt-online-schema-change`` to avoid performance problems. The option accepts float values in seconds. - - This feature was requested in the following bug: 1413140. - -* Implemented ability to specify ``--check-slave-lag`` multiple times. The following example enables lag checks for two slaves: - - .. code-block:: console - - pt-archiver --no-delete --where '1=1' --source h=oltp_server,D=test,t=tbl --dest h=olap_server --check-slave-lag h=slave1 --check-slave-lag h=slave2 --limit 1000 --commit-each - - This feature was requested in the following bug: 14452911. - -* Added the ``--rds`` option to ``pt-kill``, which makes the tool use Amazon RDS procedure calls instead of the standard MySQL ``kill`` command. - - This feature was requested in the following bug: 1470127. - -**Bugs Fixed** - -* 1042727: ``pt-table-checksum`` doesn't reconnect the slave $dbh - - Before, the tool would die if any slave connection was lost. Now the tool waits forever for slaves. - -* 1056507: ``pt-archiver --check-slave-lag`` agressiveness - - The tool now checks replication lag every 100 rows instead of every row, which significantly improves efficiency. - -* 1215587: Adding underscores to constraints when using ``pt-online-schema-change`` can create issues with constraint name length - - Before, multiple schema changes lead to underscores stacking up on the name of the constraint until it reached the 64 character limit. Now there is a limit of two underscores in the prefix, then the tool alternately removes or adds one underscore, attempting to make the name unique. - -* 1277049: ``pt-online-schema-change`` can't connect with comma in password - - For all tools, documented that commas in passwords provided on the command line must be escaped. - -* 1441928: Unlimited chunk size when using ``pt-online-schema-change`` with ``--chunk-size-limit=0`` inhibits checksumming of single-nibble tables - - When comparing table size with the slave table, the tool now ignores ``--chunk-size-limit`` if it is set to zero to avoid multiplying by zero. - -* 1443763: Update documentation and/or implentation of ``pt-archiver --check-interval`` - - Fixed the documentation for ``--check-interval`` to reflect its correct behavior. - -* 1449226: ``pt-archiver`` dies with "MySQL server has gone away" when ``--innodb_kill_idle_transaction`` is set to a low value and ``--check-slave-lag`` is enabled - - The tool now sends a dummy SQL query to avoid timing out. - -* 1446928: ``pt-online-schema-change`` not reporting meaningful errors - - The tool now produces meaningful errors based on text from MySQL errors. - -* 1450499: ReadKeyMini causes ``pt-online-schema-change`` session to lock under some circumstances - - Removed ReadKeyMini, because it is no longer necessary. - -* 1452914: ``--purge`` and ``--no-delete`` are mutually exclusive, but still allowed to be specified together by ``pt-archiver`` - - The tool now issues an error when ``--purge`` and ``--no-delete`` are specified together - -* 1455486: ``pt-mysql-summary`` is missing the ``--ask-pass`` option - - Added the ``--ask-pass`` option to the tool - -* 1457573: ``pt-sift`` fails to download ``pt-diskstats`` ``pt-pmp`` ``pt-mext`` ``pt-align`` - - Added the ``-L`` option to ``curl`` and changed download address to use HTTPS. - -* 1462904: ``pt-duplicate-key-checker`` doesn't support triple quote in column name - - Updated TableParser module to handle literal backticks. - -* 1488600: ``pt-stalk`` doesn't check TokuDB status - - Implemented status collection similar to how it is performed for InnoDB. - -* 1488611: various testing bugs related to newer perl versions - - Fixed test failures related to new Perl versions. - -v2.2.14 released 2015-04-14 -=========================== - -Percona Toolkit 2.2.14 has been released. This release contains two new features and seventeen bug fixes. - -New Features: - -* pt-slave-find can now resolve the IP address and show the slave's hostname. This can be done with the new ``--resolve-address`` option. - -* pt-table-sync can now ignore the tables whose names match specific Perl regex with the ``--ignore-tables-regex`` option. - -Bugs Fixed: - -* Fixed bug 925781: Inserting non-BMP characters into a column with utf8 charset would cause the ``Incorrect string value`` error when running the pt-table-checksum. - -* Fixed bug 1368244: pt-online-schema-change ``--alter-foreign-keys-method=drop-swap`` was not atomic and thus it could be interrupted. Fixed by disabling common interrupt signals during the critical drop-rename phase. - -* Fixed bug 1381280: pt-table-checksum was failing on ``BINARY`` field in Primary Key. Fixed by implementing new ``--binary-index`` flag to optionally create checksum table using BLOB data type. - -* Fixed bug 1421405: Running pt-upgrade against a log with many identical (or similar) queries was producing repeated sections with the same fingerprint. - -* Fixed bug 1402730: pt-duplicate-key-checker was not checking for duplicate keys when ``--verbose`` option was set. - -* Fixed bug 1406390: A race condition was causing pt-heartbeat to crash with sleep argument error. - -* Fixed bug 1417558: pt-stalk when used along with ``--collect-strace`` didn't write the strace output to the expected destination file. - -* Fixed bug 1421025: Missing dependency for ``perl-TermReadKey`` RPM package was causing toolkit commands to fail when they were run with ``--ask-pass`` option. - -* Fixed bug 1421781: pt-upgrade would fail when log contained ``SELECT...INTO`` queries. Fixed by ignoring/skipping those queries. - -* Fixed bug 1425478: pt-stalk was removing non-empty files that were starting with an empty line. - -* Fixed bug 1419098: Fixed bad formatting in the pt-table-checksum documentation. - -Changelog ---------- - -* Fixed bug 1402730 pt-duplicate-key-checker seems useless with MySQL 5.6 -* Fixed bug 1415646 pt-duplicate-key-checker documentation does not explain how Size Duplicate Indexes is calculated -* Fixed bug 1406390 pt-heartbeat crashes with sleep argument error -* Fixed bug 1368244 pt-online-schema-change --alter-foreign-keys-method=drop-swap is not atomic -* FIxed bug 1417864 pt-online-schema-change documentation, the interpretation of --tries create_triggers:5:0.5,drop_triggers:5:0.5 is wrong -* Fixed bug 1404313 pt-query-digest: specifying a file that doesn't exist as log causes the tool to wait for STDIN instead of giving an error -* Feature 1418446 pt-slave-find resolve IP addresses option -* Fixed bug 1417558 pt-stalk with --collect-strace output doesn't go to an YYYY_MM_DD_HH_mm_ss-strace file -* Fixed bug 1425478 pt-stalk removes non-empty files that start with empty line -* Fixed bug 925781 pt-table-checksum checksum error when default-character-set = utf8 -* Fixed bug 1381280 pt-table-checksum fails on BINARY field in PK -* Feature 1439842 pt-table-sync lacks --ignore-tables-regex option -* Fixed bug 1401399 pt-table-sync fails to close one db handle -* Fixed bug 1442277 pt-table-sync-ignores system databases but doc doesn't clarify this -* Fixed bug 1421781 pt-upgrade fails on SELECT ... INTO queries -* Fixed bug 1421405 pt-upgrade fails to aggregate queries based on fingerprint -* Fixed bug 1439348 pt-upgrade erroneously reports number of diffs -* Fixed bug 1421025 rpm missing dependency on perl-TermReadKey for --ask-pass - -v2.2.13 released 2015-01-26 -=========================== - -Percona Toolkit 2.2.13 has been released. This release contains one new feature and twelve bug fixes. - -New Features: - -* pt-kill now supports new ``--query-id`` option. This option can be used to print a query fingerprint hash after killing a query to enable the cross-referencing with the pt-query-digest output. This option can be used along with ``--print`` option as well. - -Bugs Fixed: - -* Fixed bug 1019479: pt-table-checksum now works with ``ONLY_FULL_GROUP_BY`` sql_mode. - -* Fixed bug 1394934: running pt-table-checksum in debug mode would cause an error. - -* Fixed bug 1396868: regression introduced in Percona Toolkit 2.2.12 caused pt-online-schema-change not to honor ``--ask-pass`` option. - -* Fixed bug 1399789: pt-table-checksum would fail to find Percona XtraDB Cluster nodes when variable ``wsrep_node_incoming_address`` was set to ``AUTO``. - -* Fixed bug 1408375: Percona Toolkit was vulnerable to MITM attack which could allow exfiltration of MySQL configuration information via ``--version-check`` option. This vulnerability was logged as `CVE 2015-1027 _` - -* Fixed bug 1321297: pt-table-checksum was reporting differences on timestamp columns with replication from 5.5 to 5.6 server version, although the data was identical. - -* Fixed bug 1388870: pt-table-checksum was showing differences if the master and slave were in different time zone. - -* Fixed bug 1402668: pt-mysql-summary would exit if Percona XtraDB Cluster was in ``Donor/Desynced`` state. - -* Fixed bug 1266869: pt-stalk would fail to start if ``$HOME`` environment variable was not set. - -Changelog ---------- - -* Feature 1391240: pt-kill added query fingerprint hash to output -* Fixed bug 1402668: pt-mysql-summary fails on cluster in Donor/Desynced status -* Fixed bug 1396870: pt-online-schema-change CTRL+C leaves terminal in inconsistent state -* Fixed bug 1396868: pt-online-schema-change --ask-pass option error -* Fixed bug 1266869: pt-stalk fails to start if $HOME environment variable is not set -* Fixed bug 1019479: pt-table-checksum does not work with sql_mode ONLY_FULL_GROUP_BY -* Fixed bug 1394934: pt-table-checksum error in debug mode -* Fixed bug 1321297: pt-table-checksum reports diffs on timestamp columns in 5.5 vs 5.6 -* Fixed bug 1399789: pt-table-checksum fails to find pxc nodes when wsrep_node_incoming_address is set to AUTO -* Fixed bug 1388870: pt-table-checksum has some errors with different time zones -* Fixed bug 1408375: vulnerable to MITM attack which would allow exfiltration of MySQL configuration information via --version-check -* Fixed bug 1404298: missing MySQL5.7 test files for pt-table-checksum -* Fixed bug 1403900: added sandbox and fixed sakila test db for 5.7 - -v2.2.12 released 2014-11-14 -=========================== - -Percona Toolkit 2.2.12 has been released. This release contains one new feature and seven bug fixes. - -New Features: - -* pt-stalk now gathers ``dmesg`` output from up to 60 seconds before the triggering event. - -Bugs Fixed: - -* Fixed bug 1376561: pt-archiver was not able to archive all the rows when a table had a hash partition. Fixed by implementing support for tables which have primary or unique indexes. - -* Fixed bug 1217466: pt-table-checksum would refuses to run on Percona XtraDB Cluster if ``server_id`` was the same on all nodes. Fixed by using the ``wsrep_node_incoming_address`` as a unique identifier for cluster nodes, instead of relying on ``server_id``. - -* Fixed bug 1269695: pt-online-schema-change documentation now contains more information about limitations on why it isn't running ``ALTER TABLE`` for a table which has only a non-unique index. - -* Fixed bug 1328686: Running pt-hearbeat with --check-read-only option would cause an error when running on server with ``read_only`` option. Tool now waits for server ``read_only`` status to be disabled before starting to run. - -* Fixed bug 1373937: pt-table-checksum now supports ``none`` as valid ``--recursion-method`` when using with Percona XtraDB Cluster. - -* Fixed bug 1377888: Documentation was stating that pt-query-digest is able to parse a raw binary log file, while it can only parse a file which was decoded with ``mysqlbinlog`` tool before. Fixed by improving the documentation and adding a check for binary file and providing a relevant error message. - -Changelog ---------- - -* Fixed bug 1376561: pt-archiver is not able to archive all the rows when a table has a hash partition -* Fixed bug 1328686: pt-heartbeat check-read-only option does not prevent creates or inserts -* Fixed bug 1269695: pt-online-schema-change does not allow ALTER for a table without a non-unique, while manual does not explain this -* Fixed bug 1217466: pt-table-checksum refuses to run on PXC if server_id is the same on all nodes -* Fixed bug 1373937: pt-table-checksum requires recursion when working with and XtraDB Cluster node -* Fixed bug 1377888: pt-query-digest manual for --type binlog is ambiguous -* Fixed bug 1349086: pt-stalk should also gather dmesg output -* Fixed bug 1361293: Some scripts fail when no-version-check option is put in global config file - -v2.2.11 released 2014-09-26 -=========================== - -Percona Toolkit 2.2.11 has been released. This release contains seven bug fixes. - -Bugs Fixed: - -* Fixed bug 1262456: pt-query-digest didn't report host details when host was using skip-name-resolve option. Fixed by using the IP of the host instead of it's name, when the hostname is missing. - -* Fixed bug 1264580: pt-mysql-summary was incorrectly parsing key/value pairs in the wsrep_provider_options option, which resulted in incomplete my.cnf information. - -* Fixed bug 1318985: pt-stalk is now using ``SQL_NO_CACHE`` when executing queries for locks and transactions. Previously this could lead to situations where most of the queries that were ``waiting on query cache mutex`` were the pt-stalk queries (INNODB_TRX). - -* Fixed bug 1348679: When using ``-- -p`` option to enter the password for pt-stalk it would ask user to re-enter the password every time tool connects to the server to retrieve the information. New option ``--ask-pass`` has been introduced that can be used to specify the password only once. - -* Fixed bug 1368379: A parsing error caused pt-summary ( specifically the ``report_system_info`` module) to choke on the "Memory Device" parameter named "Configured Clock Speed" when using dmidecode to report memory slot information. - -Changelog ---------- - -* Fixed bug 1262456: pt-query-digest doesn't report host details -* Fixed bug 1264580: pt-mysql-summary incorrectly tries to parse key/value pairs in wsrep_provider_options resulting in incomplete my.cnf information -* Fixed bug 1318985: pt-stalk should use SQL_NO_CACHE -* Fixed bug 1348679: pt-stalk handles mysql user password in awkward way -* Fixed bug 1365085: Various issues with tests -* Fixed bug 1368379: pt-summary problem parsing dmidecode output on some machines -* Fixed bug 1303388: Typo in pt-variable-advisor - -v2.2.10 released 2014-08-06 -=========================== - -Percona Toolkit 2.2.10 has been released. This release contains six bug fixes. - -Bugs Fixed: - -* Fixed bug 1287253: pt-table-checksum would exit with error if it would encounter deadlock when doing checksum. This was fixed by retrying the command in case of deadlock error. - -* Fixed bug 1311654: When used with Percona XtraDB Cluster, pt-table-checksum could show incorrect result if --resume option was used. This was fixed by adding a new ``--replicate-check-retries`` command line parameter. If you are having resume problems you can now set ``--replicate-check-retries`` N , where N is the number of times to retry a discrepant checksum (default = 1 , no retries). Setting a value of ``3`` is enough to completely eliminate spurious differences. - -* Fixed bug 1299387: pt-query-digest didn't work correctly do to a changed logging format when field ``Thread_id`` has been renamed to ``Id``. Fixed by implementing support for the new format. - -* Fixed bug 1340728: in some cases, where the index was of type "hash" , pt-online-schema-change would refuse to run because MySQL reported it would not use an index for the select. This check should have been able to be skipped using --nocheck-plan option, but it wasn't. ``--nocheck-plan`` now ignores the chosen index correctly. - -* Fixed bug 1253872: When running pt-table-checksum or pt-online-schema on a server that is unused, setting the 20% max load would fail due to tools rounding the value down. This has been fixed by rounding the value up. - -* Fixed bug 1340364: Due to incompatibility of dash and bash syntax some shell tools were showing error when queried for version. - -Changelog ---------- - -* Fixed bug 1287253: pt-table-checksum deadlock -* Fixed bug 1299387: 5.6 slow query log Thead_id becomes Id -* Fixed bug 1311654: pt-table-checksum + PXC inconsistent results upon --resume -* Fixed bug 1340728: pt-online-schema-change doesn't work with HASH indexes -* Fixed bug 1253872: pt-table-checksum max load 20% rounds down -* Fixed bug 1340364: some shell tools output error when queried for --version - -v2.2.9 released 2014-07-08 -========================== - -Percona Toolkit 2.2.9 has been released. This release contains five bug fixes. - -Bugs Fixed: - -* Fixed bug 1335960: pt-query-digest could not parse the binlogs from MySQL 5.6 because the binlog format was changed. - -* Fixed bug 1315130: pt-online-schema-change did not find child tables as expected. It could incorrectly locate tables which reference a table with the same name in a different schema and could miss tables referencing the altered table if they were in a different schema. - -* Fixed bug 1335322: pt-stalk would fail when variable or threshold was non-integer. - -* Fixed bug 1258135: pt-deadlock-logger was inserting older deadlocks into the ``deadlock`` table even if it was already there creating unnecessary noise. For example, if the deadlock happened 1 year ago, and MySQL keeps it in the memory and pt-deadlock-logger would ``INSERT`` it into ``percona.deadlocks`` table every minute all the time until server was restarted. This was fixed by comparing with the last deadlock fingerprint before issuing the ``INSERT`` query. - -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none can break FK constraints in a way that is hard to recover from. Allthough this method of handling foreign key constraints is provided so that the database administrator can disable the tool's built-in functionality if desired, a warning and confirmation request when using alter-foreign-keys-method "none" has been added to warn users when using this option. - -Changelog ---------- - -* Fixed bug 1258135: pt-deadlock-logger introduces a noise to MySQL -* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none breaks constraints -* Fixed bug 1315130: pt-online-schema-change not properly detecting foreign keys -* Fixed bug 1335960: pt-query-digest cannot parse binlogs from 5.6 -* Fixed bug 1335322: pt-stalk fails when variable or threshold is non-integer - -v2.2.8 released 2014-06-04 -========================== - -Percona Toolkit 2.2.8 has been released. This release has two new features and six bug fixes. - -New Features: - -* pt-agent has been replaced by percona-agent. More information on percona-agent can be found in the `Introducing the 3-Minute MySQL Monitor `_ blogpost. -* pt-slave-restart now supports MySQL 5.6 global transaction IDs. - -* pt-table-checkum now has new --plugin option which is similar to pt-online-schema-change --plugin - -Bugs Fixed: - -* Fixed bug 1254233: pt-mysql-summary was showing blank InnoDB section for 5.6 because it was using ``have_innodb`` variable which was removed in MySQL 5.6. - -* Fixed bug 965553: pt-query-digest didn't fingerprint true/false literals correctly. - -* Fixed bug 1286250: pt-online-schema-change was requesting password twice. - -* Fixed bug 1295667: pt-deadlock-logger was logging incorrect timestamp because tool wasn't aware of the time-zones. - -* Fixed bug 1304062: when multiple tables were specified with pt-table-checksum --ignore-tables, only one of them would be ignored. - -* Fixed bug : pt-show-grant --ask-pass option was asking for password in ``STDOUT`` instead of ``STDERR`` where it could be seen. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Removed pt-agent -* Added pt-slave-restart GTID support -* Added pt-table-checksum --plugin -* Fixed bug 1304062: --ignore-tables does not work correctly -* Fixed bug 1295667: pt-deadlock-logger logs incorrect ts -* Fixed bug 1254233: pt-mysql-summary blank InnoDB section for 5.6 -* Fixed bug 1286250: pt-online-schema-change requests password twice -* Fixed bug 965553: pt-query-digest dosn't fingerprint true/false literals correctly -* Fixed bug 290911: pt-show-grant --ask-pass prints "Enter password" to STDOUT - -v2.2.7 released 2014-02-20 -========================== - -Percona Toolkit 2.2.7 has been released. This release has only one bug fix. - -* Fixed bug 1279502: --version-check behaves like spyware - -Although never used, --version-check had the ability to get any local program's version. This fix removed that ability. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -v2.2.6 released 2013-12-18 -========================== - -Percona Toolkit 2.2.6 has been released. This release has 16 bug fixes and a few new features. One bug fix is very important, so 2.2 users are strongly encouraged to upgrade: - -* Fixed bug 1223458: pt-table-sync deletes child table rows - -Buried in the pt-table-sync docs is this warning: - - Also be careful with tables that have foreign key constraints with C - or C definitions because these might cause unintended changes on the - child tables. - -Until recently, either no one had this problem, or no one reported it, or no one realized that pt-table-sync caused it. In the worst case, pt-table-sync could delete all rows in child tables, which is quite surprising and bad. As of 2.2.6, pt-table-sync has option --[no]check-child-tables which is on by default. In cases were this "bug" can happen, pt-table-sync prints a warning and skips the table. Read the option's docs to learn more. - -Another good bug fix is: - -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes - -After saying "pt-duplicate-key-checker hasn't had a bug in years" at enough conferences, users proved us wrong--thanks! The tool is better now. - -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table - -This was poor feedback from the tool more than a bug. There was a point in the tool where it waited forever for slaves to catch up, but it did this silently. Now the tool reports --progress while it's waiting and it reports which slaves, if any, it found and intends to check. In short: its feedback delivers a better user experience. - -Finally, this bug (more like a feature request/change) might be a backwards-incompatible change: - -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled - -The change is that pt-mysql-summary no longer prompts to dump and summarize schemas. To do this, you must specify --databases or, a new option, --all-databases. Several users said this behavior was better, so we made the change even though some might consider it a backwards-incompatible change. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added pt-query-digest support for Percona Server slow log rate limiting -* Added pt-agent --ping -* Added pt-mysql-summary --all-databases -* Added pt-stalk --sleep-collect -* Added pt-table-sync --[no]check-child-tables -* Fixed bug 1249150: PTDEBUG prints some info to STDOUT -* Fixed bug 1248363: pt-agent requires restart after changing MySQL options -* Fixed bug 1248778: pt-agent --install on PXC is not documented -* Fixed bug 1250973: pt-agent --install doesn't check for previous install -* Fixed bug 1250968: pt-agent --install suggest MySQL user isn't quoted -* Fixed bug 1251004: pt-agent --install error about slave is confusing -* Fixed bug 1251726: pt-agent --uninstall fails if agent is running -* Fixed bug 1248785: pt-agent docs don't list privs required for its MySQL user -* Fixed bug 1215016: pt-deadlock-logger docs use pt-fk-error-logger -* Fixed bug 1201443: pt-duplicate-key-checker error when EXPLAIN key_len=0 -* Fixed bug 1217013: pt-duplicate-key-checker misses exact duplicate unique indexes -* Fixed bug 1214685: pt-mysql-summary schema dump prompt can't be disabled -* Fixed bug 1195628: pt-online-schema-change gets stuck looking for its own _new table -* Fixed bug 1249149: pt-query-digest stats prints to STDOUT instead of STDERR -* Fixed bug 1071979: pt-stak error parsing df with NFS -* Fixed bug 1223458: pt-table-sync deletes child table rows - -v2.2.5 released 2013-10-16 -========================== - -Percona Toolkit 2.2.5 has been released. This release has four new features and a number of bugfixes. - -Query_time histogram has been added to the pt-query-digest JSON output, not the actual chart but the values necessary to render the chart later, so the values for each bucket. - -As of pt-table-checksum 2.2.5, skipped chunks cause a non-zero exit status. An exit status of zero or 32 is equivalent to a zero exit status with skipped chunks in previous versions of the tool. - -New --no-drop-triggers option has been implemented for pt-online-schema-change in case users want to rename the tables manually, when the load is low. - -New --new-table-name option has been added to pt-online-schema-change which can be used to specify the temporary table name. - -* Fixed bug #1199589: pt-archiver would delete the data even with the --dry-run option. - -* Fixed bug #821692: pt-query-digest didn't distill LOAD DATA correctly. - -* Fixed bug #984053: pt-query-digest didn't distill INSERT/REPLACE without INTO correctly. - -* Fixed bug #1206677: pt-agent docs were referencing wrong web address. - -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster would crash if no nodes were found. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added Query_time histogram bucket counts to pt-query-digest JSON output -* Added pt-online-schema-change --[no]drop-triggers option -* Fixed bug #1199589: pt-archiver deletes data despite --dry-run -* Fixed bug #944051: pt-table-checksum has ambiguous exit status -* Fixed bug #1209436: pt-kill --log-dsn may not work on Perl 5.8 -* Fixed bug #1210537: pt-table-checksum --recursion-method=cluster crashes if no nodes are found -* Fixed bug #1215608: pt-online-schema-change new table suffix is hard-coded -* Fixed bug #1229861: pt-table-sync quotes float values, can't sync -* Fixed bug #821692: pt-query-digest doesn't distill LOAD DATA correctly -* Fixed bug #984053: pt-query-digest doesn't distill INSERT/REPLACE without INTO correctly -* Fixed bug #1206728: pt-deadlock-logger 2.2 requires DSN on command line -* Fixed bug #1226721: pt-agent on CentOS 5 fails to send data -* Fixed bug #821690: pt-query-digest doesn't distill IF EXISTS correctly -* Fixed bug #1206677: pt-agent docs reference clodu.percona.com - -v2.2.4 released 2013-07-18 -========================== - -Percona Toolkit 2.2.4 has been released. This release two new features and a number of bugfixes. - -pt-query-digest --output json includes query examples as of v2.2.3. Some people might not want this because it exposes real data. New option, --output json-anon, has been implemented. This option will provide the same data without query examples. It's "anonymous" in the sense that there's no identifying data; nothing more than schema and table structs can be inferred from fingerprints. - -When using drop swap with pt-online-schema-change there is some production impact. This impact can be measured because tool outputs the current timestamp on lines for operations that may take awhile. - -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -pt-table-checksum would fail if variable explicit_defaults_for_timestamp was enabled in MySQL 5.6. - -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -Trying to assign 0 to any variable by using --set-vars option would cause “Invalid --set-vars value” message. - -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get - -* Fixed the typo in the pt-online-schema-change code that could lead to a tool crash when copying the rows. - -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -pt-table-checksum was using the first non-unique index instead of the one with the highest cardinality due to a sorting bug. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories - -Changelog ---------- - -* Added pt-query-digest anonymous JSON output -* Added pt-online-schema-change timestamp output -* Fixed bug #1136559: pt-table-checksum: Deep recursion on subroutine "SchemaIterator::_iterate_dbh" -* Fixed bug #1163735: pt-table-checksum fails if explicit_defaults_for_timestamp is enabled in 5.6 -* Fixed bug #1182856: Zero values causes "Invalid --set-vars value: var=0" -* Fixed bug #1188264: pt-online-schema-change error copying rows: Undefined subroutine &pt_online_schema_change::get -* Fixed bug #1195034: pt-deadlock-logger error: Use of uninitialized value $ts in pattern match (m//) -* Fixed bug #1199591: pt-table-checksum doesn't use non-unique index with highest cardinality -* Fixed bug #1168434: pt-upgrade reports differences on NULL -* Fixed bug #1172317: pt-sift does not work if pt-stalk did not collect due to a full disk -* Fixed bug #1176010: pt-query-digest doesn't group db and `db` together -* Fixed bug #1137556: pt-heartbeat docs don't account for --utc -* Fixed bug #1168106: pt-variable-advisor has the wrong default value for innodb_max_dirty_pages_pct in 5.5 and 5.6 -* Fixed bug #1168110: pt-variable-advisor shows key_buffer_size in 5.6 as unconfigured (even though it is) -* Fixed bug #1171968: pt-query-digest docs don't mention --type=rawlog -* Fixed bug #1174956: pt-query-digest and pt-fingerprint don't strip some multi-line comments - - -v2.2.3 released 2013-06-17 -========================== - -Percona Toolkit 2.2.3 has been released which has only two changes: pt-agent -and a bug fix for pt-online-schema-change. pt-agent is not a command line -tool but a client-side agent for Percona Cloud Tools. Visit -https://cloud.percona.com for more information. The pt-online-schema-change -bug fix is bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): -"Table 'db._t_new' doesn't exist". This happens when the tool's triggers -cannot be dropped. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added new tool: pt-agent -* Fixed bug 1188002: pt-online-schema-change causes "ERROR 1146 (42S02): Table 'db._t_new' doesn't exist" - -v2.2.2 released 2013-04-24 -========================== - -Percona Toolkit 2.2.2 has been released. This is the second release of -the 2.2 series and aims to fix bugs in the previous release and provide -usability enhacements to the toolkit. - -Users may note the revival of the --show-all option in pt-query-digest. -This had been removed in 2.2.1, but resulted in too much output in -certain cases. - -A new --recursion-method was added to pt-table-checksum: cluster. This -method attempts to auto-discover cluster nodes, alleviating the need to -specify cluster node DSNs in a DSN table (--recursion-method=dsn). - -The following highlights some of the more interesting and "hot" bugs in -this release: - -* Bug #1127450: pt-archiver --bulk-insert may corrupt data - -pt-archiver --bulk-insert didn't work with --charset UTF-8. This revealed -a case where the tool could corrupt data by double-encoding. This is now -fixed, but remains relatively dangerous if using DBD::mysql 3.0007 which -does not handle UTF-8 properly. - -* Bug #1163372: pt-heartbeat --utc --check always returns 0 - -Unfortunately, the relatively new --utc option for pt-heart was still -broken because "[MySQL] interprets date as a value in the current time zone -and converts it to an internal value in UTC." Now the tool works correctly -with --utc by specifying "SET time_zone='+0:00'", and older versions of -the tool can be made to work by specifying --set-vars "time_zone='+0:00'". - -* Bug #821502: Some tools don't have --help or --version - -pt-align, pt-mext, pt-pmp and pt-sift now have both options. - -This is another solid bug fix release, and all users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Added --show-all to pt-query-digest -* Added --recursion-method=cluster to pt-table-checksum -* Fixed bug 1127450: pt-archiver --bulk-insert may corrupt data -* Fixed bug 1163372: pt-heartbeat --utc --check always returns 0 -* Fixed bug 1156901: pt-query-digest --processlist reports duplicate queries for replication thread -* Fixed bug 1160338: pt-query-digest 2.2 prints unwanted debug info on tcpdump parsing errors -* Fixed bug 1160918: pt-query-digest 2.2 prints too many string values -* Fixed bug 1156867: pt-stalk prints the wrong variable name in verbose mode when --function is used -* Fixed bug 1081733: pt-stalk plugins can't access the real --prefix -* Fixed bug 1099845: pt-table-checksum pxc same_node function incorrectly uses wsrep_sst_receive_address -* Fixed bug 821502: Some tools don't have --help or --version -* Fixed bug 947893: Some tools use @@hostname without /*!50038*/ -* Fixed bug 1082406: An explicitly set wsrep_node_incoming_address may make SHOW STATUS LIKE 'wsrep_incoming_addresses' return a portless address - -v2.2.1 released 2013-03-14 -========================== - -Percona Toolkit 2.2.1 has been released. This is the first release in -the new 2.2 series which supersedes the 2.1 series and renders the 2.0 -series obsolete. We plan to do one more bug fix release for 2.1 (2.1.10), -but otherwise all new development and fixes and will now focus on 2.2. - -Percona Toolkit 2.2 has been several months in the making, and it turned -out very well, with many more new features, changes, and improvements than -originally anticipated. Here are the highlights: - ----- - -* Official support for MySQL 5.6 - -We started beta support for MySQL 5.6 in 2.1.8 when 5.6 was still beta. -Now that 5.6 is GA, so is our support for it. Check out the Percona Toolkit -supported platforms and versions: -http://www.percona.com/mysql-support/policies/percona-toolkit-supported-platforms-and-versions - -When you upgrade to MySQL 5.6, be sure to upgrade to Percona Toolkit 2.2, too. - -* Official support for Percona XtraDB Cluster (PXC) - -We also started beta support for Percona XtraDB Cluster in 2.1.8, but -now that support is official in 2.2 because we have had many months to -work with PXC and figure out which tools work with it and how. There's -still one noticeable omission: pt-table-sync. It's still unclear if -or how one would sync a cluster that, in theory, doesn't become out-of-sync. -As Percona XtraDB Cluster develops, Percona Toolkit will continue to -evolve to support it. - -* pt-online-schema-change (pt-osc) is much more resilient - -pt-online-schema-change 2.1 has been a great success, and people have been -using it for evermore difficult and challenging tasks. Consequently, we -needed to make it "try harder", even though it already tried pretty hard -to keep working despite recoverable errors and such. Whereas pt-osc 2.1 -only retries certain operations, pt-osc 2.2 retries every critical operation, -and its tries and wait time between tries for all operations are configurable. -Also, we removed --lock-wait-timeout which set innodb_lock_wait_timeout -because that now conflicts, or is at least confused with, lock_wait_timeout -(introduced in MySQL 5.5) for metadata locks. Now --set-vars is used to -set both of these (or any) system variables. For a quick intro to metadata -locks and how they may affect you, see Ovais's article: -http://www.mysqlperformanceblog.com/2013/02/01/implications-of-metadata-locking-changes-in-mysql-5-5/ - -What does this all mean? In short: pt-online-schema-change 2.2 is far more -resilient out of the box. It's also aware of metadata locks now, whereas -2.1 was not really aware of them. And it's highly configurable, so you can -make the tool try _very_ hard to keep working. - -* pt-upgrade is brand-new - -pt-upgrade was written once long ago, thrown into the world, and then never -heard from again... until now. Now that we have four base versions of -MySQL (5.0, 5.1, 5.5, and 5.6), plus at least four major forks (Percona -Server, MariaDB, Percona XtraDB Cluster, and MariaDB Galera Cluster), -upgrades are fashionable, so to speak. Problem is: "original" pt-upgrade -was too noisy and too complex. pt-upgrade 2.2 is far simpler and far -easier to use. It's basically what you expect from such a tool. - -Moreover, it has a really helpful new feature: "reference results", i.e. -saved results from running queries on a server. Granted, this can take -*a lot* of disk space, but it allows you to "run now, compare later." - -If you're thinking about upgrading, give pt-upgrade a try. It also reads -every type of log now (slow, general, binary, and tcpdump), so you shouldn't -have a problem finding queries to run and compare. - -* pt-query-digest is simpler - -pt-query-digest 2.2 has fewer options now. Basically, we re-focused it -on its primary objective: analyzing MySQL query logs. So the ability -to parse memcached, Postgres, Apache, and other logs was removed. We -also removed several options that probably nobody ever used, and -changed/renamed other options to be more logical. The result is a simpler, -more focused tool, i.e. less overwhelming. - -Also, pt-query-digest 2.2 can save results in JSON format (--output=json). -This feature is still in development while we determine the optimal -JSON structure. - -* Version check is on by default - -Way back in 2.1.4, released September/October 2012, we introduced a feature -called "version check" into most tools: http://percona.com/version-check -It's like a lot of software that automatically checks for updates, but -it's also more: it's a free service from Percona that advises when certain -programs (Percona Toolkit tools, MySQL, Perl, etc.) are either out of date -or are known bad versions. For example, there are two versions of the -DBD::mysql Perl module that have problems. And there are certain versions -of MySQL that have critical bugs. Version check will warn you about these -if your system is running them. - -What's new in 2.2 is that, whereas this feature (specifically, the option -in tools: --version-check) was off by default, now it's on by default. -If the IO::Socket::SSL Perl module is installed (easily available through -your package manager), it will use a secure (https) connection over the web, -else it will use a standard (http) connection. - -Check out http://percona.com/version-check for more information. - -* pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player are gone - -We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. -Granted, no tool is ever really gone: if you need one of these tools, -get it from 2.1. pt-log-player is now superseded by Percona Playback -(http://www.percona.com/doc/percona-playback/). pt-query-advisor was -removed so that we can focus our efforts on its online counterpart instead: -https://tools.percona.com/query-advisor. The other tools were special -projects that were not widely used. - -* pt-stalk and pt-mysql-summary have built-in MySQL options - -No more "pt-stalk -- -h db1 -u me". pt-stalk 2.2 and pt-mysql-summary 2.2 -have all the standard MySQL options built-in, like other tools: --user, ---host, --port, --password, --socket, --defaults-file. So now the command -line is what you expect: pt-stalk -h dhb1 -u me. - -* pt-stalk --no-stalk is no longer magical - -Originally, pt-stalk --no-stalk was meant to simulate pt-collect, i.e. -collect once and exit. To do that, the tool magically set some options -and clobbered others, resulting in no way to do repeated collections -at intervals. Now --no-stalk means only that: don't stalk, just collect, -respecting --interval and --iterations as usual. So to collect once -and exit: pt-stalk --no-stalk --iterations 1. - -* pt-fk-error-logger and pt-deadlock-logger are standardized - -Similar to the pt-stalk --no-stalk changes, pt-fk-error-logger and -pt-deadlock-logger received mini overhauls in 2.2 to make their -run-related options (--run-time, --interval, --iterations) standard. -If you hadn't noticed, one tool would run forever by default, while -the other would run once and exit. And each treated their run-related -options a little differently. This magic is gone now: both tools run -forever by default, so specify --iterations or --run-time to limit how -long they run. - ----- - -There were other miscellaneous bug fixes, too. See -https://launchpad.net/percona-toolkit/+milestone/2.2.1 for the full list. - -As the first release in a new series, 2.2 features are not yet finalized. -In other words, we may change things like the pt-query-digest --output json -format in future releases after receiving real-world feedback. - -Percona Toolkit 2.2 is an exciting release with many helpful new -features. Users are encouraged to begin upgrading, particularly given -that, except for the forthcoming 2.1.10 release, no more work will be -done on 2.1 (unless you're a Percona customer with a support contract or -other agreement). - -If you upgrade from 2.1 to 2.2, be sure to re-read tools' documentation -to see what has changed because much as changed for certain tools. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Official support for MySQL 5.6 -* Official support for Percona XtraDB Cluster -* Redesigned pt-query-digest -* Redesigned pt-upgrade -* Redesigned pt-fk-error-logger -* Redesigned pt-deadlock-logger -* Changed --set-vars in all tools -* Renamed --retries to --tries in pt-online-schema-change -* Added --check-read-only to pt-heartbeat -* Added MySQL options to pt-mysql-summary -* Added MySQL options to pt-stalk -* Removed --lock-wait-timeout from pt-online-schema-change (use --set-vars) -* Removed --lock-wait-timeout from pt-table-checksum (use --set-vars) -* Removed pt-query-advisor -* Removed pt-tcp-model -* Removed pt-trend -* Removed pt-log-player -* Enabled --version-check by default in all tools -* Fixed bug 1008796: Several tools don't have --database -* Fixed bug 1087319: Quoter::serialize_list() doesn't handle multiple NULL values -* Fixed bug 1086018: pt-config-diff needs to parse wsrep_provider_options -* Fixed bug 1056838: pt-fk-error-logger --run-time works differently than pt-deadlock-logger --run-time -* Fixed bug 1093016: pt-online-schema-change doesn't retry RENAME TABLE -* Fixed bug 1113301: pt-online-schema-change blocks on metadata locks -* Fixed bug 1125665: pt-stalk --no-stalk silently clobbers other options, acts magically -* Fixed bug 1019648: pt-stalk truncates InnoDB status if there are too many transactions -* Fixed bug 1087804: pt-table-checksum doesn't warn if no slaves are found - -v2.1.9 released 2013-02-14 -========================== - -Percona Toolkit 2.1.9 has been released. This release primarily aims to -restore backwards-compatibility with pt-heartbeat 2.1.7 and older, but it -also has important bug fixes for other tools. - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP - -The previous release switched the time authority from Perl to MySQL, and from -local time to UTC. Unfortunately, these changes caused a loss of precision and, -if mixing versions of pt-heartbeat, made the tool report a huge amount of -replication lag. This release makes the tool compatible with pt-heartbeat -2.1.7 and older again, but the UTC behavior introduced in 2.1.8 is now only -available by specifying the new --utc option. - -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" - -This is an important bug fix for pt-table-sync: certain chunks from -pt-table-checksum resulted in an impossible WHERE, causing the false-positive -"Cannot nibble" error, if those chunks had diffs. - -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB - -MariaDB 5.5.28 (https://kb.askmonty.org/en/mariadb-5528-changelog/) fixed -a bug: "Added warnings for duplicate key errors when using INSERT IGNORE". -However, standard MySQL does not warn in this case, despite the docs saying -that it should. Since pt-online-schema-change has always intended to ignore -duplicate entry errors by using "INSERT IGNORE", it now handles the MariaDB -case by also ignoring duplicate entry errors in the code. - -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns - -pt-online-schema-change 2.1.9 handles another case of changing the primary key. -However, since changing the primary key is tricky, the tool stops if --alter -contains "DROP PRIMARY KEY", and you have to specify --no-check-alter to -acknowledge this case. - -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -Previously, pt-stalk printed a line for every check. Since the tool is -designed to be a long-running daemon, this could result in huge log files -with "matched=no" lines. The tool has a new --verbose option which makes it -quieter by default. - -All users should upgrade, but in particular, users of versions 2.1.7 and -older are strongly recommended to skip 2.1.8 and go directly to 2.1.9. - -Users of pt-heartbeat in 2.1.8 who prefer the UTC behavior should keep in -mind that they will have to use the --utc option after upgrading. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1103221: pt-heartbeat 2.1.8 doesn't use precision/sub-second timestamps -* Fixed bug 1099665: pt-heartbeat 2.1.8 reports big time drift with UTC_TIMESTAMP -* Fixed bug 1099836: pt-online-schema-change fails with "Duplicate entry" on MariaDB -* Fixed bug 1103672: pt-online-schema-change makes bad DELETE trigger if PK is re-created with new columns -* Fixed bug 1115333: pt-pmp doesn't list the origin lib for each function -* Fixed bug 823411: pt-query-digest shouldn't print "Error: none" for tcpdump -* Fixed bug 1103045: pt-query-digest fails to parse non-SQL errors -* Fixed bug 1105077: pt-table-checksum: Confusing error message with binlog_format ROW or MIXED on slave -* Fixed bug 918056: pt-table-sync false-positive error "Cannot nibble table because MySQL chose no index instead of the PRIMARY index" -* Fixed bug 1099933: pt-stalk is too verbose, fills up log - -v2.1.8 released 2012-12-21 -========================== - -Percona Toolkit 2.1.8 has been released. This release includes 28 bug fixes, beta support for MySQL 5.6, and extensive support for Percona XtraDB Cluster (PXC). Users intending on running the tools on Percona XtraDB Cluster or MySQL 5.6 should upgrade. The following tools have been verified to work on PXC versions 5.5.28 and newer: - -* pt-table-chcecksum -* pt-online-schema-change -* pt-archive -* pt-mysql-summary -* pt-heartbeat -* pt-variable-advisor -* pt-config-diff -* pt-deadlock-logger - -However, there are limitations when running these tools on PXC; see the Percona XtraDB Cluster section in each tool's documentation for further details. All other tools, with the exception of pt-slave-find, pt-slave-delay and pt-slave-restart, should also work correctly, but in some cases they have not been modified to take advantage of PXC features, so they may behave differently in future releases. - -The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query - -Slow logs which include timestamps but no query--which can happen if using slow_query_log_timestamp_always in Percona Server--were misparsed, resulting in an erroneous report. Now such no-query events show up in reports as ``/* No query */``. - -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" - -The "as" was misparsed and the following word would end up reported as the database; pt-query-digest now handles this correctly. - -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 - -Some renamed variables had caused the Percona Server section to work unreliably. - -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only - -When using --replicate-check-only, filter options like --databases and --tables were not applied. - -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently - -Previously, pt-heartbeat respected the MySQL time zone, but this caused false readings (e.g. very high lag) with slaves running in different time zones. Now pt-heartbeat uses UTC regardless of the server or MySQL time zone. - -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables - -Since MyISAM tables can't have foreign keys, and the tool uses the information_schema to find child tables, this could cause unnecessary load on the server. - -2.1.8 continues the trend of solid bug fix releases, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Beta support for MySQL 5.6 -* Beta support for Percona XtraDB Cluster -* pt-online-schema-change: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-table-checksum: If ran on Percona XtraDB Cluster, requires PXC 5.5.28 or newer -* pt-upgrade: Added --[no]disable-query-cache -* Fixed bug 927955: Bad pod2rst transformation -* Fixed bug 898665: Bad online docs formatting for --[no]vars -* Fixed bug 1022622: pt-config-diff is case-sensitive -* Fixed bug 1007938: pt-config-diff doesn't handle end-of-line comments -* Fixed bug 917770: pt-config-diff Use of uninitialized value in substitution (s///) at line 1996 -* Fixed bug 1082104: pt-deadlock-logger doesn't handle usernames with dashes -* Fixed bug 886059: pt-heartbeat handles timezones inconsistently -* Fixed bug 1086259: pt-kill --log-dsn timestamp is wrong -* Fixed bug 1015590: pt-mysql-summary doesn't handle renamed variables in Percona Server 5.5 -* Fixed bug 1079341: pt-online-schema-change checks for foreign keys on MyISAM tables -* Fixed bug 823431: pt-query-advisor hangs on big queries -* Fixed bug 996069: pt-query-advisor RES.001 is incorrect -* Fixed bug 933465: pt-query-advisor false positive on RES.001 -* Fixed bug 937234: pt-query-advisor issues wrong RES.001 -* Fixed bug 1082599: pt-query-digest fails to parse timestamp with no query -* Fixed bug 1078838: pt-query-digest doesn't parse general log with "Connect user as user" -* Fixed bug 957442: pt-query-digest with custom --group-by throws error -* Fixed bug 887638: pt-query-digest prints negative byte offset -* Fixed bug 831525: pt-query-digest help output mangled -* Fixed bug 932614: pt-slave-restart CHANGE MASTER query causes error -* Fixed bug 1046440: pt-stalk purge_samples slows down checks -* Fixed bug 986847: pt-stalk does not report NFS iostat -* Fixed bug 1074179: pt-table-checksum doesn't ignore tables for --replicate-check-only -* Fixed bug 911385: pt-table-checksum v2 fails when --resume + --ignore-database is used -* Fixed bug 1041391: pt-table-checksum debug statement for "Chosen hash func" prints undef -* Fixed bug 1075638: pt-table-checksum Illegal division by zero at line 7950 -* Fixed bug 1052475: pt-table-checksum uninitialized value in numeric lt (<) at line 8611 -* Fixed bug 1078887: Tools let --set-vars clobber the required SQL mode - -v2.1.7 released 2012-11-19 -========================== - -Percona Toolkit 2.1.7 has been released which is a hotfix for two bugs when using pt-table-checksum with Percona XtraDB Cluster: - -* Bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should upgrade. Otherwise, users can wait until the next full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1080384: pt-table-checksum 2.1.6 crashes using PTDEBUG -* Fixed bug 1080385: pt-table-checksum 2.1.6 --check-binlog-format doesn't ignore PXC nodes - -v2.1.6 released 2012-11-13 -========================== - -Percona Toolkit 2.1.6 has been released. This release includes 33 bug fixes and three new features: pt-online-schema-change now handles renaming columns without losing data, removing one of the tool's limitations. pt-online-schema-change also got two new options: --default-engine and --statistics. Finally, pt-stalk now has a plugin hook interface, available through the --plugin option. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Bug 978133: pt-query-digest review table privilege checks don't work - -The same checks were removed from pt-table-checksum on 2.1.3 and pt-table-sync on 2.1.4, so this just follows suit. - -* Bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves - -A particularly important fix, as it may stop pt-table-checksum from breaking replication in these setups. - -* Bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag - -If you run multiple instances of pt-table-checksum on a badly lagged server, actually respecting --run-time stops the instances from divebombing the server when the replica catches up. - -* Bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key - -Fixed by choosing a key on the new table for the DELETE trigger. - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -A follow up to the same fix in the previous release, this adds to warnings for cases in which pt-table-checksum may work incorrectly and require some user intervention: One for the case of master -> cluster, and one for cluster1 -> cluster2. - -* Bug 821715: LOAD DATA LOCAL INFILE broken in some platforms - -This bug has hounded the toolkit for quite some time. In some platforms, trying to use LOAD DATA LOCAL INFILE would fail as if the user didn't have enough privileges to perform the operation. This was a misdiagnoses from MySQL; The actual problem was that the libmysqlclient.so provided by some vendors was compiled in a way that disallowed users from using the statement without some extra work. This fix adds an 'L' option to the DSNs the toolkit uses, tells the the tools to explicitly enables LOAD DATA LOCAL INFILE. This affected two pt-archiver and pt-upgrade, so if you are on an effected OS and need to use those, you can simply tag an L=1 to your DSN and everything should start working. - -* Bug 866075: pt-show-grant doesn't support column-level grants - -This was actually the 'hottest' bug in the tracker. - -This is another solid bug fix release, and all 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-online-schema-change: Columns can now be renamed without data loss -* pt-online-schema-change: New --default-engine option -* pt-stalk: Plugin hooks available through the --plugin option to extend the tool's functionality -* Fixed bug 1069951: --version-check default should be explicitly "off" -* Fixed bug 821715: LOAD DATA LOCAL INFILE broken in some platforms -* Fixed bug 995896: Useless use of cat in Daemon.pm -* Fixed bug 1039074: Tools exit 0 on error parsing options, should exit non-zero -* Fixed bug 938068: pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves -* Fixed bug 1009510: pt-table-checksum breaks replication if a slave table is missing or different -* Fixed bug 1043438: pt-table-checksum doesn't honor --run-time while checking replication lag -* Fixed bug 1073532: pt-table-checksum error: Use of uninitialized value in int at line 2778 -* Fixed bug 1016131: pt-table-checksum can crash with --columns if none match -* Fixed bug 1039569: pt-table-checksum dies if creating the --replicate table fails -* Fixed bug 1059732: pt-table-checksum doesn't test all hash functions -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1043528: pt-deadlock-logger can't parse db/tbl/index on partitioned tables -* Fixed bug 1062324: pt-online-schema-change DELETE trigger fails when altering primary key -* Fixed bug 1058285: pt-online-schema-change fails if sql_mode explicitly or implicitly uses ANSI_QUOTES -* Fixed bug 1073996: pt-online-schema-change fails with "I need a max_rows argument" -* Fixed bug 1039541: pt-online-schema-change --quiet doesn't disable --progress -* Fixed bug 1045317: pt-online-schema-change doesn't report how many warnings it suppressed -* Fixed bug 1060774: pt-upgrade fails if select column > 64 chars -* Fixed bug 1070916: pt-mysql-summary may report the wrong cnf file -* Fixed bug 903229: pt-mysql-summary incorrectly categorizes databases -* Fixed bug 866075: pt-show-grant doesn't support column-level grants -* Fixed bug 978133: pt-query-digest review table privilege checks don't work -* Fixed bug 956981: pt-query-digest docs for event attributes link to defunct Maatkit wiki -* Fixed bug 1047335: pt-duplicate-key-checker fails when it encounters a crashed table -* Fixed bug 1047701: pt-stalk deletes non-empty files -* Fixed bug 1070434: pt-stalk --no-stalk and --iterations 1 don't wait for the collect -* Fixed bug 1052722: pt-fifo-split is processing n-1 rows initially -* Fixed bug 1013407: pt-find documentation error with mtime and InnoDB -* Fixed bug 1059757: pt-trend output has no header -* Fixed bug 1063933: pt-visual-explain docs link to missing pdf -* Fixed bug 1075773: pt-fk-error-logger crashes if there's no foreign key error -* Fixed bug 1075775: pt-fk-error-logger --dest table example doesn't work - -v2.1.5 released 2012-10-08 -========================== - -Percona Toolkit 2.1.5 has been released. This release is less than two weeks after the release of 2.1.4 because we wanted to address these bugs quickly: - -* Bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes - -* Bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes - -* Bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL - -The first two bugs fix how pt-table-checksum works with Percona XtraDB Cluster (PXC). Although the 2.1.4 release did introduce support for PXC, these bugs prevented pt-table-checksum from working correctly with a cluster. - -The third bug is also related to a feature new in 2.1.4: --version-check. The feature uses HTTPS/SSL by default, but some modules in pt-table-sync weren't update which could prevent it from working on older systems. Related, the version check web page mentioned in tools' documentation was also created. - -If you're using pt-table-checksum with a Percona XtraDB Cluster, you should definitely upgrade. Otherwise, users can wait until 2.1.6 for another full release. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Fixed bug 1062563: pt-table-checksum 2.1.4 doesn't detect diffs on Percona XtraDB Cluster nodes -* Fixed bug 1063912: pt-table-checksum 2.1.4 miscategorizes Percona XtraDB Cluster-based slaves as cluster nodes -* Fixed bug 1064016: pt-table-sync 2.1.4 --version-check may not work with HTTPS/SSL -* Fixed bug 1060423: Missing version-check page - -v2.1.4 released 2012-09-20 -========================== - -Percona Toolkit 2.1.4 has been released. This release includes 26 bug fixes and three new features: Making pt-table-checksum work with Percona XtraDB Cluster, adding a --run-time option to pt-table-checksum, and implementing the "Version Check" feature, enabled through the --version-check switch. For further information on --version-check, see http://www.mysqlperformanceblog.com/2012/09/10/introducing-the-version-check-feature-in-percona-toolkit/. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 1017626: pt-table-checksum doesn't work with Percona XtraDB Cluster - -Note that this requires Percona XtraDB Cluster 5.5.27-23.6 or newer, as the fix depends on this bug https://bugs.launchpad.net/codership-mysql/+bug/1023911 being resolved. - -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves - -Previously, users had no recourse but using --recursion-method in conjunction with a dsn table to sidestep this bug, so this fix is a huge usability gain. This was caused by the toolkit not copying the -F portion of the main dsn. - -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" - -Which were stopping pt-upgrade from working on a MySQL 4.1 host. - -* Fixed bug 1036747: pt-table-sync priv checks need to be removed - -The same checks were removed in the previous release from pt-table-checksum, so this continues the trend. - -* Fixed bug 1038995: pt-stalk --notify-by-email fails - -This was a bug in our shell option parsing library, and would potentially affect any option starting with 'no'. - -Like 2.1.3, this is another solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-table-checksum: Percona XtraDB Cluster support -* pt-table-checksum: Implemented the standard --run-time option -* Implemented the version-check feature in several tools, enabled with the --version-check option -* Fixed bug 856060: Document gdb dependency -* Fixed bug 1041394: Unquoted arguments to tr break the bash tools -* Fixed bug 1035311: pt-diskstats shows wrong device names -* Fixed bug 1036804: pt-duplicate-key-checker error parsing InnoDB table with no PK or unique keys -* Fixed bug 1022658: pt-online-schema-change dropping FK limitation isn't documented -* Fixed bug 1041372: pt-online-schema-changes fails if db+tbl name exceeds 64 characters -* Fixed bug 1029178: pt-query-digest --type tcpdump memory usage keeps increasing -* Fixed bug 1037211: pt-query-digest won't distill LOCK TABLES in lowercase -* Fixed bug 942114: pt-stalk warns about bad "find" usage -* Fixed bug 1035319: pt-stalk df -h throws away needed details -* Fixed bug 1038995: pt-stalk --notify-by-email fails -* Fixed bug 1038995: pt-stalk does not get all InnoDB lock data -* Fixed bug 952722: pt-summary should show information about Fusion-io cards -* Fixed bug 899415: pt-table-checksum doesn't work if slaves use RBR -* Fixed bug 954588: pt-table-checksum --check-slave-lag docs aren't clear -* Fixed bug 1034170: pt-table-checksum --defaults-file isn't used for slaves -* Fixed bug 930693: pt-table-sync and text columns with just whitespace -* Fixed bug 1028710: pt-table-sync base_count fails on n = 1000, base = 10 -* Fixed bug 1034717: pt-table-sync division by zero error with varchar primary key -* Fixed bug 1036747: pt-table-sync priv checks need to be removed -* Fixed bug 1039184: pt-upgrade error "I need a right_sth argument" -* Fixed bug 1035260: sh warnings in pt-summary and pt-mysql-summary -* Fixed bug 1038276: ChangeHandler doesn't quote varchar columns with hex-looking values -* Fixed bug 916925: CentOS 5 yum dependency resolution for perl module is wrong -* Fixed bug 1035950: Percona Toolkit RPM should contain a dependency on perl-Time-HiRes - -v2.1.3 released 2012-08-03 -========================== - -Percona Toolkit 2.1.3 has been released. This release includes 31 bug fixes and one new feature: pt-kill --log-dsn to log information about killed queries to a table. The bug fixes are widely assorted. The following highlights some of the more interesting and "hot" bugs: - -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 - -pt-table-checksum used to check the user's privileges, but the method was not always reliable, and due to http://bugs.mysql.com/bug.php?id=61846 it became quite unreliable on MySQL 5.5. So the privs check was removed altogether, meaning that the tool may fail later if the user's privileges are insufficient. - -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS - -In certain cases where the master and replicas have different schemas and/or tables, pt-table-checksum could break replication because the checksums table did not exist on a replica. - -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns - -Certain distributions of MySQL add extra columns to SHOW PROCESSLIST which caused pt-query-digest --processlist to crash at times. - -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost - -pt-kill is meant to be a long-running daemon, so naturally it's important that it stays connected to MySQL. - -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error - -The combination of these pt-heartbeat options could cause replication to break due to a duplicate key error. - -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 - -This bug was related to how --quiet was handled, and it could happen even if --quiet wasn't given on the command line. - -All in all, this is solid bug fix release, and 2.1 users are encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-kill: Implemented --log-dsn to log info about killed queries to a table -* Fixed bug 1016127: Install hint for DBD::mysql is wrong -* Fixed bug 984915: DSNParser does not check success of --set-vars -* Fixed bug 889739: pt-config-diff doesn't diff quoted strings properly -* Fixed bug 969669: pt-duplicate-key-checker --key-types=k doesn't work -* Fixed bug 1004567: pt-heartbeat --update --replace causes duplicate key error -* Fixed bug 1028614: pt-index-usage ignores --database -* Fixed bug 940733: pt-ioprofile leaves behind temp directory -* Fixed bug 941469: pt-kill doesn't reconnect if its connection is lost -* Fixed bug 1016114: pt-online-schema-change docs don't mention default values -* Fixed bug 1020997: pt-online-schema-change fails when table is empty -* Fixed bug 1022628: pt-online-schema-change error: Use of uninitialized value in numeric lt (<) at line 6519 -* Fixed bug 937225: pt-query-advisor OUTER JOIN advice in JOI.003 is confusing -* Fixed bug 821703: pt-query-digest --processlist may crash -* Fixed bug 883098: pt-query-digest crashes if processlist has extra columns -* Fixed bug 924950: pt-query-digest --group-by db may crash profile report -* Fixed bug 1022851: pt-sift error: PREFIX: unbound variable -* Fixed bug 969703: pt-sift defaults to '.' instead of '/var/lib/pt-talk' -* Fixed bug 962330: pt-slave-delay incorrectly computes lag if started when slave is already lagging -* Fixed bug 954990: pt-stalk --nostalk does not work -* Fixed bug 977226: pt-summary doesn't detect LSI RAID control -* Fixed bug 1030031: pt-table-checksum reports wrong number of DIFFS -* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5 -* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS -* Fixed bug 953141: pt-table-checksum ignores its default and explicit --recursion-method -* Fixed bug 1030975: pt-table-sync crashes if sql_mode includes ANSI_QUOTES -* Fixed bug 869005: pt-table-sync should always set REPEATABLE READ -* Fixed bug 903510: pt-tcp-model crashes in --type=requests mode on empty file -* Fixed bug 934310: pt-tcp-model --quantile docs wrong -* Fixed bug 980318: pt-upgrade results truncated if hostnames are long -* Fixed bug 821696: pt-variable-advisor shows too long of a snippet -* Fixed bug 844880: pt-variable-advisor shows binary logging as both enabled and disabled - -v2.1.2 released 2012-06-12 -========================== - -Percona Toolkit 2.1.2 has been released. This is a very important release because it fixes a critical bug in pt-table-sync (bug 1003014) which caused various failures. All users of Percona Toolkit 2.1 should upgrade to this release. There were 47 other bug fixes, several new options, and other changes. The following is a high-level summary of the most important changes. - -In addition to the critical bug fix mentioned above, another important pt-table-sync bug was fixed, bug 1002365: --ignore-* options did not work with --replicate. The --lock-and-rename feature of the tool was also disabled unless running MySQL 5.5 or newer because it did not work reliably in earlier versions of MySQL. - -Several important pt-table-checksum bugs were fixed. First, a bug caused the tool to ignore the primary key. Second, the tool did not wait for the checksum table to replicate, so it could select from a nonexistent table on a replica and crash. Third, it did not check if all checksum queries were safe and chunk index with more than 3 columns could cause MySQL to scan many more rows than expected. - -pt-online-schema-change received many improvements and fixes: it did not retry deadlocks, but now it does; --no-swap-tables caused an error; it did not handle column renames; it did not allow disabling foreign key checks; --dry-run always failed on tables with foreign keys; it used different keys for chunking and triggers; etc. In short: pt-online-schema-change 2.1.2 is superior to 2.1.1. - -Two pt-archiver bugs were fixed: bug 979092, --sleep conflicts with bulk operations; and bug 903379, --file doesn't create a file. - ---recursion-method=none was implemented in pt-heartbeat, pt-online-schema-change, pt-slave-find, pt-slave-restart, pt-table-checksum, and pt-table-sync. This allows these tools to avoid executing SHOW SLAVE STATUS which requires a privilege not available to Amazon RDS users. - -Other bugs were fixed in pt-stalk, pt-variable-advisor, pt-duplicate-key-checker, pt-diskstats, pt-query-digest, pt-sift, pt-kill, pt-summary, and pt-deadlock-logger. - -Percona Toolkit 2.1.2 should be backwards-compatible with 2.1.1, so users are strongly encouraged to upgrade. - -Percona Toolkit packages can be downloaded from http://www.percona.com/downloads/percona-toolkit/ or the Percona Software Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* pt-heartbeat: Implemented --recursion-method=none -* pt-index-usage: MySQL 5.5 compatibility fixes -* pt-log-player: MySQL 5.5 compatibility fixes -* pt-online-schema-change: Added --chunk-index-columns -* pt-online-schema-change: Added --[no]check-plan -* pt-online-schema-change: Added --[no]drop-new-table -* pt-online-schema-change: Implemented --recursion-method=none -* pt-query-advisor: Added --report-type for JSON output -* pt-query-digest: Removed --[no]zero-bool -* pt-slave-delay: Added --database -* pt-slave-find: Implemented --recursion-method=none -* pt-slave-restart: Implemented --recursion-method=none -* pt-table-checksum: Added --chunk-index-columns -* pt-table-checksum: Added --[no]check-plan -* pt-table-checksum: Implemented --recursion-method=none -* pt-table-sync: Disabled --lock-and-rename except for MySQL 5.5 and newer -* pt-table-sync: Implemented --recursion-method=none -* Fixed bug 945079: Shell tools TMPDIR may break -* Fixed bug 912902: Some shell tools still use basename -* Fixed bug 987694: There is no --recursion-method=none option -* Fixed bug 886077: Passwords with commas don't work, expose part of password -* Fixed bug 856024: Lintian warnings when building percona-toolkit Debian package -* Fixed bug 903379: pt-archiver --file doesn't create a file -* Fixed bug 979092: pt-archiver --sleep conflicts with bulk operations -* Fixed bug 903443: pt-deadlock-logger crashes on MySQL 5.5 -* Fixed bug 941064: pt-deadlock-logger can't clear deadlocks on 5.5 -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 994176: pt-diskstats --group-by=all --headers=scroll prints a header for every sample -* Fixed bug 894140: pt-duplicate-key-checker sometimes recreates a key it shouldn't -* Fixed bug 923896: pt-kill: uninitialized value causes script to exit -* Fixed bug 1003003: pt-online-schema-change uses different keys for chunking and triggers -* Fixed bug 1003315: pt-online-schema-change --dry-run always fails on table with foreign keys -* Fixed bug 1004551: pt-online-schema-change --no-swap-tables causes error -* Fixed bug 976108: pt-online-schema-change doesn't allow to disable foreign key checks -* Fixed bug 976109: pt-online-schema-change doesn't handle column renames -* Fixed bug 988036: pt-online-schema-change causes deadlocks under heavy write load -* Fixed bug 989227: pt-online-schema-change crashes with PTDEBUG -* Fixed bug 994002: pt-online-schema-change 2.1.1 doesn't choose the PRIMARY KEY -* Fixed bug 994010: pt-online-schema-change 2.1.1 crashes without InnoDB -* Fixed bug 996915: pt-online-schema-change crashes with invalid --max-load and --critical-load -* Fixed bug 998831: pt-online-schema-change -- Should have an option to NOT drop tables on failure -* Fixed bug 1002448: pt-online-schema-change: typo for finding usable indexes -* Fixed bug 885382: pt-query-digest --embedded-attributes doesn't check cardinality -* Fixed bug 888114: pt-query-digest report crashes with infinite loop -* Fixed bug 949630: pt-query-digest mentions a Subversion repository -* Fixed bug 844034: pt-show-grants --separate fails with proxy user -* Fixed bug 946707: pt-sift loses STDIN after pt-diskstats -* Fixed bug 994947: pt-stalk doesn't reset cycles_true after collection -* Fixed bug 986151: pt-stalk-has mktemp error -* Fixed bug 993436: pt-summary Memory: Total reports M instead of G -* Fixed bug 1008778: pt-table-checksum doesn't wait for checksum table to replicate -* Fixed bug 1010232: pt-table-checksum doesn't check the size of checksum chunks -* Fixed bug 1011738: pt-table-checksum SKIPPED is zero but chunks were skipped -* Fixed bug 919499: pt-table-checksum fails with binary log error in mysql >= 5.5.18 -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 978432: pt-table-checksum ignoring primary key -* Fixed bug 995274: pt-table-checksum can't use an undefined value as an ARRAY reference at line 2206 -* Fixed bug 996110: pt-table-checksum crashes if InnoDB is disabled -* Fixed bug 987393: pt-table-checksum: Empy tables cause "undefined value as an ARRAY" errors -* Fixed bug 1002365: pt-table-sync --ignore-* options don't work with --replicate -* Fixed bug 1003014: pt-table-sync --replicate and --sync-to-master error "index does not exist" -* Fixed bug 823403: pt-table-sync --lock-and-rename doesn't work on 5.1 -* Fixed bug 898138: pt-variable-advisor doesn't recognize 5.5.3+ concurrent_insert values - -v2.1.1 released 2012-04-03 -========================== - -Percona Toolkit 2.1.1 has been released. This is the first release in the -new 2.1 series which supersedes the 2.0 series. We will continue to fix bugs -in 2.0, but 2.1 is now the focus of development. - -2.1 introduces a lot of new code for: - -* pt-online-schema-change (completely redesigned) -* pt-mysql-summary (completely redesigned) -* pt-summary (completely redesigned) -* pt-fingerprint (new tool) -* pt-table-usage (new tool) - -There were also several bug fixes. - -The redesigned tools are meant to replace their 2.0 counterparts because -the 2.1 versions have the same or more functionality and they are simpler -and more reliable. pt-online-schema-change was particularly enhanced to -be as safe as possible given that the tool is inherently risky. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ or the Percona Software -Repositories (http://www.percona.com/software/repositories/). - -Changelog ---------- - -* Completely redesigned pt-online-schema-change -* Completely redesigned pt-mysql-summary -* Completely redesigned pt-summary -* Added new tool: pt-table-usage -* Added new tool: pt-fingerprint -* Fixed bug 955860: pt-stalk doesn't run vmstat, iostat, and mpstat for --run-time -* Fixed bug 960513: SHOW TABLE STATUS is used needlessly -* Fixed bug 969726: pt-online-schema-change loses foreign keys -* Fixed bug 846028: pt-online-schema-change does not show progress until completed -* Fixed bug 898695: pt-online-schema-change add useless ORDER BY -* Fixed bug 952727: pt-diskstats shows incorrect wr_mb_s -* Fixed bug 963225: pt-query-digest fails to set history columns for disk tmp tables and disk filesort -* Fixed bug 967451: Char chunking doesn't quote column name -* Fixed bug 972399: pt-table-checksum docs are not rendered right -* Fixed bug 896553: Various documentation spelling fixes -* Fixed bug 949154: pt-variable-advisor advice for relay-log-space-limit -* Fixed bug 953461: pt-upgrade manual broken 'output' section -* Fixed bug 949653: pt-table-checksum docs don't mention risks posed by inconsistent schemas - -v2.0.4 released 2012-03-07 -========================== - -Percona Toolkit 2.0.4 has been released. 23 bugs were fixed in this release, -and three new features were implemented. First, --filter was added to pt-kill -which allows for arbitrary --group-by. Second, pt-online-schema-change now -requires that its new --execute option be given, else the tool will just check -the tables and exit. This is a safeguard to encourage users to read the -documentation, particularly when replication is involved. Third, pt-stalk -also received a new option: --[no]stalk. To collect immediately without -stalking, specify --no-stalk and the tool will collect once and exit. - -This release is completely backwards compatible with previous 2.0 releases. -Given the number of bug fixes, it's worth upgrading to 2.0.4. - -Changelog ---------- - -* Added --filter to pt-kill to allow arbitrary --group-by -* Added --[no]stalk to pt-stalk (bug 932331) -* Added --execute to pt-online-schema-change (bug 933232) -* Fixed bug 873598: pt-online-schema-change doesn't like reserved words in column names -* Fixed bug 928966: pt-pmp still uses insecure /tmp -* Fixed bug 933232: pt-online-schema-change can break replication -* Fixed bug 941225: Use of qw(...) as parentheses is deprecated at pt-kill line 3511 -* Fixed bug 821694: pt-query-digest doesn't recognize hex InnoDB txn IDs -* Fixed bug 894255: pt-kill shouldn't check if STDIN is a tty when --daemonize is given -* Fixed bug 916999: pt-table-checksum error: DBD::mysql::st execute failed: called with 2 bind variables when 6 are needed -* Fixed bug 926598: DBD::mysql bug causes pt-upgrade to use wrong precision (M) and scale (D) -* Fixed bug 928226: pt-diskstats illegal division by zero -* Fixed bug 928415: Typo in pt-stalk doc: --trigger should be --function -* Fixed bug 930317: pt-archiver doc refers to nonexistent pt-query-profiler -* Fixed bug 930533: pt-sift looking for ``*-processlist1;`` broken compatibility with pt-stalk -* Fixed bug 932331: pt-stalk cannot collect without stalking -* Fixed bug 932442: pt-table-checksum error when column name has two spaces -* Fixed bug 932883: File Debian bug after each release -* Fixed bug 940503: pt-stalk disk space checks wrong on 32bit platforms -* Fixed bug 944420: --daemonize doesn't always close STDIN -* Fixed bug 945834: pt-sift invokes pt-diskstats with deprecated argument -* Fixed bug 945836: pt-sift prints awk error if there are no stack traces to aggregate -* Fixed bug 945842: pt-sift generates wrong state sum during processlist analysis -* Fixed bug 946438: pt-query-digest should print a better message when an unsupported log format is specified -* Fixed bug 946776: pt-table-checksum ignores --lock-wait-timeout -* Fixed bug 940440: Bad grammar in pt-kill docs - -v2.0.3 released 2012-02-03 -========================== - -Percona Toolkit 2.0.3 has been released. The development team was very -busy last month making this release significant: two completely -redesigned and improved tools, pt-diskstats and pt-stalk, and 20 bug fixes. - -Both pt-diskstats and pt-stalk were redesigned and rewritten from the ground -up. This allowed us to greatly improve these tools' functionality and -increase testing for them. The accuracy and output of pt-diskstats was -enhanced, and the tool was rewritten in Perl. pt-collect was removed and -its functionality was put into a new, enhanced pt-stalk. pt-stalk is now -designed to be a stable, long-running daemon on a variety of common platforms. -It is worth re-reading the documentation for each of these tools. - -The 20 bug fixes cover a wide range of problems. The most important are -fixes to pt-table-checksum, pt-iostats, and pt-kill. Apart from pt-diskstats, -pt-stalk, and pt-collect (which was removed), no other tools were changed -in backwards-incompatible ways, so it is worth reviewing the full changelog -for this release and upgrading if you use any tools which had bug fixes. - -Thank you to the many people who reported bugs and submitted patches. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-diskstats -* Completely redesigned pt-stalk -* Removed pt-collect and put its functionality in pt-stalk -* Fixed bug 871438: Bash tools are insecure -* Fixed bug 897758: Failed to prepare TableSyncChunk plugin: Use of uninitialized value $args{"chunk_range"} in lc at pt-table-sync line 3055 -* Fixed bug 919819: pt-kill --execute-command creates zombies -* Fixed bug 925778: pt-ioprofile doesn't run without a file -* Fixed bug 925477: pt-ioprofile docs refer to pt-iostats -* Fixed bug 857091: pt-sift downloads http://percona.com/get/pt-pmp, which does not work -* Fixed bug 857104: pt-sift tries to invoke mext, should be pt-mext -* Fixed bug 872699: pt-diskstats: rd_avkb & wr_avkb derived incorrectly -* Fixed bug 897029: pt-diskstats computes wrong values for md0 -* Fixed bug 882918: pt-stalk spams warning if oprofile isn't installed -* Fixed bug 884504: pt-stalk doesn't check pt-collect -* Fixed bug 897483: pt-online-schema-change "uninitialized value" due to update-foreign-keys-method -* Fixed bug 925007: pt-online-schema-change Use of uninitialized value $tables{"old_table"} in concatenation (.) or string at line 4330 -* Fixed bug 915598: pt-config-diff ignores --ask-pass option -* Fixed bug 919352: pt-table-checksum changes binlog_format even if already set to statement -* Fixed bug 921700: pt-table-checksum doesn't add --where to chunk size test on replicas -* Fixed bug 921802: pt-table-checksum does not recognize --recursion-method=processlist -* Fixed bug 925855: pt-table-checksum index check is case-sensitive -* Fixed bug 821709: pt-show-grants --revoke and --separate don't work together -* Fixed bug 918247: Some tools use VALUE instead of VALUES - -v2.0.2 released 2012-01-05 -========================== - -Percona Toolkit 2.0.2 fixes one critical bug: pt-table-sync --replicate -did not work with character values, causing an "Unknown column" error. -If using Percona Toolkit 2.0.1, you should upgrade to 2.0.2. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Fixed bug 911996: pt-table-sync --replicate causes "Unknown column" error - -v2.0.1 released 2011-12-30 -========================== - -The Percona Toolkit development team is proud to announce a new major version: -2.0. Beginning with Percona Toolkit 2.0, we are overhauling, redesigning, and -improving the major tools. 2.0 tools are therefore not backwards compatible -with 1.0 tools, which we still support but will not continue to develop. - -New in Percona Toolkit 2.0.1 is a completely redesigned pt-table-checksum. -The original pt-table-checksum 1.0 was rather complex, but it worked well -for many years. By contrast, the new pt-table-checksum 2.0 is much simpler but -also much more efficient and reliable. We spent months rethinking, redesigning, -and testing every aspect of the tool. The three most significant changes: -pt-table-checksum 2.0 does only --replicate, it has only one chunking algorithm, -and its memory usage is stable even with hundreds of thousands of tables and -trillions of rows. The tool is now dedicated to verifying MySQL replication -integrity, nothing else, which it does extremely well. - -In Percona Toolkit 2.0.1 we also fixed various small bugs and forked ioprofile -and align (as pt-ioprofile and pt-align) from Aspersa. - -If you still need functionalities in the original pt-table-checksum, -the latest Percona Toolkit 1.0 release remains available for download. -Otherwise, all new development in Percona Toolkit will happen in 2.0. - -Download the latest release of Percona Toolkit 2.0 from -http://www.percona.com/software/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Changelog ---------- - -* Completely redesigned pt-table-checksum -* Fixed bug 856065: pt-trend does not work -* Fixed bug 887688: Prepared statements crash pt-query-digest -* Fixed bug 888286: align not part of percona-toolkit -* Fixed bug 897961: ptc 2.0 replicate-check error does not include hostname -* Fixed bug 898318: ptc 2.0 --resume with --tables does not always work -* Fixed bug 903513: MKDEBUG should be PTDEBUG -* Fixed bug 908256: Percona Toolkit should include pt-ioprofile -* Fixed bug 821717: pt-tcp-model --type=requests crashes -* Fixed bug 844038: pt-online-schema-change documentation example w/drop-tmp-table does not work -* Fixed bug 864205: Remove the query to reset @crc from pt-table-checksum -* Fixed bug 898663: Typo in pt-log-player documentation - -v1.0.1 released 2011-09-01 -========================== - -Percona Toolkit 1.0.1 has been released. In July, Baron announced planned -changes to Maatkit and Aspersa development;[1] Percona Toolkit is the -result. In brief, Percona Toolkit is the combined fork of Maatkit and -Aspersa, so although the toolkit is new, the programs are not. That means -Percona Toolkit 1.0.1 is mature, stable, and production-ready. In fact, -it's even a little more stable because we fixed a few bugs in this release. - -Percona Toolkit packages can be downloaded from -http://www.percona.com/downloads/percona-toolkit/ -or the Percona Software Repositories -(http://www.percona.com/docs/wiki/repositories:start). - -Although Maatkit and Aspersa development use Google Code, Percona Toolkit -uses Launchpad: https://launchpad.net/percona-toolkit - -[1] http://www.xaprb.com/blog/2011/07/06/planned-change-in-maatkit-aspersa-development/ - -Changelog ---------- - -* Fixed bug 819421: MasterSlave::is_replication_thread() doesn't match all -* Fixed bug 821673: pt-table-checksum doesn't include --where in min max queries -* Fixed bug 821688: pt-table-checksum SELECT MIN MAX for char chunking is wrong -* Fixed bug 838211: pt-collect: line 24: [: : integer expression expected -* Fixed bug 838248: pt-collect creates a "5.1" file - -v0.9.5 released 2011-08-04 -========================== - -Percona Toolkit 0.9.5 represents the completed transition from Maatkit and Aspersa. There are no bug fixes or new features, but some features have been removed (like --save-results from pt-query-digest). This release is the starting point for the 1.0 series where new development will happen, and no more changes will be made to the 0.9 series. - -Changelog ---------- - -* Forked, combined, and rebranded Maatkit and Aspersa as Percona Toolkit. - -Changelog ---------- - -* Fixed bug 1279502: --version-check behaves like spyware diff --git a/glide.lock b/glide.lock index 5487a6fa..7a46cd3b 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: 2ff7c989fb0fde1375999fded74ae44e10be513a21416571f026390b679924e4 -updated: 2017-02-21T14:44:44.812460227-03:00 +hash: 7cc97c518c04beac5926bfef5fafc2c291d1c8eff945390edb5e71fecbf461f2 +updated: 2017-04-11T11:01:58.383683464-03:00 imports: - name: github.com/bradfitz/slice version: d9036e2120b5ddfa53f3ebccd618c4af275f47da @@ -17,8 +17,6 @@ imports: version: bf9dde6d0d2c004a008c27aaee91170c786f6db8 - name: github.com/kr/pretty version: cfb55aafdaf3ec08f0db22699ab822c50091b1c4 -- name: github.com/kr/text - version: 7cafcd837844e784b526369c9bce262804aebc60 - name: github.com/montanaflynn/stats version: eeaced052adbcfeea372c749c281099ed7fdaa38 - name: github.com/pborman/getopt @@ -26,7 +24,7 @@ imports: subpackages: - v2 - name: github.com/percona/pmgo - version: 9fce66aa289ba956854ea42a8615128982b5a85e + version: 9566dc76df319b856a12f24a3b6852a0c6463eff subpackages: - pmgomock - name: github.com/pkg/errors @@ -34,7 +32,7 @@ imports: - name: github.com/satori/go.uuid version: 879c5887cd475cd7864858769793b2ceb0d44feb - name: github.com/shirou/gopsutil - version: 70a1b78fe69202d93d6718fc9e3a4d6f81edfd58 + version: e49a95f3d5f824c3f9875ca49e54e4fef17f82cf subpackages: - cpu - host @@ -45,7 +43,7 @@ imports: - name: github.com/shirou/w32 version: bb4de0191aa41b5507caa14b0650cdbddcd9280b - name: github.com/sirupsen/logrus - version: c078b1e43f58d563c74cebe63c85789e76ddb627 + version: ba1b36c82c5e05c4f912a88eab0dcd91a171688f - name: github.com/StackExchange/wmi version: e542ed97d15e640bdc14b5c12162d59e8fc67324 - name: go4.org diff --git a/glide.yaml b/glide.yaml index 7332ec18..c4ef7088 100644 --- a/glide.yaml +++ b/glide.yaml @@ -5,19 +5,15 @@ import: - package: github.com/howeyc/gopass - package: github.com/kr/pretty - package: github.com/montanaflynn/stats - version: ^0.2.0 - package: github.com/pborman/getopt - package: github.com/percona/pmgo + version: ^0.4 - package: github.com/pkg/errors - version: ^0.8.0 - package: github.com/satori/go.uuid - version: ^1.1.0 - package: github.com/shirou/gopsutil - version: ^2.17.1 subpackages: - process - package: github.com/sirupsen/logrus - version: ^0.11.2 - package: gopkg.in/mgo.v2 subpackages: - bson diff --git a/lib/CompareResults.pm b/lib/CompareResults.pm index f760a917..c8ade64e 100644 --- a/lib/CompareResults.pm +++ b/lib/CompareResults.pm @@ -87,7 +87,8 @@ sub before_execute { PTDEBUG && _d($sql); $dbh->do($sql); - $sql = "SET storage_engine=MyISAM"; + # Deprecated since MySQL 5.7 + #$sql = "SET storage_engine=MyISAM"; PTDEBUG && _d($sql); $dbh->do($sql); }; diff --git a/lib/Cxn.pm b/lib/Cxn.pm index 1dd6ed18..a80f2601 100644 --- a/lib/Cxn.pm +++ b/lib/Cxn.pm @@ -228,6 +228,11 @@ sub name { return $self->{hostname} || $self->{dsn_name} || 'unknown host'; } +sub description { + my ($self) = @_; + return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket'); +} + # This returns the server_id. # For cluster nodes, since server_id is unreliable, we use a combination of # variables to create an id string that is unique. diff --git a/lib/MySQLConfigComparer.pm b/lib/MySQLConfigComparer.pm index c0e500a4..cdba0899 100644 --- a/lib/MySQLConfigComparer.pm +++ b/lib/MySQLConfigComparer.pm @@ -83,6 +83,7 @@ sub new { my %value_is_optional = ( log_error => 1, log_isam => 1, + secure_file_priv => 1, ($args{optional_value_variables} ? map { $_ => 1 } @{$args{optional_value_variables}} : ()), diff --git a/lib/OptionParser.pm b/lib/OptionParser.pm index b1c2c699..2572ad23 100644 --- a/lib/OptionParser.pm +++ b/lib/OptionParser.pm @@ -838,7 +838,15 @@ sub _validate_type { } } my $defaults = $self->{DSNParser}->parse_options($self); - $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + if (!$opt->{attributes}->{repeatable}) { + $opt->{value} = $self->{DSNParser}->parse($val, $prev, $defaults); + } else { + my $values = []; + for my $dsn_string (@$val) { + push @$values, $self->{DSNParser}->parse($dsn_string, $prev, $defaults); + } + $opt->{value} = $values; + } } elsif ( $val && $opt->{type} eq 'z' ) { # type size PTDEBUG && _d('Parsing option', $opt->{long}, 'as a size value'); diff --git a/lib/Percona/Toolkit.pm b/lib/Percona/Toolkit.pm index 4369501b..ff8109bb 100644 --- a/lib/Percona/Toolkit.pm +++ b/lib/Percona/Toolkit.pm @@ -18,7 +18,7 @@ # ########################################################################### package Percona::Toolkit; -our $VERSION = '3.0.1'; +our $VERSION = '3.0.3'; use strict; use warnings FATAL => 'all'; diff --git a/lib/PerconaTest.pm b/lib/PerconaTest.pm index 62e9f6e5..2c8084ee 100644 --- a/lib/PerconaTest.pm +++ b/lib/PerconaTest.pm @@ -814,10 +814,11 @@ sub tables_used { while ( defined(my $chunk = <$fh>) ) { map { my $db_tbl = $_; + $db_tbl =~ s/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d+Z?//; # strip leading timestamp (MySQL 5.7+) $db_tbl =~ s/^\s*`?//; # strip leading space and ` $db_tbl =~ s/\s*`?$//; # strip trailing space and ` $db_tbl =~ s/`\.`/./; # strip inner `.` - $tables{$db_tbl} = 1; + $tables{$db_tbl} = 1 if !($db_tbl =~ m/^\s*$/); } grep { m/(?:\w\.\w|`\.`)/ # only db.tbl, not just db diff --git a/lib/Sandbox.pm b/lib/Sandbox.pm index 8178a585..10beafc0 100644 --- a/lib/Sandbox.pm +++ b/lib/Sandbox.pm @@ -64,12 +64,15 @@ my %port_for = ( cslave1 => 12348, # cluster -> slave host1 => 12345, # pt-upgrade host2 => 12348, # pt-upgrade + chan_master1 => 2900, + chan_master2 => 2901, + chan_slave1 => 2902, ); my %server_type = ( - master => 1, - slave => 1, - node => 1, + master => 1, + slave => 1, + node => 1, ); my $test_dbs = qr/^(?:mysql|information_schema|sakila|performance_schema|percona_test|sys)$/; @@ -494,7 +497,7 @@ sub start_sandbox { my $first_node = $args{first_node} ? $port_for{$args{first_node}} : ''; my $out = `$env $trunk/sandbox/start-sandbox cluster $port $first_node`; die $out if $CHILD_ERROR; - } + } my $dbh = $self->get_dbh_for($server, $args{cxn_opts}); my $dsn = $self->dsn_for($server); diff --git a/lib/TableUsage.pm b/lib/TableUsage.pm index bf6ea442..5883b9ad 100644 --- a/lib/TableUsage.pm +++ b/lib/TableUsage.pm @@ -39,6 +39,7 @@ use Data::Dumper; $Data::Dumper::Indent = 1; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Quotekeys = 0; +use VersionParser; use constant PTDEBUG => $ENV{PTDEBUG} || 0; @@ -844,7 +845,14 @@ sub _explain_query { $dbh->do($sql); } - $sql = "EXPLAIN EXTENDED $query"; + $self->{db_version} ||= VersionParser->new($dbh); + if ( $self->{db_version} < '5.7.3' ) { + $sql = "EXPLAIN EXTENDED $query"; + } + else { + $sql = "EXPLAIN $query"; # EXTENDED is implicit as of 5.7.3 + } + PTDEBUG && _d($dbh, $sql); eval { $dbh->do($sql); # don't need the result diff --git a/lib/bash/collect.sh b/lib/bash/collect.sh index 9e0b3f4b..c3f8f221 100644 --- a/lib/bash/collect.sh +++ b/lib/bash/collect.sh @@ -75,8 +75,8 @@ collect() { # Get MySQL's variables if possible. Then sleep long enough that we probably # complete SHOW VARIABLES if all's well. (We don't want to run mysql in the # foreground, because it could hang.) - $CMD_MYSQL $EXT_ARGV -e 'SHOW GLOBAL VARIABLES' >> "$d/$p-variables" & - sleep .2 + collect_mysql_variables "$d/$p-variables" & + sleep .5 # Get the major.minor version number. Version 3.23 doesn't matter for our # purposes, and other releases have x.x.x* version conventions so far. @@ -139,7 +139,7 @@ collect() { # Grab a few general things first. Background all of these so we can start # them all up as quickly as possible. - ps -eaf >> "$d/$p-ps" & + ps -eaF >> "$d/$p-ps" & top -bn${OPT_RUN_TIME} >> "$d/$p-top" & [ "$mysqld_pid" ] && _lsof $mysqld_pid >> "$d/$p-lsof" & @@ -193,7 +193,7 @@ collect() { local ps_instrumentation_enabled=$($CMD_MYSQL $EXT_ARGV -e 'SELECT ENABLED FROM performance_schema.setup_instruments WHERE NAME = "transaction";' \ | sed "2q;d" | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/') - if [ $ps_instrumentation_enabled != "yes"]; then + if [ $ps_instrumentation_enabled != "yes" ]; then log "Performance Schema instrumentation is disabled" fi @@ -246,7 +246,7 @@ collect() { (echo $ts; transactions) >>"$d/$p-transactions" & fi - if [ "${mysql_version}" '>' "5.6" ] && [ $ps_instrumentation_enabled == "yes"]; then + if [ "${mysql_version}" '>' "5.6" ] && [ $ps_instrumentation_enabled == "yes" ]; then ps_locks_transactions "$d/$p-ps-locks-transactions" fi @@ -254,6 +254,8 @@ collect() { (echo $ts; ps_prepared_statements) >> "$d/$p-prepared-statements" & fi + slave_status "$d/$p-slave-status" "${mysql_version}" + curr_time=$(date +'%s') done log "Loop end: $(date +'TS %s.%N %F %T')" @@ -406,7 +408,7 @@ innodb_status() { ps_locks_transactions() { local outfile=$1 - mysql -e 'select @@performance_schema' | grep "1" &>/dev/null + $CMD_MYSQL $EXT_ARGV -e 'select @@performance_schema' | grep "1" &>/dev/null if [ $? -eq 0 ]; then local status="select t.processlist_id, ml.* from performance_schema.metadata_locks ml join performance_schema.threads t on (ml.owner_thread_id=t.thread_id)\G" @@ -437,6 +439,50 @@ ps_prepared_statements() { ON (pse.OWNER_THREAD_ID=t.thread_id)\G" } +slave_status() { + local outfile=$1 + local mysql_version=$2 + + if [ "${mysql_version}" '<' "5.7" ]; then + local sql="SHOW SLAVE STATUS\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + else + local sql="SELECT * FROM performance_schema.replication_connection_configuration JOIN performance_schema.replication_applier_configuration USING(channel_name)\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="SELECT * FROM replication_connection_status\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="SELECT * FROM replication_applier_status JOIN replication_applier_status_by_coordinator USING(channel_name)\G" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + fi + +} + +collect_mysql_variables() { + local outfile=$1 + + local sql="SHOW GLOBAL VARIABLES" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.variables_by_thread order by thread_id, variable_name;" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.user_variables_by_thread order by thread_id, variable_name;" + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + + sql="select * from performance_schema.status_by_thread order by thread_id, variable_name; " + echo -e "\n$sql\n" >> $outfile + $CMD_MYSQL $EXT_ARGV -e "$sql" >> $outfile + +} # ########################################################################### # End collect package diff --git a/sandbox/gtid_on.sql b/sandbox/gtid_on.sql new file mode 100644 index 00000000..1de63bc2 --- /dev/null +++ b/sandbox/gtid_on.sql @@ -0,0 +1,7 @@ +SET GLOBAL master_info_repository = 'TABLE'; +SET @@GLOBAL.relay_log_info_repository = 'TABLE'; +SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON; +SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; +SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; +SET @@GLOBAL.GTID_MODE = ON; + diff --git a/sandbox/sakila.sql b/sandbox/sakila.sql index 94b5216e..f9e281c9 100644 --- a/sandbox/sakila.sql +++ b/sandbox/sakila.sql @@ -1,3 +1,4 @@ +SET autocommit=1; DROP DATABASE IF EXISTS `sakila`; CREATE DATABASE `sakila`; USE `sakila`; @@ -449,3 +450,6 @@ LEFT JOIN sakila.film_category fc LEFT JOIN sakila.category c ON fc.category_id = c.category_id GROUP BY a.actor_id, a.first_name, a.last_name; + +COMMIT; +FLUSH TABLES; diff --git a/sandbox/servers/5.6/my.sandbox.cnf b/sandbox/servers/5.6/my.sandbox.cnf index 24bfa584..3ee3f791 100644 --- a/sandbox/servers/5.6/my.sandbox.cnf +++ b/sandbox/servers/5.6/my.sandbox.cnf @@ -26,3 +26,4 @@ log-error = /tmp/PORT/data/mysqld.log innodb_lock_wait_timeout = 3 general_log general_log_file = genlog +secure-file-priv = diff --git a/sandbox/servers/5.7/data.tar.gz b/sandbox/servers/5.7/data.tar.gz old mode 100755 new mode 100644 index fdc0cca0..dd0d679d Binary files a/sandbox/servers/5.7/data.tar.gz and b/sandbox/servers/5.7/data.tar.gz differ diff --git a/sandbox/servers/5.7/my.sandbox.cnf b/sandbox/servers/5.7/my.sandbox.cnf index 3373c024..881ea914 100644 --- a/sandbox/servers/5.7/my.sandbox.cnf +++ b/sandbox/servers/5.7/my.sandbox.cnf @@ -33,3 +33,4 @@ binlog_format = STATEMENT performance_schema = ON #performance-schema-instrument='wait/lock/metadata/sql/mdl=ON' #performance-schema-instrument='transaction=ON' +secure-file-priv = diff --git a/sandbox/servers/5.7/system_idb_tables.sql b/sandbox/servers/5.7/system_idb_tables.sql index f7092570..62a1f4b1 100644 --- a/sandbox/servers/5.7/system_idb_tables.sql +++ b/sandbox/servers/5.7/system_idb_tables.sql @@ -1,195 +1,347 @@ -USE `mysql`; +USE mysql; +-- MySQL dump 10.13 Distrib 5.7.17, for Linux (x86_64) +-- +-- Host: localhost Database: mysql +-- ------------------------------------------------------ +-- Server version 5.7.17-0ubuntu0.16.10.1 -/* -- new innodb system tables -- */ -CREATE TABLE IF NOT EXISTS `help_category` ( - `help_category_id` smallint(5) unsigned NOT NULL, - `name` char(64) NOT NULL, - `parent_category_id` smallint(5) unsigned DEFAULT NULL, - `url` text NOT NULL, - PRIMARY KEY (`help_category_id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help categories'; +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE TABLE IF NOT EXISTS `help_keyword` ( - `help_keyword_id` int(10) unsigned NOT NULL, - `name` char(64) NOT NULL, - PRIMARY KEY (`help_keyword_id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help keywords'; +-- +-- Table structure for table `columns_priv` +-- +DROP TABLE IF EXISTS `columns_priv`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `columns_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Column_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `plugin` ( - `name` varchar(64) NOT NULL DEFAULT '', - `dl` varchar(128) NOT NULL DEFAULT '', +-- +-- Table structure for table `db` +-- + +DROP TABLE IF EXISTS `db`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `db` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`Db`,`User`), + KEY `User` (`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `event` +-- + +DROP TABLE IF EXISTS `event`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `event` ( + `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `name` char(64) NOT NULL DEFAULT '', + `body` longblob NOT NULL, + `definer` char(93) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `execute_at` datetime DEFAULT NULL, + `interval_value` int(11) DEFAULT NULL, + `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `last_executed` datetime DEFAULT NULL, + `starts` datetime DEFAULT NULL, + `ends` datetime DEFAULT NULL, + `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', + `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `originator` int(10) unsigned NOT NULL, + `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', + `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `body_utf8` longblob, + PRIMARY KEY (`db`,`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `func` +-- + +DROP TABLE IF EXISTS `func`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `func` ( + `name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `ret` tinyint(1) NOT NULL DEFAULT '0', + `dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '', + `type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='MySQL plugins'; +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `engine_cost` ( - `engine_name` varchar(64) NOT NULL, - `device_type` int(11) NOT NULL, - `cost_name` varchar(64) NOT NULL, - `cost_value` float DEFAULT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `comment` varchar(1024) DEFAULT NULL, - PRIMARY KEY (`cost_name`,`engine_name`,`device_type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0; +-- +-- Table structure for table `ndb_binlog_index` +-- -CREATE TABLE IF NOT EXISTS `gtid_executed` ( - `source_uuid` char(36) NOT NULL COMMENT 'uuid of the source where the transaction was originally executed.', - `interval_start` bigint(20) NOT NULL COMMENT 'First number of interval.', - `interval_end` bigint(20) NOT NULL COMMENT 'Last number of interval.', - PRIMARY KEY (`source_uuid`,`interval_start`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +DROP TABLE IF EXISTS `ndb_binlog_index`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ndb_binlog_index` ( + `Position` bigint(20) unsigned NOT NULL, + `File` varchar(255) NOT NULL, + `epoch` bigint(20) unsigned NOT NULL, + `inserts` int(10) unsigned NOT NULL, + `updates` int(10) unsigned NOT NULL, + `deletes` int(10) unsigned NOT NULL, + `schemaops` int(10) unsigned NOT NULL, + `orig_server_id` int(10) unsigned NOT NULL, + `orig_epoch` bigint(20) unsigned NOT NULL, + `gci` int(10) unsigned NOT NULL, + `next_position` bigint(20) unsigned NOT NULL, + `next_file` varchar(255) NOT NULL, + PRIMARY KEY (`epoch`,`orig_server_id`,`orig_epoch`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `proc` +-- -CREATE TABLE IF NOT EXISTS `help_relation` ( - `help_topic_id` int(10) unsigned NOT NULL, - `help_keyword_id` int(10) unsigned NOT NULL, - PRIMARY KEY (`help_keyword_id`,`help_topic_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='keyword-topic relation'; +DROP TABLE IF EXISTS `proc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `proc` ( + `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `name` char(64) NOT NULL DEFAULT '', + `type` enum('FUNCTION','PROCEDURE') NOT NULL, + `specific_name` char(64) NOT NULL DEFAULT '', + `language` enum('SQL') NOT NULL DEFAULT 'SQL', + `sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL DEFAULT 'CONTAINS_SQL', + `is_deterministic` enum('YES','NO') NOT NULL DEFAULT 'NO', + `security_type` enum('INVOKER','DEFINER') NOT NULL DEFAULT 'DEFINER', + `param_list` blob NOT NULL, + `returns` longblob NOT NULL, + `body` longblob NOT NULL, + `definer` char(93) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `body_utf8` longblob, + PRIMARY KEY (`db`,`name`,`type`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `help_topic` ( - `help_topic_id` int(10) unsigned NOT NULL, - `name` char(64) NOT NULL, - `help_category_id` smallint(5) unsigned NOT NULL, - `description` text NOT NULL, - `example` text NOT NULL, - `url` text NOT NULL, - PRIMARY KEY (`help_topic_id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help topics'; +-- +-- Table structure for table `procs_priv` +-- -CREATE TABLE IF NOT EXISTS `server_cost` ( - `cost_name` varchar(64) NOT NULL, - `cost_value` float DEFAULT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `comment` varchar(1024) DEFAULT NULL, - PRIMARY KEY (`cost_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0; +DROP TABLE IF EXISTS `procs_priv`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `procs_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Routine_name` char(64) CHARACTER SET utf8 NOT NULL DEFAULT '', + `Routine_type` enum('FUNCTION','PROCEDURE') COLLATE utf8_bin NOT NULL, + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `servers` ( - `Server_name` char(64) NOT NULL DEFAULT '', - `Host` char(64) NOT NULL DEFAULT '', - `Db` char(64) NOT NULL DEFAULT '', - `Username` char(64) NOT NULL DEFAULT '', - `Password` char(64) NOT NULL DEFAULT '', - `Port` int(4) NOT NULL DEFAULT '0', - `Socket` char(64) NOT NULL DEFAULT '', - `Wrapper` char(64) NOT NULL DEFAULT '', - `Owner` char(64) NOT NULL DEFAULT '', - PRIMARY KEY (`Server_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='MySQL Foreign Servers table'; +-- +-- Table structure for table `proxies_priv` +-- -CREATE TABLE IF NOT EXISTS `time_zone` ( - `Time_zone_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `Use_leap_seconds` enum('Y','N') NOT NULL DEFAULT 'N', - PRIMARY KEY (`Time_zone_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zones'; +DROP TABLE IF EXISTS `proxies_priv`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `proxies_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_user` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `With_grant` tinyint(1) NOT NULL DEFAULT '0', + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`User`,`Proxied_host`,`Proxied_user`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User proxy privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `time_zone_leap_second` ( - `Transition_time` bigint(20) NOT NULL, - `Correction` int(11) NOT NULL, - PRIMARY KEY (`Transition_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Leap seconds information for time zones'; +-- +-- Table structure for table `tables_priv` +-- +DROP TABLE IF EXISTS `tables_priv`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tables_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `time_zone_name` ( - `Name` char(64) NOT NULL, - `Time_zone_id` int(10) unsigned NOT NULL, - PRIMARY KEY (`Name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone names'; +-- +-- Table structure for table `user` +-- -CREATE TABLE IF NOT EXISTS `time_zone_transition` ( - `Time_zone_id` int(10) unsigned NOT NULL, - `Transition_time` bigint(20) NOT NULL, - `Transition_type_id` int(10) unsigned NOT NULL, - PRIMARY KEY (`Time_zone_id`,`Transition_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone transitions'; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `user` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', + `ssl_cipher` blob NOT NULL, + `x509_issuer` blob NOT NULL, + `x509_subject` blob NOT NULL, + `max_questions` int(11) unsigned NOT NULL DEFAULT '0', + `max_updates` int(11) unsigned NOT NULL DEFAULT '0', + `max_connections` int(11) unsigned NOT NULL DEFAULT '0', + `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0', + `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password', + `authentication_string` text COLLATE utf8_bin, + `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `password_last_changed` timestamp NULL DEFAULT NULL, + `password_lifetime` smallint(5) unsigned DEFAULT NULL, + `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `time_zone_transition_type` ( - `Time_zone_id` int(10) unsigned NOT NULL, - `Transition_type_id` int(10) unsigned NOT NULL, - `Offset` int(11) NOT NULL DEFAULT '0', - `Is_DST` tinyint(3) unsigned NOT NULL DEFAULT '0', - `Abbreviation` char(8) NOT NULL DEFAULT '', - PRIMARY KEY (`Time_zone_id`,`Transition_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone transition types'; +-- +-- Table structure for table `general_log` +-- -/* ----------- */ +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `general_log` ( + `event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + `user_host` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `command_type` varchar(64) NOT NULL, + `argument` mediumblob NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS `innodb_index_stats` ( - `database_name` varchar(64) COLLATE utf8_bin NOT NULL, - `table_name` varchar(64) COLLATE utf8_bin NOT NULL, - `index_name` varchar(64) COLLATE utf8_bin NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `stat_name` varchar(64) COLLATE utf8_bin NOT NULL, - `stat_value` bigint(20) unsigned NOT NULL, - `sample_size` bigint(20) unsigned DEFAULT NULL, - `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0; +-- +-- Table structure for table `slow_log` +-- -CREATE TABLE IF NOT EXISTS `innodb_table_stats` ( - `database_name` varchar(64) COLLATE utf8_bin NOT NULL, - `table_name` varchar(64) COLLATE utf8_bin NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `n_rows` bigint(20) unsigned NOT NULL, - `clustered_index_size` bigint(20) unsigned NOT NULL, - `sum_of_other_index_sizes` bigint(20) unsigned NOT NULL, - PRIMARY KEY (`database_name`,`table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `slow_log` ( + `start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + `user_host` mediumtext NOT NULL, + `query_time` time(6) NOT NULL, + `lock_time` time(6) NOT NULL, + `rows_sent` int(11) NOT NULL, + `rows_examined` int(11) NOT NULL, + `db` varchar(512) NOT NULL, + `last_insert_id` int(11) NOT NULL, + `insert_id` int(11) NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `sql_text` mediumblob NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; -CREATE TABLE IF NOT EXISTS `slave_master_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.', - `Host` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.', - `User_name` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.', - `User_password` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.', - `Port` int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.', - `Connect_retry` int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.', - `Enabled_ssl` tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.', - `Ssl_ca` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.', - `Ssl_capath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.', - `Ssl_cert` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.', - `Ssl_cipher` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.', - `Ssl_key` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.', - `Ssl_verify_server_cert` tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.', - `Heartbeat` float NOT NULL, - `Bind` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server', - `Ignored_server_ids` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs', - `Uuid` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.', - `Retry_count` bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.', - `Ssl_crl` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)', - `Ssl_crlpath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files', - `Enabled_auto_position` tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.', - PRIMARY KEY (`Host`,`Port`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; -CREATE TABLE IF NOT EXISTS `slave_relay_log_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', - `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', - `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', - `Number_of_workers` int(10) unsigned NOT NULL, - `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information'; +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -CREATE TABLE IF NOT EXISTS `slave_worker_info` ( - `Id` int(10) unsigned NOT NULL, - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Relay_log_pos` bigint(20) unsigned NOT NULL, - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_seqno` int(10) unsigned NOT NULL, - `Checkpoint_group_size` int(10) unsigned NOT NULL, - `Checkpoint_group_bitmap` blob NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information'; +-- Dump completed on 2017-03-23 15:40:36 diff --git a/sandbox/servers/mariadb/10.0/my.sandbox.cnf b/sandbox/servers/mariadb/10.0/my.sandbox.cnf index e428ff76..cc142452 100644 --- a/sandbox/servers/mariadb/10.0/my.sandbox.cnf +++ b/sandbox/servers/mariadb/10.0/my.sandbox.cnf @@ -26,4 +26,4 @@ log-error = /tmp/PORT/data/mysqld.log innodb_lock_wait_timeout = 3 general_log general_log_file = genlog -performance_schema = on +performance_schema = ON diff --git a/sandbox/servers/mariadb/10.1/my.sandbox.cnf b/sandbox/servers/mariadb/10.1/my.sandbox.cnf index e428ff76..cc142452 100644 --- a/sandbox/servers/mariadb/10.1/my.sandbox.cnf +++ b/sandbox/servers/mariadb/10.1/my.sandbox.cnf @@ -26,4 +26,4 @@ log-error = /tmp/PORT/data/mysqld.log innodb_lock_wait_timeout = 3 general_log general_log_file = genlog -performance_schema = on +performance_schema = ON diff --git a/sandbox/servers/mariadb/10.2/data.tar.gz b/sandbox/servers/mariadb/10.2/data.tar.gz new file mode 100644 index 00000000..00cdc4ff Binary files /dev/null and b/sandbox/servers/mariadb/10.2/data.tar.gz differ diff --git a/sandbox/servers/mariadb/10.2/my.sandbox.cnf b/sandbox/servers/mariadb/10.2/my.sandbox.cnf new file mode 100644 index 00000000..cc142452 --- /dev/null +++ b/sandbox/servers/mariadb/10.2/my.sandbox.cnf @@ -0,0 +1,29 @@ +[client] +user = msandbox +password = msandbox +port = PORT +socket = /tmp/PORT/mysql_sandboxPORT.sock + +[mysqld] +port = PORT +socket = /tmp/PORT/mysql_sandboxPORT.sock +pid-file = /tmp/PORT/data/mysql_sandboxPORT.pid +basedir = PERCONA_TOOLKIT_SANDBOX +datadir = /tmp/PORT/data +key_buffer_size = 16M +innodb_buffer_pool_size = 16M +innodb_data_home_dir = /tmp/PORT/data +innodb_log_group_home_dir = /tmp/PORT/data +innodb_data_file_path = ibdata1:10M:autoextend +innodb_log_file_size = 64M +log-bin = mysql-bin +relay_log = mysql-relay-bin +log_slave_updates +server-id = PORT +report-host = 127.0.0.1 +report-port = PORT +log-error = /tmp/PORT/data/mysqld.log +innodb_lock_wait_timeout = 3 +general_log +general_log_file = genlog +performance_schema = ON diff --git a/sandbox/servers/mariadb/10.2/system_idb_tables.sql b/sandbox/servers/mariadb/10.2/system_idb_tables.sql new file mode 100644 index 00000000..c1393192 --- /dev/null +++ b/sandbox/servers/mariadb/10.2/system_idb_tables.sql @@ -0,0 +1,627 @@ +USE `mysql`; + +-- MySQL dump 10.16 Distrib 10.1.21-MariaDB, for Linux (x86_64) +-- +-- Host: localhost Database: localhost +-- ------------------------------------------------------ +-- Server version 10.1.21-MariaDB + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `column_stats` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `column_stats` ( + `db_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `column_name` varchar(64) COLLATE utf8_bin NOT NULL, + `min_value` varbinary(255) DEFAULT NULL, + `max_value` varbinary(255) DEFAULT NULL, + `nulls_ratio` decimal(12,4) DEFAULT NULL, + `avg_length` decimal(12,4) DEFAULT NULL, + `avg_frequency` decimal(12,4) DEFAULT NULL, + `hist_size` tinyint(3) unsigned DEFAULT NULL, + `hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') COLLATE utf8_bin DEFAULT NULL, + `histogram` varbinary(255) DEFAULT NULL, + PRIMARY KEY (`db_name`,`table_name`,`column_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Columns'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `columns_priv` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `columns_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Column_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `db` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `db` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`Db`,`User`), + KEY `User` (`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `event` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `event` ( + `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `name` char(64) NOT NULL DEFAULT '', + `body` longblob NOT NULL, + `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `execute_at` datetime DEFAULT NULL, + `interval_value` int(11) DEFAULT NULL, + `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `last_executed` datetime DEFAULT NULL, + `starts` datetime DEFAULT NULL, + `ends` datetime DEFAULT NULL, + `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', + `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `originator` int(10) unsigned NOT NULL, + `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', + `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `body_utf8` longblob, + PRIMARY KEY (`db`,`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `func` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `func` ( + `name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `ret` tinyint(1) NOT NULL DEFAULT '0', + `dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '', + `type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `gtid_slave_pos` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `gtid_slave_pos` ( + `domain_id` int(10) unsigned NOT NULL, + `sub_id` bigint(20) unsigned NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `seq_no` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`domain_id`,`sub_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Replication slave GTID position'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `help_category` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `help_category` ( + `help_category_id` smallint(5) unsigned NOT NULL, + `name` char(64) NOT NULL, + `parent_category_id` smallint(5) unsigned DEFAULT NULL, + `url` text NOT NULL, + PRIMARY KEY (`help_category_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help categories'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `help_keyword` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `help_keyword` ( + `help_keyword_id` int(10) unsigned NOT NULL, + `name` char(64) NOT NULL, + PRIMARY KEY (`help_keyword_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help keywords'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `help_relation` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `help_relation` ( + `help_topic_id` int(10) unsigned NOT NULL, + `help_keyword_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`help_keyword_id`,`help_topic_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='keyword-topic relation'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `help_topic` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `help_topic` ( + `help_topic_id` int(10) unsigned NOT NULL, + `name` char(64) NOT NULL, + `help_category_id` smallint(5) unsigned NOT NULL, + `description` text NOT NULL, + `example` text NOT NULL, + `url` text NOT NULL, + PRIMARY KEY (`help_topic_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help topics'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `host` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `host` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`Db`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Host privileges; Merged with database privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `index_stats` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `index_stats` ( + `db_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `index_name` varchar(64) COLLATE utf8_bin NOT NULL, + `prefix_arity` int(11) unsigned NOT NULL, + `avg_frequency` decimal(12,4) DEFAULT NULL, + PRIMARY KEY (`db_name`,`table_name`,`index_name`,`prefix_arity`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Indexes'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `innodb_index_stats` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `innodb_index_stats` ( + `database_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `index_name` varchar(64) COLLATE utf8_bin NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `stat_name` varchar(64) COLLATE utf8_bin NOT NULL, + `stat_value` bigint(20) unsigned NOT NULL, + `sample_size` bigint(20) unsigned DEFAULT NULL, + `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL, + PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `innodb_table_stats` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `innodb_table_stats` ( + `database_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `n_rows` bigint(20) unsigned NOT NULL, + `clustered_index_size` bigint(20) unsigned NOT NULL, + `sum_of_other_index_sizes` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`database_name`,`table_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `plugin` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `plugin` ( + `name` varchar(64) NOT NULL DEFAULT '', + `dl` varchar(128) NOT NULL DEFAULT '', + PRIMARY KEY (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL plugins'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `proc` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `proc` ( + `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `name` char(64) NOT NULL DEFAULT '', + `type` enum('FUNCTION','PROCEDURE') NOT NULL, + `specific_name` char(64) NOT NULL DEFAULT '', + `language` enum('SQL') NOT NULL DEFAULT 'SQL', + `sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL DEFAULT 'CONTAINS_SQL', + `is_deterministic` enum('YES','NO') NOT NULL DEFAULT 'NO', + `security_type` enum('INVOKER','DEFINER') NOT NULL DEFAULT 'DEFINER', + `param_list` blob NOT NULL, + `returns` longblob NOT NULL, + `body` longblob NOT NULL, + `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `body_utf8` longblob, + PRIMARY KEY (`db`,`name`,`type`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `procs_priv` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `procs_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Routine_name` char(64) CHARACTER SET utf8 NOT NULL DEFAULT '', + `Routine_type` enum('FUNCTION','PROCEDURE') COLLATE utf8_bin NOT NULL, + `Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `proxies_priv` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `proxies_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_user` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `With_grant` tinyint(1) NOT NULL DEFAULT '0', + `Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`User`,`Proxied_host`,`Proxied_user`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User proxy privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `roles_mapping` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `roles_mapping` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Admin_option` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + UNIQUE KEY `Host` (`Host`,`User`,`Role`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Granted roles'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `servers` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `servers` ( + `Server_name` char(64) NOT NULL DEFAULT '', + `Host` char(64) NOT NULL DEFAULT '', + `Db` char(64) NOT NULL DEFAULT '', + `Username` char(80) NOT NULL DEFAULT '', + `Password` char(64) NOT NULL DEFAULT '', + `Port` int(4) NOT NULL DEFAULT '0', + `Socket` char(64) NOT NULL DEFAULT '', + `Wrapper` char(64) NOT NULL DEFAULT '', + `Owner` char(64) NOT NULL DEFAULT '', + PRIMARY KEY (`Server_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `table_stats` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `table_stats` ( + `db_name` varchar(64) COLLATE utf8_bin NOT NULL, + `table_name` varchar(64) COLLATE utf8_bin NOT NULL, + `cardinality` bigint(21) unsigned DEFAULT NULL, + PRIMARY KEY (`db_name`,`table_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Tables'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tables_priv` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `tables_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time_zone` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `time_zone` ( + `Time_zone_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Use_leap_seconds` enum('Y','N') NOT NULL DEFAULT 'N', + PRIMARY KEY (`Time_zone_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time_zone_leap_second` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `time_zone_leap_second` ( + `Transition_time` bigint(20) NOT NULL, + `Correction` int(11) NOT NULL, + PRIMARY KEY (`Transition_time`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Leap seconds information for time zones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time_zone_name` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `time_zone_name` ( + `Name` char(64) NOT NULL, + `Time_zone_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`Name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone names'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time_zone_transition` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `time_zone_transition` ( + `Time_zone_id` int(10) unsigned NOT NULL, + `Transition_time` bigint(20) NOT NULL, + `Transition_type_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`Time_zone_id`,`Transition_time`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transitions'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time_zone_transition_type` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `time_zone_transition_type` ( + `Time_zone_id` int(10) unsigned NOT NULL, + `Transition_type_id` int(10) unsigned NOT NULL, + `Offset` int(11) NOT NULL DEFAULT '0', + `Is_DST` tinyint(3) unsigned NOT NULL DEFAULT '0', + `Abbreviation` char(8) NOT NULL DEFAULT '', + PRIMARY KEY (`Time_zone_id`,`Transition_type_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transition types'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `user` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `user` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', + `ssl_cipher` blob NOT NULL, + `x509_issuer` blob NOT NULL, + `x509_subject` blob NOT NULL, + `max_questions` int(11) unsigned NOT NULL DEFAULT '0', + `max_updates` int(11) unsigned NOT NULL DEFAULT '0', + `max_connections` int(11) unsigned NOT NULL DEFAULT '0', + `max_user_connections` int(11) NOT NULL DEFAULT '0', + `plugin` char(64) CHARACTER SET latin1 NOT NULL DEFAULT '', + `authentication_string` text COLLATE utf8_bin NOT NULL, + `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `is_role` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `default_role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', + `max_statement_time` decimal(12,6) NOT NULL DEFAULT '0.000000', + PRIMARY KEY (`Host`,`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `general_log` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `general_log` ( + `event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + `user_host` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `command_type` varchar(64) NOT NULL, + `argument` mediumtext NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `slow_log` +-- + +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE IF NOT EXISTS `slow_log` ( + `start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + `user_host` mediumtext NOT NULL, + `query_time` time(6) NOT NULL, + `lock_time` time(6) NOT NULL, + `rows_sent` int(11) NOT NULL, + `rows_examined` int(11) NOT NULL, + `db` varchar(512) NOT NULL, + `last_insert_id` int(11) NOT NULL, + `insert_id` int(11) NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `sql_text` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL, + `rows_affected` int(11) NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2017-03-10 19:49:04 diff --git a/sandbox/slave_channels.sql b/sandbox/slave_channels.sql new file mode 100644 index 00000000..e65494a9 --- /dev/null +++ b/sandbox/slave_channels.sql @@ -0,0 +1,15 @@ +STOP SLAVE FOR CHANNEL ''; +SET GLOBAL master_info_repository = 'TABLE'; +SET @@GLOBAL.relay_log_info_repository = 'TABLE'; +SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON; +SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; +SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; +SET @@GLOBAL.GTID_MODE = ON; + +CHANGE MASTER TO master_host='127.0.0.1', master_port=12345, master_user='msandbox', master_password='msandbox', master_auto_position=1 FOR CHANNEL 'masterchan1'; + +CHANGE MASTER TO master_host='127.0.0.1', master_port=12346, master_user='msandbox', master_password='msandbox', master_auto_position=1 FOR CHANNEL 'masterchan2'; + +START SLAVE for channel 'masterchan1'; +START SLAVE for channel 'masterchan2'; + diff --git a/sandbox/start-sandbox b/sandbox/start-sandbox index 0a69b00c..7246df8f 100755 --- a/sandbox/start-sandbox +++ b/sandbox/start-sandbox @@ -39,7 +39,9 @@ make_sandbox() { rm -rf /tmp/$port || die "Failed to rm /tmp/$port" mkdir /tmp/$port || die "Failed to mkdir /tmp/$port" cp $PERCONA_TOOLKIT_BRANCH/sandbox/servers/${APP#mysql}/$version/my.sandbox.cnf /tmp/$port - tar xzf $PERCONA_TOOLKIT_BRANCH/sandbox/servers/${APP#mysql}/$version/data.tar.gz -C /tmp/$port + if [ -e $PERCONA_TOOLKIT_BRANCH/sandbox/servers/${APP#mysql}/$version/data.tar.gz ]; then + tar xzf $PERCONA_TOOLKIT_BRANCH/sandbox/servers/${APP#mysql}/$version/data.tar.gz -C /tmp/$port + fi for script in "$PERCONA_TOOLKIT_BRANCH/sandbox/servers/"*; do if [ -f $script ]; then @@ -186,7 +188,7 @@ type=$1 # master, slave or master-master port=$2 # sandbox port number, e.g. 12345 master_port=$3 # master port if slave or master-master -if [ "$type" != "master" ] && [ "$type" != "slave" ] && [ "$type" != "master-master" ] && [ "$type" != "cluster" ]; then +if [ "$type" != "master" ] && [ "$type" != "slave" ] && [ "$type" != "master-master" ] && [ "$type" != "cluster" ] && [ "$type" != "channels" ]; then die "Invalid sandbox type: $type. Valid types are master, slave, and master-master." fi diff --git a/sandbox/test-env b/sandbox/test-env index 22e6f119..4c0bfad7 100755 --- a/sandbox/test-env +++ b/sandbox/test-env @@ -293,10 +293,23 @@ case $opt in exit_status=$((exit_status | $?)) set_mysql_version if [ $exit_status -eq 0 ]; then - ./start-sandbox "${2:-"slave"}" 12346 12345 - exit_status=$((exit_status | $?)) - ./start-sandbox "${2:-"slave"}" 12347 12346 - exit_status=$((exit_status | $?)) + if [ "${2:-""}" = "channels" ] && [ "$MYSQL_VERSION" '>' "5.6" ]; then + ./start-sandbox master 12346 + exit_status=$((exit_status | $?)) + ./start-sandbox master 12347 + exit_status=$((exit_status | $?)) + /tmp/12345/use < $PERCONA_TOOLKIT_BRANCH/sandbox/gtid_on.sql + exit_status=$? + /tmp/12346/use < $PERCONA_TOOLKIT_BRANCH/sandbox/gtid_on.sql + exit_status=$? + /tmp/12347/use < $PERCONA_TOOLKIT_BRANCH/sandbox/slave_channels.sql + exit_status=$? + else + ./start-sandbox "${2:-"slave"}" 12346 12345 + exit_status=$((exit_status | $?)) + ./start-sandbox "${2:-"slave"}" 12347 12346 + exit_status=$((exit_status | $?)) + fi if [ "${2:-""}" = "cluster" ]; then # Bit of magic here. 'start-sandbox cluster new_node old_node' @@ -337,7 +350,7 @@ case $opt in ../util/check-load-data ping=$(/tmp/12345/use -ss -e "SELECT MD5(RAND())") - /tmp/12345/use -e "REPLACE INTO percona_test.sentinel (id, ping) VALUES (1, '$ping')"; + /tmp/12345/use -e "SET AUTOCOMMIT=1; REPLACE INTO percona_test.sentinel (id, ping) VALUES (1, '$ping')"; echo -n "Waiting for replication to finish..." for i in $(_seq 60); do pong=$(/tmp/12347/use -ss -e "SELECT ping FROM percona_test.sentinel WHERE id=1 AND ping='$ping'" 2>/dev/null) diff --git a/src/go/Makefile b/src/go/Makefile index a35d111b..9722b52b 100644 --- a/src/go/Makefile +++ b/src/go/Makefile @@ -1,6 +1,6 @@ GO := go pkgs = $(shell find . -type d -name "pt-mongodb*" -exec basename {} \;) -VERSION="3.0.1" +VERSION="3.0.2" BUILD=$(shell date +%FT%T%z) GOVERSION=$(shell go version | cut --delimiter=" " -f3) @@ -14,19 +14,19 @@ LDFLAGS="-X main.Version=${VERSION} -X main.Build=${BUILD} -X main.GoVersion=${G linux-amd64: @echo "Building linux/amd64 binaries in ${BIN_DIR}" - @cd ${TOP_DIR} && glide install -v + @cd ${TOP_DIR} && glide update -v @$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;) @$(foreach pkg,$(pkgs),GOOS=linux GOARCH=amd64 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);) linux-386: @echo "Building linux/386 binaries in ${BIN_DIR}" - @cd ${TOP_DIR} && glide install -v + @cd ${TOP_DIR} && glide update -v @$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;) @$(foreach pkg,$(pkgs),GOOS=linux GOARCH=386 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);) darwin-amd64: @echo "Building darwin/amd64 binaries in ${BIN_DIR}" - @cd ${TOP_DIR} && glide install -v + @cd ${TOP_DIR} && glide update -v @$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;) @$(foreach pkg,$(pkgs),GOOS=darwin GOARCH=amd64 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);) diff --git a/src/go/lib/tutil/util.go b/src/go/lib/tutil/util.go index 4acda744..3a4caa7e 100644 --- a/src/go/lib/tutil/util.go +++ b/src/go/lib/tutil/util.go @@ -8,6 +8,10 @@ import ( "strings" ) +const ( + updateSamplesEnvVar = "UPDATE_SAMPLES" +) + func RootPath() (string, error) { out, err := exec.Command("git", "rev-parse", "--show-toplevel").Output() if err != nil { @@ -42,14 +46,21 @@ func LoadJson(filename string, destination interface{}) error { func WriteJson(filename string, data interface{}) error { - buf, err := json.Marshal(data) + buf, err := json.MarshalIndent(data, "", " ") if err != nil { return err } - err = ioutil.WriteFile(filename, buf, 0) + err = ioutil.WriteFile(filename, buf, 777) if err != nil { return err } return nil } + +func ShouldUpdateSamples() bool { + if os.Getenv(updateSamplesEnvVar) != "" { + return true + } + return false +} diff --git a/src/go/mongolib/fingerprinter/figerprinter.go b/src/go/mongolib/fingerprinter/figerprinter.go new file mode 100644 index 00000000..3a1c0de2 --- /dev/null +++ b/src/go/mongolib/fingerprinter/figerprinter.go @@ -0,0 +1,115 @@ +package fingerprinter + +import ( + "encoding/json" + "fmt" + "regexp" + "sort" + "strings" + + "github.com/percona/percona-toolkit/src/go/mongolib/util" +) + +var ( + MAX_DEPTH_LEVEL = 10 + DEFAULT_KEY_FILTERS = []string{"^shardVersion$", "^\\$"} +) + +type Fingerprinter interface { + Fingerprint(query map[string]interface{}) (string, error) +} + +type Fingerprint struct { + keyFilters []string +} + +func NewFingerprinter(keyFilters []string) *Fingerprint { + return &Fingerprint{ + keyFilters: keyFilters, + } +} + +// Query is the top level map query element +// Example for MongoDB 3.2+ +// "query" : { +// "find" : "col1", +// "filter" : { +// "s2" : { +// "$lt" : "54701", +// "$gte" : "73754" +// } +// }, +// "sort" : { +// "user_id" : 1 +// } +// } +func (f *Fingerprint) Fingerprint(query map[string]interface{}) (string, error) { + + realQuery, err := util.GetQueryField(query) + if err != nil { + // Try to encode doc.Query as json for prettiness + if buf, err := json.Marshal(realQuery); err == nil { + return "", fmt.Errorf("%v for query %s", err, string(buf)) + } + // If we cannot encode as json, return just the error message without the query + return "", err + } + retKeys := keys(realQuery, f.keyFilters) + + sort.Strings(retKeys) + + // if there is a sort clause in the query, we have to add all fields in the sort + // fields list that are not in the query keys list (retKeys) + if sortKeys, ok := query["sort"]; ok { + if sortKeysMap, ok := sortKeys.(map[string]interface{}); ok { + sortKeys := keys(sortKeysMap, f.keyFilters) + for _, sortKey := range sortKeys { + if !inSlice(sortKey, retKeys) { + retKeys = append(retKeys, sortKey) + } + } + } + } + + return strings.Join(retKeys, ","), nil +} + +func inSlice(str string, list []string) bool { + for _, v := range list { + if v == str { + return true + } + } + return false +} + +func keys(query map[string]interface{}, keyFilters []string) []string { + return getKeys(query, keyFilters, 0) +} + +func getKeys(query map[string]interface{}, keyFilters []string, level int) []string { + ks := []string{} + for key, value := range query { + if shouldSkipKey(key, keyFilters) { + continue + } + ks = append(ks, key) + if m, ok := value.(map[string]interface{}); ok { + level++ + if level <= MAX_DEPTH_LEVEL { + ks = append(ks, getKeys(m, keyFilters, level)...) + } + } + } + sort.Strings(ks) + return ks +} + +func shouldSkipKey(key string, keyFilters []string) bool { + for _, filter := range keyFilters { + if matched, _ := regexp.MatchString(filter, key); matched { + return true + } + } + return false +} diff --git a/src/go/mongolib/profiler/profiler.go b/src/go/mongolib/profiler/profiler.go new file mode 100644 index 00000000..f920a28c --- /dev/null +++ b/src/go/mongolib/profiler/profiler.go @@ -0,0 +1,148 @@ +package profiler + +import ( + "sync" + "time" + + "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/percona-toolkit/src/go/mongolib/stats" + "github.com/percona/percona-toolkit/src/go/pt-mongodb-query-digest/filter" + "github.com/percona/pmgo" +) + +var ( + // DocsBufferSize is the buffer size to store documents from the MongoDB profiler + DocsBufferSize = 100 +) + +type Profiler interface { + GetLastError() error + QueriesChan() chan stats.Queries + TimeoutsChan() <-chan time.Time + Start() + Stop() +} + +type Profile struct { + // dependencies + iterator pmgo.IterManager + filters []filter.Filter + ticker <-chan time.Time + stats Stats + + // internal + queriesChan chan stats.Queries + stopChan chan bool + docsChan chan proto.SystemProfile + timeoutsChan chan time.Time + // For the moment ProcessDoc is exportable to it could be called from the "outside" + // For that reason, we need a mutex to make it thread safe. In the future this func + // will be unexported + countersMapLock sync.Mutex + keyFilters []string + lock sync.Mutex + running bool + lastError error + stopWaitGroup sync.WaitGroup +} + +func NewProfiler(iterator pmgo.IterManager, filters []filter.Filter, ticker <-chan time.Time, stats Stats) Profiler { + return &Profile{ + // dependencies + iterator: iterator, + filters: filters, + ticker: ticker, + stats: stats, + + // internal + docsChan: make(chan proto.SystemProfile, DocsBufferSize), + timeoutsChan: nil, + keyFilters: []string{"^shardVersion$", "^\\$"}, + } +} + +func (p *Profile) GetLastError() error { + return p.lastError +} + +func (p *Profile) QueriesChan() chan stats.Queries { + return p.queriesChan +} + +func (p *Profile) Start() { + p.lock.Lock() + defer p.lock.Unlock() + if !p.running { + p.running = true + p.queriesChan = make(chan stats.Queries) + p.stopChan = make(chan bool) + go p.getData() + } +} + +func (p *Profile) Stop() { + p.lock.Lock() + defer p.lock.Unlock() + if p.running { + select { + case p.stopChan <- true: + default: + } + // Wait for getData to receive the stop signal + p.stopWaitGroup.Wait() + } +} + +func (p *Profile) TimeoutsChan() <-chan time.Time { + if p.timeoutsChan == nil { + p.timeoutsChan = make(chan time.Time) + } + return p.timeoutsChan +} + +func (p *Profile) getData() { + go p.getDocs() + p.stopWaitGroup.Add(1) + +MAIN_GETDATA_LOOP: + for { + select { + case <-p.ticker: + p.queriesChan <- p.stats.Queries() + p.stats.Reset() + case <-p.stopChan: + // Close the iterator to break the loop on getDocs + p.iterator.Close() + break MAIN_GETDATA_LOOP + } + } + p.stopWaitGroup.Done() +} + +func (p *Profile) getDocs() { + var doc proto.SystemProfile + + for p.iterator.Next(&doc) || p.iterator.Timeout() { + if p.iterator.Timeout() { + if p.timeoutsChan != nil { + p.timeoutsChan <- time.Now().UTC() + } + continue + } + valid := true + for _, filter := range p.filters { + if filter(doc) == false { + valid = false + break + } + } + if !valid { + continue + } + if len(doc.Query) > 0 { + p.stats.Add(doc) + } + } + p.queriesChan <- p.stats.Queries() + p.Stop() +} diff --git a/src/go/mongolib/profiler/profiler_test.go b/src/go/mongolib/profiler/profiler_test.go new file mode 100644 index 00000000..c3289396 --- /dev/null +++ b/src/go/mongolib/profiler/profiler_test.go @@ -0,0 +1,368 @@ +package profiler + +import ( + "fmt" + "log" + "os" + "reflect" + "testing" + "time" + + "github.com/golang/mock/gomock" + "github.com/percona/percona-toolkit/src/go/lib/tutil" + "github.com/percona/percona-toolkit/src/go/mongolib/fingerprinter" + "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/percona-toolkit/src/go/mongolib/stats" + "github.com/percona/percona-toolkit/src/go/pt-mongodb-query-digest/filter" + "github.com/percona/pmgo/pmgomock" +) + +const ( + samples = "/src/go/tests/" +) + +type testVars struct { + RootPath string +} + +var vars testVars + +func parseDate(dateStr string) time.Time { + date, _ := time.Parse(time.RFC3339Nano, dateStr) + return date +} + +func TestMain(m *testing.M) { + var err error + if vars.RootPath, err = tutil.RootPath(); err != nil { + log.Printf("cannot get root path: %s", err.Error()) + os.Exit(1) + } + os.Exit(m.Run()) +} + +func TestRegularIterator(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + iter := pmgomock.NewMockIterManager(ctrl) + gomock.InOrder( + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[0]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[1]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).Return(false), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Close(), + ) + filters := []filter.Filter{} + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := NewProfiler(iter, filters, nil, s) + + firstSeen, _ := time.Parse(time.RFC3339Nano, "2017-04-01T23:01:19.914+00:00") + lastSeen, _ := time.Parse(time.RFC3339Nano, "2017-04-01T23:01:20.214+00:00") + want := stats.Queries{ + { + ID: "c6466139b21c392acd0699e863b50d81", + Namespace: "samples.col1", + Operation: "query", + Query: map[string]interface{}{ + "find": "col1", + "shardVersion": []interface{}{float64(0), "000000000000000000000000"}, + }, + Fingerprint: "find", + FirstSeen: firstSeen, + LastSeen: lastSeen, + TableScan: false, + Count: 2, + NReturned: []float64{50, 75}, + NScanned: []float64{100, 75}, + QueryTime: []float64{0, 1}, + ResponseLength: []float64{1.06123e+06, 1.06123e+06}, + }, + } + prof.Start() + select { + case queries := <-prof.QueriesChan(): + if !reflect.DeepEqual(queries, want) { + t.Errorf("invalid queries. \nGot: %#v,\nWant: %#v\n", queries, want) + } + case <-time.After(2 * time.Second): + t.Error("Didn't get any query") + } +} + +func TestIteratorTimeout(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + iter := pmgomock.NewMockIterManager(ctrl) + gomock.InOrder( + iter.EXPECT().Next(gomock.Any()).Return(true), + iter.EXPECT().Timeout().Return(true), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[1]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).Return(false), + iter.EXPECT().Timeout().Return(false), + // When there are no more docs, iterator will close + iter.EXPECT().Close(), + ) + filters := []filter.Filter{} + + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := NewProfiler(iter, filters, nil, s) + + firstSeen, _ := time.Parse(time.RFC3339Nano, "2017-04-01T23:01:19.914+00:00") + lastSeen, _ := time.Parse(time.RFC3339Nano, "2017-04-01T23:01:19.914+00:00") + want := stats.Queries{ + { + ID: "c6466139b21c392acd0699e863b50d81", + Namespace: "samples.col1", + Operation: "query", + Query: map[string]interface{}{ + "find": "col1", + "shardVersion": []interface{}{float64(0), "000000000000000000000000"}, + }, + Fingerprint: "find", + FirstSeen: firstSeen, + LastSeen: lastSeen, + TableScan: false, + Count: 1, + NReturned: []float64{75}, + NScanned: []float64{75}, + QueryTime: []float64{1}, + ResponseLength: []float64{1.06123e+06}, + }, + } + + prof.Start() + gotTimeout := false + + // Get a timeout + select { + case <-prof.TimeoutsChan(): + gotTimeout = true + case <-prof.QueriesChan(): + t.Error("Got queries before timeout") + case <-time.After(2 * time.Second): + t.Error("Timeout checking timeout") + } + if !gotTimeout { + t.Error("Didn't get a timeout") + } + + // After the first document returned a timeout, we should still receive the second document + select { + case queries := <-prof.QueriesChan(): + if !reflect.DeepEqual(queries, want) { + t.Errorf("invalid queries. \nGot: %#v,\nWant: %#v\n", queries, want) + } + case <-time.After(2 * time.Second): + t.Error("Didn't get any query after 2 seconds") + } + + prof.Stop() +} + +func TestTailIterator(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + sleep := func(param interface{}) { + time.Sleep(1500 * time.Millisecond) + } + + iter := pmgomock.NewMockIterManager(ctrl) + gomock.InOrder( + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[0]).Return(true), + iter.EXPECT().Timeout().Return(false), + // A Tail iterator will wait if the are no available docs. + // Do a 1500 ms sleep before returning the second doc to simulate a tail wait + // and to let the ticker tick + iter.EXPECT().Next(gomock.Any()).Do(sleep).SetArg(0, docs[1]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).Return(false), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Close(), + ) + + filters := []filter.Filter{} + ticker := time.NewTicker(time.Second) + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := NewProfiler(iter, filters, ticker.C, s) + + want := stats.Queries{ + { + ID: "c6466139b21c392acd0699e863b50d81", + Namespace: "samples.col1", + Operation: "query", + Query: map[string]interface{}{ + "find": "col1", + "shardVersion": []interface{}{float64(0), "000000000000000000000000"}, + }, + Fingerprint: "find", + FirstSeen: parseDate("2017-04-01T23:01:20.214+00:00"), + LastSeen: parseDate("2017-04-01T23:01:20.214+00:00"), + TableScan: false, + Count: 1, + NReturned: []float64{50}, + NScanned: []float64{100}, + QueryTime: []float64{0}, + ResponseLength: []float64{1.06123e+06}, + }, + { + ID: "c6466139b21c392acd0699e863b50d81", + Namespace: "samples.col1", + Operation: "query", + Query: map[string]interface{}{ + "find": "col1", + "shardVersion": []interface{}{float64(0), "000000000000000000000000"}, + }, + Fingerprint: "find", + FirstSeen: parseDate("2017-04-01T23:01:19.914+00:00"), + LastSeen: parseDate("2017-04-01T23:01:19.914+00:00"), + TableScan: false, + Count: 1, + NReturned: []float64{75}, + NScanned: []float64{75}, + QueryTime: []float64{1}, + ResponseLength: []float64{1.06123e+06}, + }, + } + prof.Start() + index := 0 + // Since the mocked iterator has a Sleep(1500 ms) between Next methods calls, + // we are going to have two ticker ticks and on every tick it will return one document. + for index < 2 { + select { + case queries := <-prof.QueriesChan(): + if !reflect.DeepEqual(queries, stats.Queries{want[index]}) { + t.Errorf("invalid queries. \nGot: %#v,\nWant: %#v\n", queries, want) + } + index++ + } + } +} + +func TestCalcStats(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs_stats.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + want := []stats.QueryStats{} + err = tutil.LoadJson(vars.RootPath+samples+"profiler_docs_stats.want.json", &want) + if err != nil { + t.Fatalf("cannot load expected results: %s", err.Error()) + } + + iter := pmgomock.NewMockIterManager(ctrl) + gomock.InOrder( + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[0]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[1]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[2]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).Return(false), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Close(), + ) + + filters := []filter.Filter{} + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := NewProfiler(iter, filters, nil, s) + + prof.Start() + select { + case queries := <-prof.QueriesChan(): + s := queries.CalcQueriesStats(1) + if os.Getenv("UPDATE_SAMPLES") != "" { + tutil.WriteJson(vars.RootPath+samples+"profiler_docs_stats.want.json", s) + } + if !reflect.DeepEqual(s, want) { + t.Errorf("Invalid stats.\nGot:%#v\nWant: %#v\n", s, want) + } + case <-time.After(2 * time.Second): + t.Error("Didn't get any query") + } +} + +func TestCalcTotalStats(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs_stats.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + want := stats.QueryStats{} + err = tutil.LoadJson(vars.RootPath+samples+"profiler_docs_total_stats.want.json", &want) + if err != nil && !tutil.ShouldUpdateSamples() { + t.Fatalf("cannot load expected results: %s", err.Error()) + } + + iter := pmgomock.NewMockIterManager(ctrl) + gomock.InOrder( + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[0]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[1]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).SetArg(0, docs[2]).Return(true), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Next(gomock.Any()).Return(false), + iter.EXPECT().Timeout().Return(false), + iter.EXPECT().Close(), + ) + + filters := []filter.Filter{} + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := NewProfiler(iter, filters, nil, s) + + prof.Start() + select { + case queries := <-prof.QueriesChan(): + s := queries.CalcTotalQueriesStats(1) + if os.Getenv("UPDATE_SAMPLES") != "" { + fmt.Println("Updating samples: " + vars.RootPath + samples + "profiler_docs_total_stats.want.json") + err := tutil.WriteJson(vars.RootPath+samples+"profiler_docs_total_stats.want.json", s) + if err != nil { + fmt.Printf("cannot update samples: %s", err.Error()) + } + } + if !reflect.DeepEqual(s, want) { + t.Errorf("Invalid stats.\nGot:%#v\nWant: %#v\n", s, want) + } + case <-time.After(2 * time.Second): + t.Error("Didn't get any query") + } +} diff --git a/src/go/mongolib/profiler/stats.go b/src/go/mongolib/profiler/stats.go new file mode 100644 index 00000000..cf665ce2 --- /dev/null +++ b/src/go/mongolib/profiler/stats.go @@ -0,0 +1,12 @@ +package profiler + +import ( + "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/percona-toolkit/src/go/mongolib/stats" +) + +type Stats interface { + Reset() + Add(doc proto.SystemProfile) error + Queries() stats.Queries +} diff --git a/src/go/mongolib/proto/oplog.go b/src/go/mongolib/proto/oplog.go index b0cd2dab..371f13cd 100644 --- a/src/go/mongolib/proto/oplog.go +++ b/src/go/mongolib/proto/oplog.go @@ -41,11 +41,13 @@ func (s OpLogs) Less(i, j int) bool { } type OplogRow struct { - H int64 `bson:"h"` - V int64 `bson:"v"` - Op string `bson:"op"` - O bson.M `bson:"o"` - Ts int64 `bson:"ts"` + Timestamp int64 `bson:"ts,omitempty"` + HistoryId int64 `bson:"h,omitempty"` + Version int64 `bson:"v,omitempty"` + Operation string `bson:"op,omitempty"` + Namespace string `bson:"ns,omitempty"` + Object bson.D `bson:"o,omitempty"` + Query bson.D `bson:"o2,omitempty"` } type OplogColStats struct { diff --git a/src/go/mongolib/proto/replconfig.go b/src/go/mongolib/proto/replconfig.go new file mode 100644 index 00000000..8ce984d2 --- /dev/null +++ b/src/go/mongolib/proto/replconfig.go @@ -0,0 +1,50 @@ +package proto + +import ( + "gopkg.in/mgo.v2/bson" +) + +type ReplicaSetConfigTags map[string]string +type GetLastErrorModes map[string]*ReplicaSetConfigTags + +// https://docs.mongodb.com/v3.2/reference/command/getLastError/#dbcmd.getLastError +type GetLastErrorDefaults struct { + Journal bool `bson:"j,omitempty"` // If true, wait for the next journal commit before returning, rather than waiting for a full disk flush. + WriteConcern int64 `bson:"w,omitempty"` // When running with replication, this is the number of servers to replicate to before returning. + WTimeout int64 `bson:"wtimeout,omitempty"` // Optional. Milliseconds. Specify a value in milliseconds to control how long to wait for write propagation to complete. +} + +// https://docs.mongodb.com/v3.2/reference/replica-configuration/#rsconf.members +type ReplicaSetConfigMember struct { + ID int64 `bson:"_id,omitempty"` // An integer identifier of every member in the replica set. + Host string `bson:"host,omitempty"` // The hostname and, if specified, the port number, of the set member. + ArbiterOnly bool `bson:"arbiterOnly,omitempty"` // A boolean that identifies an arbiter. A value of true indicates that the member is an arbiter. + BuildIndexes bool `bson:"buildIndexes,omitempty"` // A boolean that indicates whether the mongod builds indexes on this member. + Hidden bool `bson:"hidden,omitempty"` // When this value is true, the replica set hides this instance and does not include the member in the output of db.isMaster() or isMaster. + Priority int64 `bson:"priority,omitempty"` // A number that indicates the relative eligibility of a member to become a primary. + Tags *ReplicaSetConfigTags `bson:"tags,omitempty"` // A tag set document containing mappings of arbitrary keys and values. + SlaveDelay int64 `bson:"slaveDelay,omitempty"` // The number of seconds “behind” the primary that this replica set member should “lag”. + Votes int64 `bson:"votes,omitempty"` // The number of votes a server will cast in a replica set election. +} + +// https://docs.mongodb.com/v3.2/reference/replica-configuration/#rsconf.settings +type ReplicaSetConfigSettings struct { + ChainingAllowed bool `bson:"chainingAllowed,omitempty"` // When chainingAllowed is true, the replica set allows secondary members to replicate from other secondary members. + HeartbeatTimeoutSecs int64 `bson:"heartbeatTimeoutSecs,omitempty"` // Number of seconds that the replica set members wait for a successful heartbeat from each other. + HeartbeatIntervalMillis int64 `bson:"heartbeatIntervalMillis,omitempty"` // The frequency in milliseconds of the heartbeats. + ElectionTimeoutMillis int64 `bson:"electionTimeoutMillis,omitempty"` // The time limit in milliseconds for detecting when a replica set’s primary is unreachable. + GetLastErrorDefaults *GetLastErrorDefaults `bson:"getLastErrorDefaults,omitempty"` // A document that specifies the write concern for the replica set. + GetLastErrorModes *GetLastErrorModes `bson:"getLastErrorModes,omitempty"` // A document used to define an extended write concern through the use of members[n].tags. + ReplicaSetId *bson.ObjectId `bson:"replicaSetId,omitempty"` // Replset Id (ObjectId) +} + +type ReplicaSetConfig struct { + Config struct { + ID string `bson:"_id,omitempty"` // The name of the replica set. Once set, you cannot change the name of a replica set. + ProtocolVersion int64 `bson:"protocolVersion,omitempty"` // By default, new replica sets in MongoDB 3.2 use protocolVersion: 1. Previous versions of MongoDB use version 0. + Version int64 `bson:"version,omitempty"` // An incrementing number used to distinguish revisions of the replica set configuration object from previous iterations. + Members []*ReplicaSetConfigMember `bson:"members,omitempty"` // An array of member configuration documents, one for each member of the replica set. + Settings *ReplicaSetConfigSettings `bson:"settings,omitempty"` // A document that contains configuration options that apply to the whole replica set. + } `bson:"config,omitempty"` // https://docs.mongodb.com/v3.2/reference/replica-configuration/#replica-set-configuration-fields + Ok int64 `bson:"ok,omitempty"` +} diff --git a/src/go/mongolib/stats/stats.go b/src/go/mongolib/stats/stats.go new file mode 100644 index 00000000..e7c38b84 --- /dev/null +++ b/src/go/mongolib/stats/stats.go @@ -0,0 +1,309 @@ +package stats + +import ( + "crypto/md5" + "encoding/json" + "fmt" + "sync" + "time" + + "github.com/montanaflynn/stats" + "github.com/percona/percona-toolkit/src/go/mongolib/fingerprinter" + "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/percona-toolkit/src/go/mongolib/util" +) + +type StatsError struct { + error +} + +func (e *StatsError) Error() string { + if e == nil { + return "" + } + + return fmt.Sprintf("stats error: %s", e.error) +} + +func (e *StatsError) Parent() error { + return e.error +} + +type StatsFingerprintError StatsError +type StatsGetQueryFieldError StatsError + +// New creates new instance of stats with given fingerprinter +func New(fingerprinter fingerprinter.Fingerprinter) *Stats { + s := &Stats{ + fingerprinter: fingerprinter, + } + + s.Reset() + return s +} + +// Stats is a collection of MongoDB statistics +type Stats struct { + // dependencies + fingerprinter fingerprinter.Fingerprinter + + // internal + queryInfoAndCounters map[GroupKey]*QueryInfoAndCounters + sync.RWMutex +} + +// Reset clears the collection of statistics +func (s *Stats) Reset() { + s.Lock() + defer s.Unlock() + + s.queryInfoAndCounters = make(map[GroupKey]*QueryInfoAndCounters) +} + +// Add adds proto.SystemProfile to the collection of statistics +func (s *Stats) Add(doc proto.SystemProfile) error { + fp, err := s.fingerprinter.Fingerprint(doc.Query) + if err != nil { + return &StatsFingerprintError{err} + } + var qiac *QueryInfoAndCounters + var ok bool + + key := GroupKey{ + Operation: doc.Op, + Fingerprint: fp, + Namespace: doc.Ns, + } + if qiac, ok = s.getQueryInfoAndCounters(key); !ok { + realQuery, err := util.GetQueryField(doc.Query) + if err != nil { + return &StatsGetQueryFieldError{err} + } + qiac = &QueryInfoAndCounters{ + ID: fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%s", key)))), + Operation: doc.Op, + Fingerprint: fp, + Namespace: doc.Ns, + TableScan: false, + Query: realQuery, + } + s.setQueryInfoAndCounters(key, qiac) + } + qiac.Count++ + qiac.NScanned = append(qiac.NScanned, float64(doc.DocsExamined)) + qiac.NReturned = append(qiac.NReturned, float64(doc.Nreturned)) + qiac.QueryTime = append(qiac.QueryTime, float64(doc.Millis)) + qiac.ResponseLength = append(qiac.ResponseLength, float64(doc.ResponseLength)) + var zeroTime time.Time + if qiac.FirstSeen == zeroTime || qiac.FirstSeen.After(doc.Ts) { + qiac.FirstSeen = doc.Ts + } + if qiac.LastSeen == zeroTime || qiac.LastSeen.Before(doc.Ts) { + qiac.LastSeen = doc.Ts + } + + return nil +} + +// Queries returns all collected statistics +func (s *Stats) Queries() Queries { + s.RLock() + defer s.RUnlock() + + queries := []QueryInfoAndCounters{} + for _, v := range s.queryInfoAndCounters { + queries = append(queries, *v) + } + return queries +} + +func (s *Stats) getQueryInfoAndCounters(key GroupKey) (*QueryInfoAndCounters, bool) { + s.RLock() + defer s.RUnlock() + + v, ok := s.queryInfoAndCounters[key] + return v, ok +} + +func (s *Stats) setQueryInfoAndCounters(key GroupKey, value *QueryInfoAndCounters) { + s.Lock() + defer s.Unlock() + + s.queryInfoAndCounters[key] = value +} + +// Queries is a slice of MongoDB statistics +type Queries []QueryInfoAndCounters + +// CalcQueriesStats calculates QueryStats for given uptime +func (q Queries) CalcQueriesStats(uptime int64) []QueryStats { + qs := []QueryStats{} + tc := calcTotalCounters(q) + + for _, query := range q { + queryStats := countersToStats(query, uptime, tc) + qs = append(qs, queryStats) + } + + return qs +} + +// CalcTotalQueriesStats calculates total QueryStats for given uptime +func (q Queries) CalcTotalQueriesStats(uptime int64) QueryStats { + tc := calcTotalCounters(q) + + totalQueryInfoAndCounters := aggregateCounters(q) + totalStats := countersToStats(totalQueryInfoAndCounters, uptime, tc) + + return totalStats +} + +type QueryInfoAndCounters struct { + ID string + Namespace string + Operation string + Query map[string]interface{} + Fingerprint string + FirstSeen time.Time + LastSeen time.Time + TableScan bool + + Count int + BlockedTime Times + LockTime Times + NReturned []float64 + NScanned []float64 + QueryTime []float64 // in milliseconds + ResponseLength []float64 +} + +// times is an array of time.Time that implements the Sorter interface +type Times []time.Time + +func (a Times) Len() int { return len(a) } +func (a Times) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a Times) Less(i, j int) bool { return a[i].Before(a[j]) } + +type GroupKey struct { + Operation string + Fingerprint string + Namespace string +} + +type totalCounters struct { + Count int + Scanned float64 + Returned float64 + QueryTime float64 + Bytes float64 +} + +type QueryStats struct { + ID string + Namespace string + Operation string + Query string + Fingerprint string + FirstSeen time.Time + LastSeen time.Time + + Count int + QPS float64 + Rank int + Ratio float64 + QueryTime Statistics + ResponseLength Statistics + Returned Statistics + Scanned Statistics +} + +type Statistics struct { + Pct float64 + Total float64 + Min float64 + Max float64 + Avg float64 + Pct95 float64 + StdDev float64 + Median float64 +} + +func countersToStats(query QueryInfoAndCounters, uptime int64, tc totalCounters) QueryStats { + buf, _ := json.Marshal(query.Query) + queryStats := QueryStats{ + Count: query.Count, + ID: query.ID, + Operation: query.Operation, + Query: string(buf), + Fingerprint: query.Fingerprint, + Scanned: calcStats(query.NScanned), + Returned: calcStats(query.NReturned), + QueryTime: calcStats(query.QueryTime), + ResponseLength: calcStats(query.ResponseLength), + FirstSeen: query.FirstSeen, + LastSeen: query.LastSeen, + Namespace: query.Namespace, + QPS: float64(query.Count) / float64(uptime), + } + if tc.Scanned > 0 { + queryStats.Scanned.Pct = queryStats.Scanned.Total * 100 / tc.Scanned + } + if tc.Returned > 0 { + queryStats.Returned.Pct = queryStats.Returned.Total * 100 / tc.Returned + } + if tc.QueryTime > 0 { + queryStats.QueryTime.Pct = queryStats.QueryTime.Total * 100 / tc.QueryTime + } + if tc.Bytes > 0 { + queryStats.ResponseLength.Pct = queryStats.ResponseLength.Total / tc.Bytes + } + if queryStats.Returned.Total > 0 { + queryStats.Ratio = queryStats.Scanned.Total / queryStats.Returned.Total + } + + return queryStats +} + +func aggregateCounters(queries []QueryInfoAndCounters) QueryInfoAndCounters { + qt := QueryInfoAndCounters{} + for _, query := range queries { + qt.NScanned = append(qt.NScanned, query.NScanned...) + qt.NReturned = append(qt.NReturned, query.NReturned...) + qt.QueryTime = append(qt.QueryTime, query.QueryTime...) + qt.ResponseLength = append(qt.ResponseLength, query.ResponseLength...) + } + return qt +} + +func calcTotalCounters(queries []QueryInfoAndCounters) totalCounters { + tc := totalCounters{} + + for _, query := range queries { + tc.Count += query.Count + + scanned, _ := stats.Sum(query.NScanned) + tc.Scanned += scanned + + returned, _ := stats.Sum(query.NReturned) + tc.Returned += returned + + queryTime, _ := stats.Sum(query.QueryTime) + tc.QueryTime += queryTime + + bytes, _ := stats.Sum(query.ResponseLength) + tc.Bytes += bytes + } + return tc +} + +func calcStats(samples []float64) Statistics { + var s Statistics + s.Total, _ = stats.Sum(samples) + s.Min, _ = stats.Min(samples) + s.Max, _ = stats.Max(samples) + s.Avg, _ = stats.Mean(samples) + s.Pct95, _ = stats.PercentileNearestRank(samples, 95) + s.StdDev, _ = stats.StandardDeviation(samples) + s.Median, _ = stats.Median(samples) + return s +} diff --git a/src/go/mongolib/stats/stats_test.go b/src/go/mongolib/stats/stats_test.go new file mode 100644 index 00000000..d1e4b3f8 --- /dev/null +++ b/src/go/mongolib/stats/stats_test.go @@ -0,0 +1,166 @@ +package stats + +import ( + "github.com/golang/mock/gomock" + "github.com/percona/percona-toolkit/src/go/lib/tutil" + "github.com/percona/percona-toolkit/src/go/mongolib/fingerprinter" + "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "log" + "os" + "reflect" + "testing" + "time" +) + +const ( + samples = "/src/go/tests/" +) + +type testVars struct { + RootPath string +} + +var vars testVars + +func parseDate(dateStr string) time.Time { + date, _ := time.Parse(time.RFC3339Nano, dateStr) + return date +} + +func TestMain(m *testing.M) { + var err error + if vars.RootPath, err = tutil.RootPath(); err != nil { + log.Printf("cannot get root path: %s", err.Error()) + os.Exit(1) + } + os.Exit(m.Run()) +} + +func TestTimesLen(t *testing.T) { + tests := []struct { + name string + a Times + want int + }{ + { + name: "Times.Len", + a: []time.Time{time.Now()}, + want: 1, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.a.Len(); got != tt.want { + t.Errorf("times.Len() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestTimesSwap(t *testing.T) { + type args struct { + i int + j int + } + t1 := time.Now() + t2 := t1.Add(1 * time.Minute) + tests := []struct { + name string + a Times + args args + }{ + { + name: "Times.Swap", + a: Times{t1, t2}, + args: args{i: 0, j: 1}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.a.Swap(tt.args.i, tt.args.j) + if tt.a[0] != t2 || tt.a[1] != t1 { + t.Errorf("%s has (%v, %v) want (%v, %v)", tt.name, tt.a[0], tt.a[1], t2, t1) + } + }) + } +} + +func TestTimesLess(t *testing.T) { + type args struct { + i int + j int + } + t1 := time.Now() + t2 := t1.Add(1 * time.Minute) + tests := []struct { + name string + a Times + args args + want bool + }{ + { + name: "Times.Swap", + a: Times{t1, t2}, + args: args{i: 0, j: 1}, + want: true, + }, + { + name: "Times.Swap", + a: Times{t2, t1}, + args: args{i: 0, j: 1}, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.a.Less(tt.args.i, tt.args.j); got != tt.want { + t.Errorf("times.Less() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestStats(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + docs := []proto.SystemProfile{} + err := tutil.LoadJson(vars.RootPath+samples+"profiler_docs_stats.json", &docs) + if err != nil { + t.Fatalf("cannot load samples: %s", err.Error()) + } + + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := New(fp) + + err = s.Add(docs[1]) + if err != nil { + t.Errorf("Error processing doc: %s\n", err.Error()) + } + statsVal := QueryInfoAndCounters{ + ID: "84e09ef6a3dc35f472df05fa98eee7d3", + Namespace: "samples.col1", + Operation: "query", + Query: map[string]interface{}{"s2": map[string]interface{}{"$gte": "41991", "$lt": "33754"}}, + Fingerprint: "s2", + FirstSeen: parseDate("2017-04-10T13:15:53.532-03:00"), + LastSeen: parseDate("2017-04-10T13:15:53.532-03:00"), + TableScan: false, + Count: 1, + BlockedTime: nil, + LockTime: nil, + NReturned: []float64{0}, + NScanned: []float64{10000}, + QueryTime: []float64{7}, + ResponseLength: []float64{215}, + } + + want := Queries{ + statsVal, + } + got := s.Queries() + + if !reflect.DeepEqual(got, want) { + t.Errorf("Error \nGot:%#v\nWant: %#v\n", got, want) + } +} diff --git a/src/go/mongolib/util/main_test.go b/src/go/mongolib/util/main_test.go index 9521e6fb..60de575e 100644 --- a/src/go/mongolib/util/main_test.go +++ b/src/go/mongolib/util/main_test.go @@ -4,13 +4,13 @@ import ( "reflect" "testing" - mgo "gopkg.in/mgo.v2" - "gopkg.in/mgo.v2/bson" - "github.com/golang/mock/gomock" "github.com/percona/percona-toolkit/src/go/lib/tutil" "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/pmgo" "github.com/percona/pmgo/pmgomock" + "gopkg.in/mgo.v2" + "gopkg.in/mgo.v2/bson" ) // OK @@ -145,9 +145,7 @@ func TestGetReplicasetMembers(t *testing.T) { database.EXPECT().Run(bson.D{{"serverStatus", 1}, {"recordStats", 1}}, gomock.Any()).SetArg(1, ss) session.EXPECT().Close() - session.EXPECT().Close() - - di := &mgo.DialInfo{Addrs: []string{"localhost"}} + di := &pmgo.DialInfo{Addrs: []string{"localhost"}} rss, err := GetReplicasetMembers(dialer, di) if err != nil { t.Errorf("getReplicasetMembers: %v", err) @@ -166,26 +164,67 @@ func TestGetHostnames(t *testing.T) { dialer := pmgomock.NewMockDialer(ctrl) session := pmgomock.NewMockSessionManager(ctrl) - mockShardsInfo := proto.ShardsInfo{ - Shards: []proto.Shard{ - proto.Shard{ - ID: "r1", - Host: "r1/localhost:17001,localhost:17002,localhost:17003", - }, - proto.Shard{ - ID: "r2", - Host: "r2/localhost:18001,localhost:18002,localhost:18003", - }, - }, - OK: 1, + mockrss := proto.ReplicaSetStatus{ + Date: "", + MyState: 1, + Term: 0, + HeartbeatIntervalMillis: 0, + Members: []proto.Members{ + proto.Members{ + Optime: nil, + OptimeDate: "", + InfoMessage: "", + ID: 0, + Name: "localhost:17001", + Health: 1, + StateStr: "PRIMARY", + Uptime: 113287, + ConfigVersion: 1, + Self: true, + State: 1, + ElectionTime: 6340960613392449537, + ElectionDate: "", + Set: ""}, + proto.Members{ + Optime: nil, + OptimeDate: "", + InfoMessage: "", + ID: 1, + Name: "localhost:17002", + Health: 1, + StateStr: "SECONDARY", + Uptime: 113031, + ConfigVersion: 1, + Self: false, + State: 2, + ElectionTime: 0, + ElectionDate: "", + Set: ""}, + proto.Members{ + Optime: nil, + OptimeDate: "", + InfoMessage: "", + ID: 2, + Name: "localhost:17003", + Health: 1, + StateStr: "SECONDARY", + Uptime: 113031, + ConfigVersion: 1, + Self: false, + State: 2, + ElectionTime: 0, + ElectionDate: "", + Set: ""}}, + Ok: 1, + Set: "r1", } dialer.EXPECT().DialWithInfo(gomock.Any()).Return(session, nil) - session.EXPECT().Run("getShardMap", gomock.Any()).SetArg(1, mockShardsInfo) - session.EXPECT().Close() + session.EXPECT().SetMode(mgo.Monotonic, true) + session.EXPECT().Run(bson.M{"replSetGetStatus": 1}, gomock.Any()).SetArg(1, mockrss) - expect := []string{"localhost", "localhost:17001", "localhost:18001"} - di := &mgo.DialInfo{Addrs: []string{"localhost"}} + expect := []string{"localhost:17001", "localhost:17002", "localhost:17003"} + di := &pmgo.DialInfo{Addrs: []string{"localhost"}} rss, err := GetHostnames(dialer, di) if err != nil { t.Errorf("getHostnames: %v", err) diff --git a/src/go/mongolib/util/util.go b/src/go/mongolib/util/util.go index a1ba3a1e..259489aa 100644 --- a/src/go/mongolib/util/util.go +++ b/src/go/mongolib/util/util.go @@ -12,6 +12,10 @@ import ( "gopkg.in/mgo.v2/bson" ) +var ( + CANNOT_GET_QUERY_ERROR = errors.New("cannot get query field from the profile document (it is not a map)") +) + func GetReplicasetMembers(dialer pmgo.Dialer, di *pmgo.DialInfo) ([]proto.Members, error) { hostnames, err := GetHostnames(dialer, di) if err != nil { @@ -232,3 +236,22 @@ func GetServerStatus(dialer pmgo.Dialer, di *pmgo.DialInfo, hostname string) (pr return ss, nil } + +func GetQueryField(query map[string]interface{}) (map[string]interface{}, error) { + // MongoDB 3.0 + if squery, ok := query["$query"]; ok { + // just an extra check to ensure this type assertion won't fail + if ssquery, ok := squery.(map[string]interface{}); ok { + return ssquery, nil + } + return nil, CANNOT_GET_QUERY_ERROR + } + // MongoDB 3.2+ + if squery, ok := query["filter"]; ok { + if ssquery, ok := squery.(map[string]interface{}); ok { + return ssquery, nil + } + return nil, CANNOT_GET_QUERY_ERROR + } + return query, nil +} diff --git a/src/go/pt-mongodb-query-digest/filter/filters.go b/src/go/pt-mongodb-query-digest/filter/filters.go new file mode 100644 index 00000000..30f43b39 --- /dev/null +++ b/src/go/pt-mongodb-query-digest/filter/filters.go @@ -0,0 +1,23 @@ +package filter + +import ( + "strings" + + "github.com/percona/percona-toolkit/src/go/mongolib/proto" +) + +type Filter func(proto.SystemProfile) bool + +// This func receives a doc from the profiler and returns: +// true : the document must be considered +// false: the document must be skipped +func NewFilterByCollection(collectionsToSkip []string) func(proto.SystemProfile) bool { + return func(doc proto.SystemProfile) bool { + for _, collection := range collectionsToSkip { + if strings.HasSuffix(doc.Ns, collection) { + return false + } + } + return true + } +} diff --git a/src/go/pt-mongodb-query-digest/main.go b/src/go/pt-mongodb-query-digest/main.go index e2934db9..d6548fe1 100644 --- a/src/go/pt-mongodb-query-digest/main.go +++ b/src/go/pt-mongodb-query-digest/main.go @@ -1,25 +1,23 @@ package main import ( - "crypto/md5" - "encoding/json" - "errors" "fmt" "os" - "regexp" "sort" "strings" "text/template" "time" "github.com/howeyc/gopass" - "github.com/kr/pretty" - "github.com/montanaflynn/stats" "github.com/pborman/getopt" "github.com/percona/percona-toolkit/src/go/lib/config" "github.com/percona/percona-toolkit/src/go/lib/versioncheck" + "github.com/percona/percona-toolkit/src/go/mongolib/fingerprinter" + "github.com/percona/percona-toolkit/src/go/mongolib/profiler" "github.com/percona/percona-toolkit/src/go/mongolib/proto" + "github.com/percona/percona-toolkit/src/go/mongolib/stats" "github.com/percona/percona-toolkit/src/go/mongolib/util" + "github.com/percona/percona-toolkit/src/go/pt-mongodb-query-digest/filter" "github.com/percona/pmgo" log "github.com/sirupsen/logrus" "gopkg.in/mgo.v2" @@ -27,8 +25,7 @@ import ( ) const ( - TOOLNAME = "pt-mongodb-query-digest" - MAX_DEPTH_LEVEL = 10 + TOOLNAME = "pt-mongodb-query-digest" DEFAULT_AUTHDB = "admin" DEFAULT_HOST = "localhost:27017" @@ -41,24 +38,8 @@ var ( Build string = "01-01-1980" GoVersion string = "1.8" Version string = "3.0.1" - - CANNOT_GET_QUERY_ERROR = errors.New("cannot get query field from the profile document (it is not a map)") - - // This is a regexp array to filter out the keys we don't want in the fingerprint - keyFilters = func() []string { - return []string{"^shardVersion$", "^\\$"} - } ) -type iter interface { - All(result interface{}) error - Close() error - Err() error - For(result interface{}, f func() error) (err error) - Next(result interface{}) bool - Timeout() bool -} - type options struct { AuthDB string Database string @@ -77,77 +58,6 @@ type options struct { Version bool } -// This func receives a doc from the profiler and returns: -// true : the document must be considered -// false: the document must be skipped -type docsFilter func(proto.SystemProfile) bool - -type statsArray []stat - -func (a statsArray) Len() int { return len(a) } -func (a statsArray) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a statsArray) Less(i, j int) bool { return a[i].Count < a[j].Count } - -type times []time.Time - -func (a times) Len() int { return len(a) } -func (a times) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a times) Less(i, j int) bool { return a[i].Before(a[j]) } - -type stat struct { - ID string - Operation string - Fingerprint string - Namespace string - Query map[string]interface{} - Count int - TableScan bool - NScanned []float64 - NReturned []float64 - QueryTime []float64 // in milliseconds - ResponseLength []float64 - LockTime times - BlockedTime times - FirstSeen time.Time - LastSeen time.Time -} - -type groupKey struct { - Operation string - Fingerprint string - Namespace string -} - -type statistics struct { - Pct float64 - Total float64 - Min float64 - Max float64 - Avg float64 - Pct95 float64 - StdDev float64 - Median float64 -} - -type queryInfo struct { - Count int - Operation string - Query string - Fingerprint string - FirstSeen time.Time - ID string - LastSeen time.Time - Namespace string - NoVersionCheck bool - QPS float64 - QueryTime statistics - Rank int - Ratio float64 - ResponseLength statistics - Returned statistics - Scanned statistics -} - func main() { opts, err := getOptions() @@ -161,7 +71,8 @@ func main() { logLevel, err := log.ParseLevel(opts.LogLevel) if err != nil { - fmt.Errorf("cannot set log level: %s", err.Error()) + fmt.Printf("Cannot set log level: %s", err.Error()) + os.Exit(1) } log.SetLevel(logLevel) @@ -204,7 +115,7 @@ func main() { os.Exit(4) } - if isProfilerEnabled == false { + if !isProfilerEnabled { count, err := systemProfileDocsCount(session, di.Database) if err != nil || count == 0 { log.Error("Profiler is not enabled") @@ -215,56 +126,43 @@ func main() { fmt.Println("Using those documents for the stats") } - filters := []docsFilter{} + opts.SkipCollections = sanitizeSkipCollections(opts.SkipCollections) + filters := []filter.Filter{} if len(opts.SkipCollections) > 0 { - // Sanitize the param. using --skip-collections="" will produce an 1 element array but - // that element will be empty. The same would be using --skip-collections=a,,d - cols := []string{} - for _, c := range opts.SkipCollections { - if strings.TrimSpace(c) != "" { - cols = append(cols, c) - } - } - if len(cols) > 0 { - // This func receives a doc from the profiler and returns: - // true : the document must be considered - // false: the document must be skipped - filterSystemProfile := func(doc proto.SystemProfile) bool { - for _, collection := range cols { - if strings.HasSuffix(doc.Ns, collection) { - return false - } - } - return true - } - filters = append(filters, filterSystemProfile) - } + filters = append(filters, filter.NewFilterByCollection(opts.SkipCollections)) } query := bson.M{"op": bson.M{"$nin": []string{"getmore", "delete"}}} i := session.DB(di.Database).C("system.profile").Find(query).Sort("-$natural").Iter() - queries := sortQueries(getData(i, filters), opts.OrderBy) + + fp := fingerprinter.NewFingerprinter(fingerprinter.DEFAULT_KEY_FILTERS) + s := stats.New(fp) + prof := profiler.NewProfiler(i, filters, nil, s) + prof.Start() + queries := <-prof.QueriesChan() uptime := uptime(session) + queriesStats := queries.CalcQueriesStats(uptime) + sortedQueryStats := sortQueries(queriesStats, opts.OrderBy) + printHeader(opts) - queryTotals := calcTotalQueryStats(queries, uptime) + queryTotals := queries.CalcTotalQueriesStats(uptime) tt, _ := template.New("query").Funcs(template.FuncMap{ "Format": format, }).Parse(getTotalsTemplate()) tt.Execute(os.Stdout, queryTotals) - queryStats := calcQueryStats(queries, uptime) t, _ := template.New("query").Funcs(template.FuncMap{ "Format": format, }).Parse(getQueryTemplate()) - if opts.Limit > 0 && len(queryStats) > opts.Limit { - queryStats = queryStats[:opts.Limit] + if opts.Limit > 0 && len(sortedQueryStats) > opts.Limit { + sortedQueryStats = sortedQueryStats[:opts.Limit] } - for _, qs := range queryStats { + for _, qs := range sortedQueryStats { t.Execute(os.Stdout, qs) } @@ -306,200 +204,6 @@ func uptime(session pmgo.SessionManager) int64 { return ss.Uptime } -func calcTotalQueryStats(queries []stat, uptime int64) queryInfo { - qi := queryInfo{} - qs := stat{} - _, totalScanned, totalReturned, totalQueryTime, totalBytes := calcTotals(queries) - for _, query := range queries { - qs.NScanned = append(qs.NScanned, query.NScanned...) - qs.NReturned = append(qs.NReturned, query.NReturned...) - qs.QueryTime = append(qs.QueryTime, query.QueryTime...) - qs.ResponseLength = append(qs.ResponseLength, query.ResponseLength...) - qi.Count += query.Count - } - - qi.Scanned = calcStats(qs.NScanned) - qi.Returned = calcStats(qs.NReturned) - qi.QueryTime = calcStats(qs.QueryTime) - qi.ResponseLength = calcStats(qs.ResponseLength) - - if totalScanned > 0 { - qi.Scanned.Pct = qi.Scanned.Total * 100 / totalScanned - } - if totalReturned > 0 { - qi.Returned.Pct = qi.Returned.Total * 100 / totalReturned - } - if totalQueryTime > 0 { - qi.QueryTime.Pct = qi.QueryTime.Total * 100 / totalQueryTime - } - if totalBytes > 0 { - qi.ResponseLength.Pct = qi.ResponseLength.Total / totalBytes - } - if qi.Returned.Total > 0 { - qi.Ratio = qi.Scanned.Total / qi.Returned.Total - } - - return qi -} - -func calcQueryStats(queries []stat, uptime int64) []queryInfo { - queryStats := []queryInfo{} - _, totalScanned, totalReturned, totalQueryTime, totalBytes := calcTotals(queries) - for rank, query := range queries { - buf, _ := json.Marshal(query.Query) - qi := queryInfo{ - Rank: rank, - Count: query.Count, - ID: query.ID, - Operation: query.Operation, - Query: string(buf), - Fingerprint: query.Fingerprint, - Scanned: calcStats(query.NScanned), - Returned: calcStats(query.NReturned), - QueryTime: calcStats(query.QueryTime), - ResponseLength: calcStats(query.ResponseLength), - FirstSeen: query.FirstSeen, - LastSeen: query.LastSeen, - Namespace: query.Namespace, - QPS: float64(query.Count) / float64(uptime), - } - if totalScanned > 0 { - qi.Scanned.Pct = qi.Scanned.Total * 100 / totalScanned - } - if totalReturned > 0 { - qi.Returned.Pct = qi.Returned.Total * 100 / totalReturned - } - if totalQueryTime > 0 { - qi.QueryTime.Pct = qi.QueryTime.Total * 100 / totalQueryTime - } - if totalBytes > 0 { - qi.ResponseLength.Pct = qi.ResponseLength.Total / totalBytes - } - if qi.Returned.Total > 0 { - qi.Ratio = qi.Scanned.Total / qi.Returned.Total - } - queryStats = append(queryStats, qi) - } - return queryStats -} - -func getTotals(queries []stat) stat { - - qt := stat{} - for _, query := range queries { - qt.NScanned = append(qt.NScanned, query.NScanned...) - qt.NReturned = append(qt.NReturned, query.NReturned...) - qt.QueryTime = append(qt.QueryTime, query.QueryTime...) - qt.ResponseLength = append(qt.ResponseLength, query.ResponseLength...) - } - return qt - -} - -func calcTotals(queries []stat) (totalCount int, totalScanned, totalReturned, totalQueryTime, totalBytes float64) { - - for _, query := range queries { - totalCount += query.Count - - scanned, _ := stats.Sum(query.NScanned) - totalScanned += scanned - - returned, _ := stats.Sum(query.NReturned) - totalReturned += returned - - queryTime, _ := stats.Sum(query.QueryTime) - totalQueryTime += queryTime - - bytes, _ := stats.Sum(query.ResponseLength) - totalBytes += bytes - } - return -} - -func calcStats(samples []float64) statistics { - var s statistics - s.Total, _ = stats.Sum(samples) - s.Min, _ = stats.Min(samples) - s.Max, _ = stats.Max(samples) - s.Avg, _ = stats.Mean(samples) - s.Pct95, _ = stats.PercentileNearestRank(samples, 95) - s.StdDev, _ = stats.StandardDeviation(samples) - s.Median, _ = stats.Median(samples) - return s -} - -func getData(i iter, filters []docsFilter) []stat { - var doc proto.SystemProfile - stats := make(map[groupKey]*stat) - - log.Debug(`Documents returned by db.getSiblinfDB("").system.profile.Find({"op": {"$nin": []string{"getmore", "delete"}}).Sort("-$natural")`) - - for i.Next(&doc) && i.Err() == nil { - valid := true - for _, filter := range filters { - if filter(doc) == false { - valid = false - break - } - } - if !valid { - continue - } - - log.Debugln("====================================================================================================") - log.Debug(pretty.Sprint(doc)) - if len(doc.Query) > 0 { - - fp, err := fingerprint(doc.Query) - if err != nil { - log.Errorf("cannot get fingerprint: %s", err.Error()) - continue - } - var s *stat - var ok bool - key := groupKey{ - Operation: doc.Op, - Fingerprint: fp, - Namespace: doc.Ns, - } - if s, ok = stats[key]; !ok { - realQuery, _ := getQueryField(doc.Query) - s = &stat{ - ID: fmt.Sprintf("%x", md5.Sum([]byte(key))), - Operation: doc.Op, - Fingerprint: fp, - Namespace: doc.Ns, - TableScan: false, - Query: realQuery, - } - stats[key] = s - } - s.Count++ - s.NScanned = append(s.NScanned, float64(doc.DocsExamined)) - s.NReturned = append(s.NReturned, float64(doc.Nreturned)) - s.QueryTime = append(s.QueryTime, float64(doc.Millis)) - s.ResponseLength = append(s.ResponseLength, float64(doc.ResponseLength)) - var zeroTime time.Time - if s.FirstSeen == zeroTime || s.FirstSeen.After(doc.Ts) { - s.FirstSeen = doc.Ts - } - if s.LastSeen == zeroTime || s.LastSeen.Before(doc.Ts) { - s.LastSeen = doc.Ts - } - } - } - - // We need to sort the data but a hash cannot be sorted so, convert the hash having - // the results to a slice - sa := statsArray{} - for _, s := range stats { - sa = append(sa, *s) - } - - sort.Sort(sa) - return sa -} - func getOptions() (*options, error) { opts := &options{ Host: DEFAULT_HOST, @@ -600,121 +304,6 @@ func getDialInfo(opts *options) *pmgo.DialInfo { return pmgoDialInfo } -func getQueryField(query map[string]interface{}) (map[string]interface{}, error) { - // MongoDB 3.0 - if squery, ok := query["$query"]; ok { - // just an extra check to ensure this type assertion won't fail - if ssquery, ok := squery.(map[string]interface{}); ok { - return ssquery, nil - } - return nil, CANNOT_GET_QUERY_ERROR - } - // MongoDB 3.2+ - if squery, ok := query["filter"]; ok { - if ssquery, ok := squery.(map[string]interface{}); ok { - return ssquery, nil - } - return nil, CANNOT_GET_QUERY_ERROR - } - return query, nil -} - -// Query is the top level map query element -// Example for MongoDB 3.2+ -// "query" : { -// "find" : "col1", -// "filter" : { -// "s2" : { -// "$lt" : "54701", -// "$gte" : "73754" -// } -// }, -// "sort" : { -// "user_id" : 1 -// } -// } -func fingerprint(query map[string]interface{}) (string, error) { - - realQuery, err := getQueryField(query) - if err != nil { - // Try to encode doc.Query as json for prettiness - if buf, err := json.Marshal(realQuery); err == nil { - return "", fmt.Errorf("%v for query %s", err, string(buf)) - } - // If we cannot encode as json, return just the error message without the query - return "", err - } - retKeys := keys(realQuery, 0) - - sort.Strings(retKeys) - - // if there is a sort clause in the query, we have to add all fields in the sort - // fields list that are not in the query keys list (retKeys) - if sortKeys, ok := query["sort"]; ok { - if sortKeysMap, ok := sortKeys.(map[string]interface{}); ok { - sortKeys := mapKeys(sortKeysMap, 0) - for _, sortKey := range sortKeys { - if !inSlice(sortKey, retKeys) { - retKeys = append(retKeys, sortKey) - } - } - } - } - - return strings.Join(retKeys, ","), nil -} - -func inSlice(str string, list []string) bool { - for _, v := range list { - if v == str { - return true - } - } - return false -} - -func keys(query map[string]interface{}, level int) []string { - ks := []string{} - for key, value := range query { - if shouldSkipKey(key) { - continue - } - ks = append(ks, key) - if m, ok := value.(map[string]interface{}); ok { - level++ - if level <= MAX_DEPTH_LEVEL { - ks = append(ks, keys(m, level)...) - } - } - } - sort.Strings(ks) - return ks -} - -func mapKeys(query map[string]interface{}, level int) []string { - ks := []string{} - for key, value := range query { - ks = append(ks, key) - if m, ok := value.(map[string]interface{}); ok { - level++ - if level <= MAX_DEPTH_LEVEL { - ks = append(ks, keys(m, level)...) - } - } - } - sort.Strings(ks) - return ks -} - -func shouldSkipKey(key string) bool { - for _, filter := range keyFilters() { - if matched, _ := regexp.MatchString(filter, key); matched { - return true - } - } - return false -} - func printHeader(opts *options) { fmt.Printf("%s - %s\n", TOOLNAME, time.Now().Format(time.RFC1123Z)) fmt.Printf("Host: %s\n", opts.Host) @@ -760,15 +349,15 @@ func getTotalsTemplate() string { return t } -type lessFunc func(p1, p2 *stat) bool +type lessFunc func(p1, p2 *stats.QueryStats) bool type multiSorter struct { - queries []stat + queries []stats.QueryStats less []lessFunc } // Sort sorts the argument slice according to the less functions passed to OrderedBy. -func (ms *multiSorter) Sort(queries []stat) { +func (ms *multiSorter) Sort(queries []stats.QueryStats) { ms.queries = queries sort.Sort(ms) } @@ -817,82 +406,62 @@ func (ms *multiSorter) Less(i, j int) bool { return ms.less[k](p, q) } -func sortQueries(queries []stat, orderby []string) []stat { +func sortQueries(queries []stats.QueryStats, orderby []string) []stats.QueryStats { sortFuncs := []lessFunc{} for _, field := range orderby { var f lessFunc switch field { // case "count": - f = func(c1, c2 *stat) bool { + f = func(c1, c2 *stats.QueryStats) bool { return c1.Count < c2.Count } case "-count": - f = func(c1, c2 *stat) bool { + f = func(c1, c2 *stats.QueryStats) bool { return c1.Count > c2.Count } case "ratio": - f = func(c1, c2 *stat) bool { - ns1, _ := stats.Max(c1.NScanned) - ns2, _ := stats.Max(c2.NScanned) - nr1, _ := stats.Max(c1.NReturned) - nr2, _ := stats.Max(c2.NReturned) - ratio1 := ns1 / nr1 - ratio2 := ns2 / nr2 + f = func(c1, c2 *stats.QueryStats) bool { + ratio1 := c1.Scanned.Max / c1.Returned.Max + ratio2 := c2.Scanned.Max / c2.Returned.Max return ratio1 < ratio2 } case "-ratio": - f = func(c1, c2 *stat) bool { - ns1, _ := stats.Max(c1.NScanned) - ns2, _ := stats.Max(c2.NScanned) - nr1, _ := stats.Max(c1.NReturned) - nr2, _ := stats.Max(c2.NReturned) - ratio1 := ns1 / nr1 - ratio2 := ns2 / nr2 + f = func(c1, c2 *stats.QueryStats) bool { + ratio1 := c1.Scanned.Max / c1.Returned.Max + ratio2 := c2.Scanned.Max / c2.Returned.Max return ratio1 > ratio2 } // case "query-time": - f = func(c1, c2 *stat) bool { - qt1, _ := stats.Max(c1.QueryTime) - qt2, _ := stats.Max(c2.QueryTime) - return qt1 < qt2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.QueryTime.Max < c2.QueryTime.Max } case "-query-time": - f = func(c1, c2 *stat) bool { - qt1, _ := stats.Max(c1.QueryTime) - qt2, _ := stats.Max(c2.QueryTime) - return qt1 > qt2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.QueryTime.Max > c2.QueryTime.Max } // case "docs-scanned": - f = func(c1, c2 *stat) bool { - ns1, _ := stats.Max(c1.NScanned) - ns2, _ := stats.Max(c2.NScanned) - return ns1 < ns2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.Scanned.Max < c2.Scanned.Max } case "-docs-scanned": - f = func(c1, c2 *stat) bool { - ns1, _ := stats.Max(c1.NScanned) - ns2, _ := stats.Max(c2.NScanned) - return ns1 > ns2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.Scanned.Max > c2.Scanned.Max } // case "docs-returned": - f = func(c1, c2 *stat) bool { - nr1, _ := stats.Max(c1.NReturned) - nr2, _ := stats.Max(c2.NReturned) - return nr1 < nr2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.Returned.Max < c2.Scanned.Max } case "-docs-returned": - f = func(c1, c2 *stat) bool { - nr1, _ := stats.Max(c1.NReturned) - nr2, _ := stats.Max(c2.NReturned) - return nr1 > nr2 + f = func(c1, c2 *stats.QueryStats) bool { + return c1.Returned.Max > c2.Scanned.Max } } // count,query-time,docs-scanned, docs-returned. - in front of the field name denotes reverse order.") @@ -923,7 +492,7 @@ func isProfilerEnabled(dialer pmgo.Dialer, di *pmgo.DialInfo) (bool, error) { isReplicaEnabled := isReplicasetEnabled(session) - if member.StateStr == "configsvr" { + if strings.ToLower(member.StateStr) == "configsvr" { continue } @@ -933,6 +502,7 @@ func isProfilerEnabled(dialer pmgo.Dialer, di *pmgo.DialInfo) (bool, error) { if err := session.DB(di.Database).Run(bson.M{"profile": -1}, &ps); err != nil { continue } + if ps.Was == 0 { return false, nil } @@ -951,3 +521,17 @@ func isReplicasetEnabled(session pmgo.SessionManager) bool { } return true } + +// Sanitize the param. using --skip-collections="" will produce an 1 element array but +// that element will be empty. The same would be using --skip-collections=a,,d +func sanitizeSkipCollections(skipCollections []string) []string { + cols := []string{} + if len(skipCollections) > 0 { + for _, c := range skipCollections { + if strings.TrimSpace(c) != "" { + cols = append(cols, c) + } + } + } + return cols +} diff --git a/src/go/pt-mongodb-query-digest/main_test.go b/src/go/pt-mongodb-query-digest/main_test.go index 264955ba..8260b180 100644 --- a/src/go/pt-mongodb-query-digest/main_test.go +++ b/src/go/pt-mongodb-query-digest/main_test.go @@ -1,20 +1,15 @@ package main import ( - "encoding/json" - "fmt" "io/ioutil" "os" "reflect" "strings" "testing" - "time" "github.com/pborman/getopt/v2" - "github.com/percona/percona-toolkit/src/go/mongolib/proto" "github.com/percona/pmgo" - mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/dbtest" ) @@ -27,19 +22,6 @@ func TestMain(m *testing.M) { tempDir, _ := ioutil.TempDir("", "testing") Server.SetPath(tempDir) - dat, err := ioutil.ReadFile("test/sample/system.profile.json") - if err != nil { - fmt.Printf("cannot load fixtures: %s", err) - os.Exit(1) - } - - var docs []proto.SystemProfile - err = json.Unmarshal(dat, &docs) - c := Server.Session().DB("samples").C("system_profile") - for _, doc := range docs { - c.Insert(doc) - } - retCode := m.Run() Server.Session().Close() @@ -52,283 +34,6 @@ func TestMain(m *testing.M) { os.Exit(retCode) } -func TestCalcStats(t *testing.T) { - it := Server.Session().DB("samples").C("system_profile").Find(nil).Sort("Ts").Iter() - data := getData(it, []docsFilter{}) - s := calcStats(data[0].NScanned) - - want := statistics{Pct: 0, Total: 159, Min: 79, Max: 80, Avg: 79.5, Pct95: 80, StdDev: 0.5, Median: 79.5} - - if !reflect.DeepEqual(s, want) { - t.Errorf("error in calcStats: got:\n%#v\nwant:\n%#v\n", s, want) - } - - wantTotals := stat{ - ID: "", - Fingerprint: "", - Namespace: "", - Query: map[string]interface{}(nil), - Count: 0, - TableScan: false, - NScanned: []float64{79, 80}, - NReturned: []float64{79, 80}, - QueryTime: []float64{27, 28}, - ResponseLength: []float64{109, 110}, - LockTime: nil, - BlockedTime: nil, - FirstSeen: time.Time{}, - LastSeen: time.Time{}, - } - - totals := getTotals(data[0:1]) - - if !reflect.DeepEqual(totals, wantTotals) { - t.Errorf("error in calcStats: got:\n%#v\nwant:\n:%#v\n", totals, wantTotals) - } - var wantTotalCount int = 2 - var wantTotalScanned, wantTotalReturned, wantTotalQueryTime, wantTotalBytes float64 = 159, 159, 55, 219 - - totalCount, totalScanned, totalReturned, totalQueryTime, totalBytes := calcTotals(data[0:1]) - - if totalCount != wantTotalCount { - t.Errorf("invalid total count. Want %v, got %v\n", wantTotalCount, totalCount) - } - - if totalScanned != wantTotalScanned { - t.Errorf("invalid total count. Want %v, got %v\n", wantTotalScanned, totalScanned) - } - if totalReturned != wantTotalReturned { - t.Errorf("invalid total count. Want %v, got %v\n", wantTotalReturned, totalReturned) - } - if totalQueryTime != wantTotalQueryTime { - t.Errorf("invalid total count. Want %v, got %v\n", wantTotalQueryTime, totalQueryTime) - } - if totalBytes != wantTotalBytes { - t.Errorf("invalid total count. Want %v, got %v\n", wantTotalBytes, totalBytes) - } -} - -func TestGetData(t *testing.T) { - it := Server.Session().DB("samples").C("system_profile").Find(nil).Iter() - tests := []struct { - name string - i iter - want []stat - }{ - { - name: "test 1", - i: it, - want: []stat{ - stat{ - ID: "6c3fff4804febd156700a06f9a346162", - Operation: "query", - Fingerprint: "find,limit", - Namespace: "samples.col1", - Query: map[string]interface{}{"find": "col1", "limit": float64(2)}, - Count: 2, - TableScan: false, - NScanned: []float64{79, 80}, - NReturned: []float64{79, 80}, - QueryTime: []float64{27, 28}, - ResponseLength: []float64{109, 110}, - LockTime: times(nil), - BlockedTime: times(nil), - FirstSeen: time.Date(2016, time.November, 8, 13, 46, 27, 0, time.UTC).Local(), - LastSeen: time.Date(2016, time.November, 8, 13, 46, 27, 0, time.UTC).Local(), - }, - stat{ - ID: "fdcea004122ddb225bc56de417391e25", - Operation: "query", - Fingerprint: "find", - Namespace: "samples.col1", - Query: map[string]interface{}{"find": "col1"}, - Count: 8, - TableScan: false, - NScanned: []float64{71, 72, 73, 74, 75, 76, 77, 78}, - NReturned: []float64{71, 72, 73, 74, 75, 76, 77, 78}, - QueryTime: []float64{19, 20, 21, 22, 23, 24, 25, 26}, - ResponseLength: []float64{101, 102, 103, 104, 105, 106, 107, 108}, - LockTime: times(nil), - BlockedTime: times(nil), - FirstSeen: time.Date(2016, time.November, 8, 13, 46, 27, 0, time.UTC).Local(), - LastSeen: time.Date(2016, time.November, 8, 13, 46, 27, 0, time.UTC).Local(), - }, - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := getData(tt.i, []docsFilter{}) - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("got\n%#v\nwant\n%#v", got, tt.want) - } - }) - } -} - -func TestUptime(t *testing.T) { - - session := pmgo.NewSessionManager(Server.Session()) - time.Sleep(1500 * time.Millisecond) - if uptime(session) <= 0 { - t.Error("uptime is 0") - } - session.Close() - -} - -func TestFingerprint(t *testing.T) { - tests := []struct { - name string - query map[string]interface{} - want string - }{ - { - query: map[string]interface{}{"query": map[string]interface{}{}, "orderby": map[string]interface{}{"ts": -1}}, - want: "orderby,query,ts", - }, - { - query: map[string]interface{}{"find": "system.profile", "filter": map[string]interface{}{}, "sort": map[string]interface{}{"$natural": 1}}, - want: "$natural", - }, - { - - query: map[string]interface{}{"collection": "system.profile", "batchSize": 0, "getMore": 18531768265}, - want: "batchSize,collection,getMore", - }, - /* - Main test case: - Got Query field: - { - "filter": { - "aSampleDate":{ - "$gte":1427846400000, - "$lte":1486511999999}, - "brotherId":"25047dd6f52711e6b3c7c454", - "examined":true, - "sampleResponse.sampleScore.selectedScore":{ - "$in":[5,4,3,2,1] - } - }, - "find": "transModifiedTags", - "ntoreturn":10, - "projection":{ - "$sortKey":{ - "$meta":"sortKey" - } - }, - "shardVersion":[571230652140,"6f7dcd9af52711e6ad7cc454"], - "sort":{"aSampleDate":-1} - } - - Want fingerprint: - aSampleDate,brotherId,examined,sampleResponse.sampleScore.selectedScore - - Why? - 1) It is MongoDb 3.2+ (has filter instead of $query) - 2) From the "filter" map, we are removing all keys starting with $ - 3) The key 'aSampleDate' exists in the "sort" map but it is not in the "filter" keys - so it has been added to the final fingerprint - */ - { - query: map[string]interface{}{"sort": map[string]interface{}{"aSampleDate": -1}, "filter": map[string]interface{}{"aSampleDate": map[string]interface{}{"$gte": 1.4278464e+12, "$lte": 1.486511999999e+12}, "brotherId": "25047dd6f52711e6b3c7c454", "examined": true, "sampleResponse.sampleScore.selectedScore": map[string]interface{}{"$in": []interface{}{5, 4, 3, 2, 1}}}, "find": "transModifiedTags", "ntoreturn": 10, "projection": map[string]interface{}{"$sortKey": map[string]interface{}{"$meta": "sortKey"}}, "shardVersion": []interface{}{5.7123065214e+11, "6f7dcd9af52711e6ad7cc454"}}, - want: "aSampleDate,brotherId,examined,sampleResponse.sampleScore.selectedScore", - }, - } - for i, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got, err := fingerprint(tt.query); got != tt.want || err != nil { - t.Errorf("fingerprint case #%d:\n got %v,\nwant %v\nerror: %v\n", i, got, tt.want, err) - } - }) - } -} - -func TestTimesLen(t *testing.T) { - tests := []struct { - name string - a times - want int - }{ - { - name: "Times.Len", - a: []time.Time{time.Now()}, - want: 1, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := tt.a.Len(); got != tt.want { - t.Errorf("times.Len() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestTimesSwap(t *testing.T) { - type args struct { - i int - j int - } - t1 := time.Now() - t2 := t1.Add(1 * time.Minute) - tests := []struct { - name string - a times - args args - }{ - { - name: "Times.Swap", - a: times{t1, t2}, - args: args{i: 0, j: 1}, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - tt.a.Swap(tt.args.i, tt.args.j) - if tt.a[0] != t2 || tt.a[1] != t1 { - t.Errorf("%s has (%v, %v) want (%v, %v)", tt.name, tt.a[0], tt.a[1], t2, t1) - } - }) - } -} - -func TestTimesLess(t *testing.T) { - type args struct { - i int - j int - } - t1 := time.Now() - t2 := t1.Add(1 * time.Minute) - tests := []struct { - name string - a times - args args - want bool - }{ - { - name: "Times.Swap", - a: times{t1, t2}, - args: args{i: 0, j: 1}, - want: true, - }, - { - name: "Times.Swap", - a: times{t2, t1}, - args: args{i: 0, j: 1}, - want: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := tt.a.Less(tt.args.i, tt.args.j); got != tt.want { - t.Errorf("times.Less() = %v, want %v", got, tt.want) - } - }) - } -} - func TestIsProfilerEnabled(t *testing.T) { mongoDSN := os.Getenv("PT_TEST_MONGODB_DSN") if mongoDSN == "" { @@ -336,7 +41,8 @@ func TestIsProfilerEnabled(t *testing.T) { } dialer := pmgo.NewDialer() - di, _ := mgo.ParseURL(mongoDSN) + di, _ := pmgo.ParseURL(mongoDSN) + enabled, err := isProfilerEnabled(dialer, di) if err != nil { @@ -365,13 +71,17 @@ func TestParseArgs(t *testing.T) { }, { args: []string{TOOLNAME, "zapp.brannigan.net:27018/samples", "--help"}, + want: nil, + }, + { + args: []string{TOOLNAME, "zapp.brannigan.net:27018/samples"}, want: &options{ Host: "zapp.brannigan.net:27018/samples", LogLevel: DEFAULT_LOGLEVEL, OrderBy: strings.Split(DEFAULT_ORDERBY, ","), SkipCollections: strings.Split(DEFAULT_SKIPCOLLECTIONS, ","), AuthDB: DEFAULT_AUTHDB, - Help: true, + Help: false, }, }, } diff --git a/src/go/pt-mongodb-query-digest/test/sample/system.profile.json b/src/go/pt-mongodb-query-digest/test/sample/system.profile.json deleted file mode 100644 index f94abcfd..00000000 --- a/src/go/pt-mongodb-query-digest/test/sample/system.profile.json +++ /dev/null @@ -1,414 +0,0 @@ -[ - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 71, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 71, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 71, - "ResponseLength": 101, - "DocsExamined": 71, - "Millis": 19, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 72, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 72, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 72, - "ResponseLength": 102, - "DocsExamined": 72, - "Millis": 20, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 73, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 73, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 73, - "ResponseLength": 103, - "DocsExamined": 73, - "Millis": 21, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 74, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 74, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 74, - "ResponseLength": 104, - "DocsExamined": 74, - "Millis": 22, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 75, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 75, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 75, - "ResponseLength": 105, - "DocsExamined": 75, - "Millis": 23, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 76, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 76, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 76, - "ResponseLength": 106, - "DocsExamined": 76, - "Millis": 24, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 77, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 77, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 77, - "ResponseLength": 107, - "DocsExamined": 77, - "Millis": 25, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1" - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 78, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 78, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 78, - "ResponseLength": 108, - "DocsExamined": 78, - "Millis": 26, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1", - "limit": 2 - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 79, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 79, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 79, - "ResponseLength": 109, - "DocsExamined": 79, - "Millis": 27, - "NumYield": 2, - "User": "" - }, - { - "Query": { - "find": "col1", - "limit": 2 - }, - "Ts": "2016-11-08T13:46:27.000+00:00", - "Client": "127.0.0.1", - "ExecStats": { - "ExecutionTimeMillisEstimate": 0, - "IsEOF": 0, - "NReturned": 80, - "NeedTime": 1, - "RestoreState": 2, - "Works": 78, - "DocsExamined": 80, - "Direction": "forward", - "Invalidates": 0, - "NeedYield": 2, - "SaveState": 3, - "Stage": "COLLSCAN", - "Advanced": 70 - }, - "Ns": "samples.col1", - "Op": "query", - "WriteConflicts": 0, - "KeyUpdates": 0, - "KeysExamined": 0, - "Locks": { - "Global": "", - "MMAPV1Journal": "", - "Database": "", - "Collection": "", - "Metadata": "", - "Oplog": "" - }, - "Nreturned": 80, - "ResponseLength": 110, - "DocsExamined": 80, - "Millis": 28, - "NumYield": 2, - "User": "" - } -] diff --git a/src/go/pt-mongodb-summary/main.go b/src/go/pt-mongodb-summary/main.go index e272b396..6d90e81c 100644 --- a/src/go/pt-mongodb-summary/main.go +++ b/src/go/pt-mongodb-summary/main.go @@ -1,11 +1,13 @@ package main import ( + "bytes" + "encoding/json" "fmt" + "html/template" "net" "os" "strings" - "text/template" "time" version "github.com/hashicorp/go-version" @@ -33,6 +35,7 @@ const ( DEFAULT_LOGLEVEL = "warn" DEFAULT_RUNNINGOPSINTERVAL = 1000 // milliseconds DEFAULT_RUNNINGOPSSAMPLES = 5 + DEFAULT_OUTPUT_FORMAT = "text" ) var ( @@ -130,12 +133,24 @@ type options struct { Version bool NoVersionCheck bool NoRunningOps bool + OutputFormat string RunningOpsSamples int RunningOpsInterval int SSLCAFile string SSLPEMKeyFile string } +type collectedInfo struct { + BalancerStats *proto.BalancerStats + ClusterWideInfo *clusterwideInfo + OplogInfo []proto.OplogInfo + ReplicaMembers []proto.Members + RunningOps *opCounters + SecuritySettings *security + HostInfo *hostInfo + Errors []string +} + func main() { opts, err := parseFlags() @@ -210,77 +225,105 @@ func main() { defer session.Close() session.SetMode(mgo.Monotonic, true) - hostInfo, err := GetHostinfo(session) + ci := &collectedInfo{} + + ci.HostInfo, err = GetHostinfo(session) if err != nil { message := fmt.Sprintf("Cannot get host info for %q: %s", di.Addrs[0], err.Error()) log.Errorf(message) os.Exit(2) } - if replicaMembers, err := util.GetReplicasetMembers(dialer, di); err != nil { + if ci.ReplicaMembers, err = util.GetReplicasetMembers(dialer, di); err != nil { log.Warnf("[Error] cannot get replicaset members: %v\n", err) os.Exit(2) - } else { - log.Debugf("replicaMembers:\n%+v\n", replicaMembers) - t := template.Must(template.New("replicas").Parse(templates.Replicas)) - t.Execute(os.Stdout, replicaMembers) } - - // Host Info - t := template.Must(template.New("hosttemplateData").Parse(templates.HostInfo)) - t.Execute(os.Stdout, hostInfo) + log.Debugf("replicaMembers:\n%+v\n", ci.ReplicaMembers) if opts.RunningOpsSamples > 0 && opts.RunningOpsInterval > 0 { - if rops, err := GetOpCountersStats(session, opts.RunningOpsSamples, time.Duration(opts.RunningOpsInterval)*time.Millisecond); err != nil { + if ci.RunningOps, err = GetOpCountersStats(session, opts.RunningOpsSamples, time.Duration(opts.RunningOpsInterval)*time.Millisecond); err != nil { log.Printf("[Error] cannot get Opcounters stats: %v\n", err) - } else { - t := template.Must(template.New("runningOps").Parse(templates.RunningOps)) - t.Execute(os.Stdout, rops) } } - if hostInfo != nil { - if security, err := GetSecuritySettings(session, hostInfo.Version); err != nil { + if ci.HostInfo != nil { + if ci.SecuritySettings, err = GetSecuritySettings(session, ci.HostInfo.Version); err != nil { log.Errorf("[Error] cannot get security settings: %v\n", err) - } else { - t := template.Must(template.New("ssl").Parse(templates.Security)) - t.Execute(os.Stdout, security) } } else { log.Warn("Cannot check security settings since host info is not available (permissions?)") } - if oplogInfo, err := oplog.GetOplogInfo(hostnames, di); err != nil { + if ci.OplogInfo, err = oplog.GetOplogInfo(hostnames, di); err != nil { log.Info("Cannot get Oplog info: %v\n", err) } else { - if len(oplogInfo) > 0 { - t := template.Must(template.New("oplogInfo").Parse(templates.Oplog)) - t.Execute(os.Stdout, oplogInfo[0]) - } else { - + if len(ci.OplogInfo) == 0 { log.Info("oplog info is empty. Skipping") + } else { + ci.OplogInfo = ci.OplogInfo[:1] } } // individual servers won't know about this info - if hostInfo.NodeType == "mongos" { - if cwi, err := GetClusterwideInfo(session); err != nil { + if ci.HostInfo.NodeType == "mongos" { + if ci.ClusterWideInfo, err = GetClusterwideInfo(session); err != nil { log.Printf("[Error] cannot get cluster wide info: %v\n", err) - } else { - t := template.Must(template.New("clusterwide").Parse(templates.Clusterwide)) - t.Execute(os.Stdout, cwi) } } - if hostInfo.NodeType == "mongos" { - if bs, err := GetBalancerStats(session); err != nil { + if ci.HostInfo.NodeType == "mongos" { + if ci.BalancerStats, err = GetBalancerStats(session); err != nil { log.Printf("[Error] cannot get balancer stats: %v\n", err) - } else { - t := template.Must(template.New("balancer").Parse(templates.BalancerStats)) - t.Execute(os.Stdout, bs) } } + out, err := formatResults(ci, opts.OutputFormat) + if err != nil { + log.Errorf("Cannot format the results: %s", err.Error()) + os.Exit(1) + } + fmt.Println(string(out)) + +} + +func formatResults(ci *collectedInfo, format string) ([]byte, error) { + var buf *bytes.Buffer + + switch format { + case "json": + b, err := json.MarshalIndent(ci, "", " ") + if err != nil { + return nil, fmt.Errorf("[Error] Cannot convert results to json: %s", err.Error()) + } + buf = bytes.NewBuffer(b) + default: + buf = new(bytes.Buffer) + + t := template.Must(template.New("replicas").Parse(templates.Replicas)) + t.Execute(buf, ci.ReplicaMembers) + + t = template.Must(template.New("hosttemplateData").Parse(templates.HostInfo)) + t.Execute(buf, ci.HostInfo) + + t = template.Must(template.New("runningOps").Parse(templates.RunningOps)) + t.Execute(buf, ci.RunningOps) + + t = template.Must(template.New("ssl").Parse(templates.Security)) + t.Execute(buf, ci.SecuritySettings) + + if ci.OplogInfo != nil && len(ci.OplogInfo) > 0 { + t = template.Must(template.New("oplogInfo").Parse(templates.Oplog)) + t.Execute(buf, ci.OplogInfo[0]) + } + + t = template.Must(template.New("clusterwide").Parse(templates.Clusterwide)) + t.Execute(buf, ci.ClusterWideInfo) + + t = template.Must(template.New("balancer").Parse(templates.BalancerStats)) + t.Execute(buf, ci.BalancerStats) + } + + return buf.Bytes(), nil } func GetHostinfo(session pmgo.SessionManager) (*hostInfo, error) { @@ -472,6 +515,7 @@ func GetSecuritySettings(session pmgo.SessionManager, ver string) (*security, er // Lets try both newSession := session.Clone() defer newSession.Close() + newSession.SetMode(mgo.Strong, true) if s.Users, s.Roles, err = getUserRolesCount(newSession); err != nil { @@ -811,6 +855,7 @@ func parseFlags() (*options, error) { RunningOpsSamples: DEFAULT_RUNNINGOPSSAMPLES, RunningOpsInterval: DEFAULT_RUNNINGOPSINTERVAL, // milliseconds AuthDB: DEFAULT_AUTHDB, + OutputFormat: DEFAULT_OUTPUT_FORMAT, } gop := getopt.New() @@ -821,8 +866,9 @@ func parseFlags() (*options, error) { gop.StringVarLong(&opts.User, "username", 'u', "", "Username to use for optional MongoDB authentication") gop.StringVarLong(&opts.Password, "password", 'p', "", "Password to use for optional MongoDB authentication").SetOptional() gop.StringVarLong(&opts.AuthDB, "authenticationDatabase", 'a', "admin", - "Databaae to use for optional MongoDB authentication. Default: admin") + "Database to use for optional MongoDB authentication. Default: admin") gop.StringVarLong(&opts.LogLevel, "log-level", 'l', "error", "Log level: panic, fatal, error, warn, info, debug. Default: error") + gop.StringVarLong(&opts.OutputFormat, "output-format", 'f', "text", "Output format: text, json. Default: text") gop.IntVarLong(&opts.RunningOpsSamples, "running-ops-samples", 's', fmt.Sprintf("Number of samples to collect for running ops. Default: %d", opts.RunningOpsSamples)) @@ -852,6 +898,9 @@ func parseFlags() (*options, error) { gop.PrintUsage(os.Stdout) return nil, nil } + if opts.OutputFormat != "json" && opts.OutputFormat != "text" { + log.Infof("Invalid output format '%s'. Using text format", opts.OutputFormat) + } return opts, nil } diff --git a/src/go/pt-mongodb-summary/main_test.go b/src/go/pt-mongodb-summary/main_test.go index 28b04ae3..4872d786 100644 --- a/src/go/pt-mongodb-summary/main_test.go +++ b/src/go/pt-mongodb-summary/main_test.go @@ -5,10 +5,10 @@ import ( "io/ioutil" "os" "reflect" - "strings" "testing" "time" + mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/dbtest" @@ -206,6 +206,9 @@ func TestSecurityOpts(t *testing.T) { session.EXPECT().DB("admin").Return(database) database.EXPECT().Run(bson.D{{"getCmdLineOpts", 1}, {"recordStats", 1}}, gomock.Any()).SetArg(1, cmd) + session.EXPECT().Clone().Return(session) + session.EXPECT().SetMode(mgo.Strong, true) + session.EXPECT().DB("admin").Return(database) database.EXPECT().C("system.users").Return(usersCol) usersCol.EXPECT().Count().Return(1, nil) @@ -213,6 +216,7 @@ func TestSecurityOpts(t *testing.T) { session.EXPECT().DB("admin").Return(database) database.EXPECT().C("system.roles").Return(rolesCol) rolesCol.EXPECT().Count().Return(2, nil) + session.EXPECT().Close().Return() got, err := GetSecuritySettings(session, "3.2") @@ -393,29 +397,29 @@ func TestParseArgs(t *testing.T) { { args: []string{TOOLNAME}, // arg[0] is the command itself want: &options{ - Host: DEFAULT_HOST, - LogLevel: DEFAULT_LOGLEVEL, - OrderBy: strings.Split(DEFAULT_ORDERBY, ","), - SkipCollections: strings.Split(DEFAULT_SKIPCOLLECTIONS, ","), - AuthDB: DEFAULT_AUTHDB, + Host: DEFAULT_HOST, + LogLevel: DEFAULT_LOGLEVEL, + AuthDB: DEFAULT_AUTHDB, + RunningOpsSamples: DEFAULT_RUNNINGOPSSAMPLES, + RunningOpsInterval: DEFAULT_RUNNINGOPSINTERVAL, + OutputFormat: "text", }, }, { args: []string{TOOLNAME, "zapp.brannigan.net:27018/samples", "--help"}, - want: &options{ - Host: "zapp.brannigan.net:27018/samples", - LogLevel: DEFAULT_LOGLEVEL, - OrderBy: strings.Split(DEFAULT_ORDERBY, ","), - SkipCollections: strings.Split(DEFAULT_SKIPCOLLECTIONS, ","), - AuthDB: DEFAULT_AUTHDB, - Help: true, - }, + want: nil, }, } + + // Capture stdout to not to show help + old := os.Stdout // keep backup of the real stdout + _, w, _ := os.Pipe() + os.Stdout = w + for i, test := range tests { getopt.Reset() os.Args = test.args - got, err := getOptions() + got, err := parseFlags() if err != nil { t.Errorf("error parsing command line arguments: %s", err.Error()) } @@ -424,4 +428,6 @@ func TestParseArgs(t *testing.T) { } } + os.Stdout = old + } diff --git a/src/go/tests/profiler_docs.json b/src/go/tests/profiler_docs.json new file mode 100644 index 00000000..b4cf06e9 --- /dev/null +++ b/src/go/tests/profiler_docs.json @@ -0,0 +1,164 @@ +[ + { + "AllUsers": [], + "Client": "127.0.0.1", + "CursorExhausted": false, + "DocsExamined": 100, + "ExecStats": { + "Advanced": 75, + "ExecutionTimeMillisEstimate": 0, + "InputStage": { + "Advanced": 0, + "Direction": "", + "DocsExamined": 0, + "ExecutionTimeMillisEstimate": 0, + "Filter": { + "Date": { + "Eq": "" + } + }, + "Invalidates": 0, + "IsEOF": 0, + "NReturned": 0, + "NeedTime": 0, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "", + "Works": 0 + }, + "Invalidates": 0, + "IsEOF": 0, + "LimitAmount": 0, + "NReturned": 50, + "NeedTime": 1, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 1, + "Stage": "COLLSCAN", + "Works": 76 + }, + "KeyUpdates": 0, + "KeysExamined": 0, + "Locks": { + "Collection": { + "AcquireCount": { + "R": 0 + } + }, + "Database": { + "AcquireCount": { + "R": 1 + } + }, + "Global": { + "AcquireCount": { + "R": 2 + } + }, + "MMAPV1Journal": { + "AcquireCount": { + "R": 0 + } + } + }, + "Millis": 0, + "Nreturned": 50, + "Ns": "samples.col1", + "NumYield": 0, + "Op": "query", + "Protocol": "op_command", + "Query": { + "find": "col1", + "shardVersion": [ + 0, + "000000000000000000000000" + ] + }, + "ResponseLength": 1061230, + "Ts": "2017-04-01T23:01:20.214+00:00", + "User": "", + "WriteConflicts": 0 + }, + { + "AllUsers": [], + "Client": "127.0.0.1", + "CursorExhausted": false, + "DocsExamined": 75, + "ExecStats": { + "Advanced": 75, + "ExecutionTimeMillisEstimate": 0, + "InputStage": { + "Advanced": 0, + "Direction": "", + "DocsExamined": 0, + "ExecutionTimeMillisEstimate": 0, + "Filter": { + "Date": { + "Eq": "" + } + }, + "Invalidates": 0, + "IsEOF": 0, + "NReturned": 0, + "NeedTime": 0, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "", + "Works": 0 + }, + "Invalidates": 0, + "IsEOF": 0, + "LimitAmount": 0, + "NReturned": 75, + "NeedTime": 1, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 1, + "Stage": "COLLSCAN", + "Works": 76 + }, + "KeyUpdates": 0, + "KeysExamined": 0, + "Locks": { + "Collection": { + "AcquireCount": { + "R": 0 + } + }, + "Database": { + "AcquireCount": { + "R": 1 + } + }, + "Global": { + "AcquireCount": { + "R": 2 + } + }, + "MMAPV1Journal": { + "AcquireCount": { + "R": 0 + } + } + }, + "Millis": 1, + "Nreturned": 75, + "Ns": "samples.col1", + "NumYield": 0, + "Op": "query", + "Protocol": "op_command", + "Query": { + "find": "col1", + "shardVersion": [ + 0, + "000000000000000000000000" + ] + }, + "ResponseLength": 1061230, + "Ts": "2017-04-01T23:01:19.914+00:00", + "User": "", + "WriteConflicts": 0 + } +] diff --git a/src/go/tests/profiler_docs_stats.json b/src/go/tests/profiler_docs_stats.json new file mode 100644 index 00000000..9abff90c --- /dev/null +++ b/src/go/tests/profiler_docs_stats.json @@ -0,0 +1,265 @@ +[ + { + "AllUsers": [], + "Client": "127.0.0.1", + "CursorExhausted": false, + "DocsExamined": 75, + "ExecStats": { + "Advanced": 75, + "ExecutionTimeMillisEstimate": 10, + "InputStage": { + "Advanced": 0, + "Direction": "", + "DocsExamined": 0, + "ExecutionTimeMillisEstimate": 0, + "Filter": { + "Date": { + "Eq": "" + } + }, + "Invalidates": 0, + "IsEOF": 0, + "NReturned": 0, + "NeedTime": 0, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "", + "Works": 0 + }, + "Invalidates": 0, + "IsEOF": 0, + "LimitAmount": 0, + "NReturned": 75, + "NeedTime": 1, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 1, + "Stage": "COLLSCAN", + "Works": 76 + }, + "KeyUpdates": 0, + "KeysExamined": 0, + "Locks": { + "Collection": { + "AcquireCount": { + "R": 0 + } + }, + "Database": { + "AcquireCount": { + "R": 1 + } + }, + "Global": { + "AcquireCount": { + "R": 2 + } + }, + "MMAPV1Journal": { + "AcquireCount": { + "R": 0 + } + } + }, + "Millis": 0, + "Nreturned": 75, + "Ns": "samples.col1", + "NumYield": 0, + "Op": "query", + "Protocol": "op_command", + "Query": { + "find": "col1", + "shardVersion": [ + 0, + "000000000000000000000000" + ] + }, + "ResponseLength": 1061230, + "Ts": "2017-04-10T13:16:23.29-03:00", + "User": "", + "WriteConflicts": 0 + }, + { + "AllUsers": [], + "Client": "127.0.0.1", + "CursorExhausted": true, + "DocsExamined": 10000, + "ExecStats": { + "Advanced": 0, + "ExecutionTimeMillisEstimate": 10, + "InputStage": { + "Advanced": 0, + "Direction": "", + "DocsExamined": 0, + "ExecutionTimeMillisEstimate": 0, + "Filter": { + "Date": { + "Eq": "" + } + }, + "Invalidates": 0, + "IsEOF": 0, + "NReturned": 0, + "NeedTime": 0, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "", + "Works": 0 + }, + "Invalidates": 0, + "IsEOF": 1, + "LimitAmount": 0, + "NReturned": 0, + "NeedTime": 10001, + "NeedYield": 0, + "RestoreState": 78, + "SaveState": 78, + "Stage": "COLLSCAN", + "Works": 10002 + }, + "KeyUpdates": 0, + "KeysExamined": 0, + "Locks": { + "Collection": { + "AcquireCount": { + "R": 0 + } + }, + "Database": { + "AcquireCount": { + "R": 79 + } + }, + "Global": { + "AcquireCount": { + "R": 158 + } + }, + "MMAPV1Journal": { + "AcquireCount": { + "R": 0 + } + } + }, + "Millis": 7, + "Nreturned": 0, + "Ns": "samples.col1", + "NumYield": 78, + "Op": "query", + "Protocol": "op_command", + "Query": { + "filter": { + "s2": { + "$gte": "41991", + "$lt": "33754" + } + }, + "find": "col1", + "shardVersion": [ + 0, + "000000000000000000000000" + ] + }, + "ResponseLength": 215, + "Ts": "2017-04-10T13:15:53.532-03:00", + "User": "", + "WriteConflicts": 0 + }, + { + "AllUsers": [], + "Client": "127.0.0.1", + "CursorExhausted": true, + "DocsExamined": 0, + "ExecStats": { + "Advanced": 0, + "ExecutionTimeMillisEstimate": 0, + "InputStage": { + "Advanced": 0, + "Direction": "", + "DocsExamined": 0, + "ExecutionTimeMillisEstimate": 0, + "Filter": { + "Date": { + "Eq": "" + } + }, + "Invalidates": 0, + "IsEOF": 1, + "NReturned": 0, + "NeedTime": 1, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "SORT_KEY_GENERATOR", + "Works": 2 + }, + "Invalidates": 0, + "IsEOF": 1, + "LimitAmount": 0, + "NReturned": 0, + "NeedTime": 1, + "NeedYield": 0, + "RestoreState": 0, + "SaveState": 0, + "Stage": "PROJECTION", + "Works": 2 + }, + "KeyUpdates": 0, + "KeysExamined": 0, + "Locks": { + "Collection": { + "AcquireCount": { + "R": 0 + } + }, + "Database": { + "AcquireCount": { + "R": 1 + } + }, + "Global": { + "AcquireCount": { + "R": 2 + } + }, + "MMAPV1Journal": { + "AcquireCount": { + "R": 0 + } + } + }, + "Millis": 0, + "Nreturned": 0, + "Ns": "samples.col1", + "NumYield": 0, + "Op": "query", + "Protocol": "op_command", + "Query": { + "filter": { + "user_id": { + "$gte": 3384024924, + "$lt": 195092007 + } + }, + "find": "col1", + "projection": { + "$sortKey": { + "$meta": "sortKey" + } + }, + "shardVersion": [ + 0, + "000000000000000000000000" + ], + "sort": { + "user_id": 1 + } + }, + "ResponseLength": 215, + "Ts": "2017-04-10T13:15:53.524-03:00", + "User": "", + "WriteConflicts": 0 + } +] diff --git a/src/go/tests/profiler_docs_stats.want.json b/src/go/tests/profiler_docs_stats.want.json new file mode 100644 index 00000000..fc203be0 --- /dev/null +++ b/src/go/tests/profiler_docs_stats.want.json @@ -0,0 +1,161 @@ +[ + { + "ID": "c6466139b21c392acd0699e863b50d81", + "Namespace": "samples.col1", + "Operation": "query", + "Query": "{\"find\":\"col1\",\"shardVersion\":[0,\"000000000000000000000000\"]}", + "Fingerprint": "find", + "FirstSeen": "2017-04-10T13:16:23.29-03:00", + "LastSeen": "2017-04-10T13:16:23.29-03:00", + "Count": 1, + "QPS": 1, + "Rank": 0, + "Ratio": 1, + "QueryTime": { + "Pct": 0, + "Total": 0, + "Min": 0, + "Max": 0, + "Avg": 0, + "Pct95": 0, + "StdDev": 0, + "Median": 0 + }, + "ResponseLength": { + "Pct": 0.9995949739087844, + "Total": 1061230, + "Min": 1061230, + "Max": 1061230, + "Avg": 1061230, + "Pct95": 1061230, + "StdDev": 0, + "Median": 1061230 + }, + "Returned": { + "Pct": 100, + "Total": 75, + "Min": 75, + "Max": 75, + "Avg": 75, + "Pct95": 75, + "StdDev": 0, + "Median": 75 + }, + "Scanned": { + "Pct": 0.7444168734491315, + "Total": 75, + "Min": 75, + "Max": 75, + "Avg": 75, + "Pct95": 75, + "StdDev": 0, + "Median": 75 + } + }, + { + "ID": "84e09ef6a3dc35f472df05fa98eee7d3", + "Namespace": "samples.col1", + "Operation": "query", + "Query": "{\"s2\":{\"$gte\":\"41991\",\"$lt\":\"33754\"}}", + "Fingerprint": "s2", + "FirstSeen": "2017-04-10T13:15:53.532-03:00", + "LastSeen": "2017-04-10T13:15:53.532-03:00", + "Count": 1, + "QPS": 1, + "Rank": 0, + "Ratio": 0, + "QueryTime": { + "Pct": 100, + "Total": 7, + "Min": 7, + "Max": 7, + "Avg": 7, + "Pct95": 7, + "StdDev": 0, + "Median": 7 + }, + "ResponseLength": { + "Pct": 0.00020251304560782172, + "Total": 215, + "Min": 215, + "Max": 215, + "Avg": 215, + "Pct95": 215, + "StdDev": 0, + "Median": 215 + }, + "Returned": { + "Pct": 0, + "Total": 0, + "Min": 0, + "Max": 0, + "Avg": 0, + "Pct95": 0, + "StdDev": 0, + "Median": 0 + }, + "Scanned": { + "Pct": 99.25558312655087, + "Total": 10000, + "Min": 10000, + "Max": 10000, + "Avg": 10000, + "Pct95": 10000, + "StdDev": 0, + "Median": 10000 + } + }, + { + "ID": "69e3b2f5f0aefcec868c0fa5ec8cebe5", + "Namespace": "samples.col1", + "Operation": "query", + "Query": "{\"user_id\":{\"$gte\":3384024924,\"$lt\":195092007}}", + "Fingerprint": "user_id", + "FirstSeen": "2017-04-10T13:15:53.524-03:00", + "LastSeen": "2017-04-10T13:15:53.524-03:00", + "Count": 1, + "QPS": 1, + "Rank": 0, + "Ratio": 0, + "QueryTime": { + "Pct": 0, + "Total": 0, + "Min": 0, + "Max": 0, + "Avg": 0, + "Pct95": 0, + "StdDev": 0, + "Median": 0 + }, + "ResponseLength": { + "Pct": 0.00020251304560782172, + "Total": 215, + "Min": 215, + "Max": 215, + "Avg": 215, + "Pct95": 215, + "StdDev": 0, + "Median": 215 + }, + "Returned": { + "Pct": 0, + "Total": 0, + "Min": 0, + "Max": 0, + "Avg": 0, + "Pct95": 0, + "StdDev": 0, + "Median": 0 + }, + "Scanned": { + "Pct": 0, + "Total": 0, + "Min": 0, + "Max": 0, + "Avg": 0, + "Pct95": 0, + "StdDev": 0, + "Median": 0 + } + } +] \ No newline at end of file diff --git a/src/go/tests/profiler_docs_total_counters.want.json b/src/go/tests/profiler_docs_total_counters.want.json new file mode 100644 index 00000000..33c710e4 --- /dev/null +++ b/src/go/tests/profiler_docs_total_counters.want.json @@ -0,0 +1,7 @@ +{ + "Count": 3, + "Scanned": 10075, + "Returned": 75, + "QueryTime": 7, + "Bytes": 1061660 +} \ No newline at end of file diff --git a/src/go/tests/profiler_docs_total_stats.want.json b/src/go/tests/profiler_docs_total_stats.want.json new file mode 100755 index 00000000..39bc4c5c --- /dev/null +++ b/src/go/tests/profiler_docs_total_stats.want.json @@ -0,0 +1,53 @@ +{ + "ID": "", + "Namespace": "", + "Operation": "", + "Query": "null", + "Fingerprint": "", + "FirstSeen": "0001-01-01T00:00:00Z", + "LastSeen": "0001-01-01T00:00:00Z", + "Count": 0, + "QPS": 0, + "Rank": 0, + "Ratio": 134.33333333333334, + "QueryTime": { + "Pct": 100, + "Total": 7, + "Min": 0, + "Max": 7, + "Avg": 2.3333333333333335, + "Pct95": 7, + "StdDev": 3.2998316455372216, + "Median": 0 + }, + "ResponseLength": { + "Pct": 1, + "Total": 1061660, + "Min": 215, + "Max": 1061230, + "Avg": 353886.6666666667, + "Pct95": 1061230, + "StdDev": 500167.26762709644, + "Median": 215 + }, + "Returned": { + "Pct": 100, + "Total": 75, + "Min": 0, + "Max": 75, + "Avg": 25, + "Pct95": 75, + "StdDev": 35.35533905932738, + "Median": 0 + }, + "Scanned": { + "Pct": 100, + "Total": 10075, + "Min": 0, + "Max": 10000, + "Avg": 3358.3333333333335, + "Pct95": 10000, + "StdDev": 4696.46734850308, + "Median": 75 + } +} \ No newline at end of file diff --git a/t/lib/CompareWarnings.t b/t/lib/CompareWarnings.t index 3c7ddcd2..8ff4b5bd 100644 --- a/t/lib/CompareWarnings.t +++ b/t/lib/CompareWarnings.t @@ -26,8 +26,9 @@ my $dbh = $sb->get_dbh_for('master', {no_lc=>1}); if ( !$dbh ) { plan skip_all => "Cannot connect to sandbox master"; -} -else { +} elsif ($sandbox_version ge '5.7') { + plan skip_all => "MySQL 5.7 use a more strict sql_mode"; +} else { plan tests => 21; } diff --git a/t/lib/ExplainAnalyzer.t b/t/lib/ExplainAnalyzer.t index 161362cf..86c9638c 100644 --- a/t/lib/ExplainAnalyzer.t +++ b/t/lib/ExplainAnalyzer.t @@ -42,24 +42,43 @@ my $exa = new ExplainAnalyzer(QueryRewriter => $qr, QueryParser => $qp); # Tests for getting an EXPLAIN from a database. # ############################################################################# +my $want = [ + { id => 1, + select_type => 'SIMPLE', + table => 'actor', + type => 'const', + possible_keys => 'PRIMARY', + key => 'PRIMARY', + key_len => 2, + ref => 'const', + rows => 1, + Extra => $sandbox_version eq '5.6' ? undef : '', + }, + ]; +if ( $sandbox_version gt '5.6' ) { + $want = [ + { id => 1, + select_type => 'SIMPLE', + table => 'actor', + type => 'const', + possible_keys => 'PRIMARY', + key => 'PRIMARY', + key_len => 2, + filtered => 100, + partitions => undef, + ref => 'const', + rows => 1, + Extra => $sandbox_version gt '5.6' ? undef : '', + }, + ]; +} + is_deeply( $exa->explain_query( dbh => $dbh, query => 'select * from actor where actor_id = 5', ), - [ - { id => 1, - select_type => 'SIMPLE', - table => 'actor', - type => 'const', - possible_keys => 'PRIMARY', - key => 'PRIMARY', - key_len => 2, - ref => 'const', - rows => 1, - Extra => $sandbox_version eq '5.6' ? undef : '', - }, - ], + $want, 'Got a simple EXPLAIN result', ); @@ -68,19 +87,7 @@ is_deeply( dbh => $dbh, query => 'delete from actor where actor_id = 5', ), - [ - { id => 1, - select_type => 'SIMPLE', - table => 'actor', - type => 'const', - possible_keys => 'PRIMARY', - key => 'PRIMARY', - key_len => 2, - ref => 'const', - rows => 1, - Extra => $sandbox_version eq '5.6' ? undef : '', - }, - ], + $want, 'Got EXPLAIN result for a DELETE', ); diff --git a/t/lib/KeySize.t b/t/lib/KeySize.t index d7d02a3d..3175ba6b 100644 --- a/t/lib/KeySize.t +++ b/t/lib/KeySize.t @@ -143,8 +143,7 @@ is( '', 'No error (issue 364)' ); -like( - $ks->explain(), +my $want = $sandbox_version lt '5.7' ? qr/^extra: Using where; Using index id: 1 key: BASE_KID_ID @@ -154,9 +153,26 @@ ref: NULL rows: 17[1-9] select_type: SIMPLE table: issue_364 -type: index\Z/, +type: index\Z/ : + qr/^extra: Using where; Using index +filtered: 1.13 +id: 1 +key: BASE_KID_ID +key_len: 17 +partitions: NULL +possible_keys: BASE_KID_ID +ref: NULL +rows: 176 +select_type: SIMPLE +table: issue_364 +type: index/; + +like( + $ks->explain(), + $want, 'EXPLAIN plan (issue 364)' ); + is( $ks->query(), 'EXPLAIN SELECT BASE_KID_ID, ID FROM `test`.`issue_364` FORCE INDEX (`BASE_KID_ID`) WHERE BASE_KID_ID=1 OR ID=1', diff --git a/t/lib/OptionParser.t b/t/lib/OptionParser.t index 7eeebd1f..717955f2 100644 --- a/t/lib/OptionParser.t +++ b/t/lib/OptionParser.t @@ -15,7 +15,7 @@ use OptionParser; use DSNParser; use PerconaTest; -use Test::More tests => 161; +use Test::More tests => 162; my $o = new OptionParser( description => 'OptionParser.t parses command line options.', usage => "$PROGRAM_NAME ", @@ -1736,7 +1736,7 @@ is_deeply( { A => undef, D => 'test', - F => undef, + F =>undef, P => '12346', S => undef, h => '127.1', @@ -1746,6 +1746,47 @@ is_deeply( 'Copies DSN values correctly (issue 460)' ); +# Test DSN can be repeatable +$o = new OptionParser( + description => 'OptionParser.t parses command line options.', + usage => "$PROGRAM_NAME " +); +# Hack DSNParser into OptionParser. This is just for testing. +$o->{DSNParser} = $dp; +$o->_parse_specs( + { spec => 'rep=d', desc => 'source', attributes => { repeatable => 1}, }, +); +@ARGV = ( + '--rep', 'h=127.1,P=12345,D=test,u=bob,p=foo', '--rep', 'h=127.1,P=12346', +); +$o->get_opts(); +my $ddest_dsn = $o->get('rep'); +is_deeply( + $ddest_dsn, + [ + { + A => undef, + u => 'bob', + D => 'test', + h => '127.1', + P => '12345', + S => undef, + p => 'foo', + F => undef + }, + { + p => undef, + F => undef, + u => undef, + D => undef, + A => undef, + P => '12346', + S => undef, + h => '127.1' + } + ], + 'DSN type can be repeatable' +); # ############################################################################# # Issue 248: Add --user, --pass, --host, etc to all tools # ############################################################################# diff --git a/t/lib/QueryReportFormatter.t b/t/lib/QueryReportFormatter.t index 833e4603..e537462a 100644 --- a/t/lib/QueryReportFormatter.t +++ b/t/lib/QueryReportFormatter.t @@ -1137,7 +1137,8 @@ SKIP: { ); my $explain = load_file( - $sandbox_version eq '5.6' ? "t/lib/samples/QueryReportFormatter/report031.txt" + $sandbox_version ge '5.7' ? "t/lib/samples/QueryReportFormatter/report031-5.7.txt" + : $sandbox_version eq '5.6' ? "t/lib/samples/QueryReportFormatter/report031.txt" : $sandbox_version ge '5.1' ? "t/lib/samples/QueryReportFormatter/report025.txt" : "t/lib/samples/QueryReportFormatter/report026.txt"); diff --git a/t/lib/TableChunker.t b/t/lib/TableChunker.t index 8f6927bf..121ebba8 100644 --- a/t/lib/TableChunker.t +++ b/t/lib/TableChunker.t @@ -545,7 +545,7 @@ SKIP: { ["1=1"], "Doesn't chunk if chunk size > total rows" ); -}; +} # ############################################################################# # Issue 47: TableChunker::range_num broken for very large bigint @@ -845,75 +845,80 @@ is_deeply( # Test issue 941 + issue 602 # ############################################################################# -$dbh->do("insert into issue_602.t values ('12', '0000-00-00 00:00:00')"); -# Now we have: -# | 12 | 0000-00-00 00:00:00 | -# | 11 | 2010-00-09 00:00:00 | -# | 10 | 2010-04-30 00:00:00 | -# So min is a zero row. If we don't want zero row, next min will be an -# invalid row, and we don't want that. So we should get row "10" as min. +SKIP: { + skip "Requires MySQL < 5.7", 19 if ($sandbox_version ge '5.7'); -%params = $c->get_range_statistics( - dbh => $dbh, - db => 'issue_602', - tbl => 't', - chunk_col => 'b', - tbl_struct => { - type_for => { b => 'datetime' }, - is_numeric => { b => 0 }, - }, -); - -is_deeply( - \%params, - { - min => '2010-04-30 00:00:00', - max => '2010-05-09 00:00:00', - rows_in_range => 12, - }, - "Gets valid min after zero row" -); - -# ############################################################################# -# Test _validate_temporal_value() because it's magical. -# ############################################################################# -my @invalid_t = ( - '00:00:60', - '00:60:00', - '0000-00-00', - '2009-00-00', - '2009-13-00', - '0000-00-00 00:00:00', - '1000-00-00 00:00:00', - '2009-00-00 00:00:00', - '2009-13-00 00:00:00', - '2009-05-26 00:00:60', - '2009-05-26 00:60:00', - '2009-05-26 24:00:00', -); -foreach my $t ( @invalid_t ) { - my $res = TableChunker::_validate_temporal_value($dbh, $t); - is( - $res, - undef, - "$t is invalid" - ); -} - -my @valid_t = ( - '00:00:01', - '1000-01-01', - '2009-01-01', - '1000-01-01 00:00:00', - '2009-01-01 00:00:00', - '2010-05-26 17:48:30', -); -foreach my $t ( @valid_t ) { - my $res = TableChunker::_validate_temporal_value($dbh, $t); - ok( - defined $res, - "$t is valid" - ); + $dbh->do("insert into issue_602.t values ('12', '0000-00-00 00:00:00')"); + + # Now we have: + # | 12 | 0000-00-00 00:00:00 | + # | 11 | 2010-00-09 00:00:00 | + # | 10 | 2010-04-30 00:00:00 | + # So min is a zero row. If we don't want zero row, next min will be an + # invalid row, and we don't want that. So we should get row "10" as min. + + %params = $c->get_range_statistics( + dbh => $dbh, + db => 'issue_602', + tbl => 't', + chunk_col => 'b', + tbl_struct => { + type_for => { b => 'datetime' }, + is_numeric => { b => 0 }, + }, + ); + + is_deeply( + \%params, + { + min => '2010-04-30 00:00:00', + max => '2010-05-09 00:00:00', + rows_in_range => 12, + }, + "Gets valid min after zero row" + ); + + # ############################################################################# + # Test _validate_temporal_value() because it's magical. + # ############################################################################# + my @invalid_t = ( + '00:00:60', + '00:60:00', + '0000-00-00', + '2009-00-00', + '2009-13-00', + '0000-00-00 00:00:00', + '1000-00-00 00:00:00', + '2009-00-00 00:00:00', + '2009-13-00 00:00:00', + '2009-05-26 00:00:60', + '2009-05-26 00:60:00', + '2009-05-26 24:00:00', + ); + foreach my $t ( @invalid_t ) { + my $res = TableChunker::_validate_temporal_value($dbh, $t); + is( + $res, + undef, + "$t is invalid" + ); + } + + my @valid_t = ( + '00:00:01', + '1000-01-01', + '2009-01-01', + '1000-01-01 00:00:00', + '2009-01-01 00:00:00', + '2010-05-26 17:48:30', + ); + foreach my $t ( @valid_t ) { + my $res = TableChunker::_validate_temporal_value($dbh, $t); + ok( + defined $res, + "$t is valid" + ); + } } # ############################################################################# diff --git a/t/lib/TableParser.t b/t/lib/TableParser.t index bdb6d76a..52bdd52b 100644 --- a/t/lib/TableParser.t +++ b/t/lib/TableParser.t @@ -635,6 +635,7 @@ SKIP: { "DBI:mysql:host=127.0.0.1;port=12345", 'root', 'msandbox', { PrintError => 0, RaiseError => 1 }); + $root_dbh->do(q[CREATE USER 'user'@'%' IDENTIFIED BY '';] ) || die($root_dbh->errstr); $root_dbh->do(q[GRANT SELECT ON test.* TO 'user'@'%'] ) || die($root_dbh->errstr); my $user_dbh = DBI->connect( diff --git a/t/lib/VersionCheck.t b/t/lib/VersionCheck.t index 8cbe5bfe..ba9881a5 100644 --- a/t/lib/VersionCheck.t +++ b/t/lib/VersionCheck.t @@ -670,7 +670,7 @@ my @vc_tools = grep { chomp; basename($_) =~ /\A[a-z-]+\z/ } foreach my $tool ( @vc_tools ) { my $tool_name = basename($tool); - next if $tool_name eq 'pt-agent'; + next if $tool_name eq 'pt-agent' || $tool_name =~ m/^pt-mongodb-/; my $output = `$tool --help`; like( $output, diff --git a/t/lib/samples/QueryReportFormatter/report031-5.7.txt b/t/lib/samples/QueryReportFormatter/report031-5.7.txt new file mode 100644 index 00000000..1a429fda --- /dev/null +++ b/t/lib/samples/QueryReportFormatter/report031-5.7.txt @@ -0,0 +1,13 @@ +# *************************** 1. row *************************** +# id: 1 +# select_type: SIMPLE +# table: t +# partitions: NULL +# type: const +# possible_keys: PRIMARY +# key: PRIMARY +# key_len: 4 +# ref: const +# rows: 1 +# filtered: 100 +# Extra: NULL diff --git a/t/lib/samples/SchemaIterator/all-dbs-tbls-5.7.txt b/t/lib/samples/SchemaIterator/all-dbs-tbls-5.7.txt new file mode 100644 index 00000000..bbb6f95d --- /dev/null +++ b/t/lib/samples/SchemaIterator/all-dbs-tbls-5.7.txt @@ -0,0 +1,537 @@ +mysql.columns_priv +CREATE TABLE `columns_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Column_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges' + +mysql.db +CREATE TABLE `db` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`Db`,`User`), + KEY `User` (`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges' + +mysql.engine_cost +CREATE TABLE `engine_cost` ( + `engine_name` varchar(64) NOT NULL, + `device_type` int(11) NOT NULL, + `cost_name` varchar(64) NOT NULL, + `cost_value` float DEFAULT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `comment` varchar(1024) DEFAULT NULL, + PRIMARY KEY (`cost_name`,`engine_name`,`device_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 + +mysql.event +CREATE TABLE `event` ( + `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `name` char(64) NOT NULL DEFAULT '', + `body` longblob NOT NULL, + `definer` char(93) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `execute_at` datetime DEFAULT NULL, + `interval_value` int(11) DEFAULT NULL, + `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `last_executed` datetime DEFAULT NULL, + `starts` datetime DEFAULT NULL, + `ends` datetime DEFAULT NULL, + `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', + `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `originator` int(10) unsigned NOT NULL, + `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', + `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `body_utf8` longblob, + PRIMARY KEY (`db`,`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events' + +mysql.func +CREATE TABLE `func` ( + `name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `ret` tinyint(1) NOT NULL DEFAULT '0', + `dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '', + `type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions' + +mysql.gtid_executed +CREATE TABLE `gtid_executed` ( + `source_uuid` char(36) NOT NULL COMMENT 'uuid of the source where the transaction was originally executed.', + `interval_start` bigint(20) NOT NULL COMMENT 'First number of interval.', + `interval_end` bigint(20) NOT NULL COMMENT 'Last number of interval.', + PRIMARY KEY (`source_uuid`,`interval_start`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 + +mysql.help_category +CREATE TABLE `help_category` ( + `help_category_id` smallint(5) unsigned NOT NULL, + `name` char(64) NOT NULL, + `parent_category_id` smallint(5) unsigned DEFAULT NULL, + `url` text NOT NULL, + PRIMARY KEY (`help_category_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help categories' + +mysql.help_keyword +CREATE TABLE `help_keyword` ( + `help_keyword_id` int(10) unsigned NOT NULL, + `name` char(64) NOT NULL, + PRIMARY KEY (`help_keyword_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help keywords' + +mysql.help_relation +CREATE TABLE `help_relation` ( + `help_topic_id` int(10) unsigned NOT NULL, + `help_keyword_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`help_keyword_id`,`help_topic_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='keyword-topic relation' + +mysql.help_topic +CREATE TABLE `help_topic` ( + `help_topic_id` int(10) unsigned NOT NULL, + `name` char(64) NOT NULL, + `help_category_id` smallint(5) unsigned NOT NULL, + `description` text NOT NULL, + `example` text NOT NULL, + `url` text NOT NULL, + PRIMARY KEY (`help_topic_id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='help topics' + +mysql.ndb_binlog_index +CREATE TABLE `ndb_binlog_index` ( + `Position` bigint(20) unsigned NOT NULL, + `File` varchar(255) NOT NULL, + `epoch` bigint(20) unsigned NOT NULL, + `inserts` int(10) unsigned NOT NULL, + `updates` int(10) unsigned NOT NULL, + `deletes` int(10) unsigned NOT NULL, + `schemaops` int(10) unsigned NOT NULL, + `orig_server_id` int(10) unsigned NOT NULL, + `orig_epoch` bigint(20) unsigned NOT NULL, + `gci` int(10) unsigned NOT NULL, + `next_position` bigint(20) unsigned NOT NULL, + `next_file` varchar(255) NOT NULL, + PRIMARY KEY (`epoch`,`orig_server_id`,`orig_epoch`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 + +mysql.procs_priv +CREATE TABLE `procs_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Routine_name` char(64) CHARACTER SET utf8 NOT NULL DEFAULT '', + `Routine_type` enum('FUNCTION','PROCEDURE') COLLATE utf8_bin NOT NULL, + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges' + +mysql.proxies_priv +CREATE TABLE `proxies_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Proxied_user` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `With_grant` tinyint(1) NOT NULL DEFAULT '0', + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Host`,`User`,`Proxied_host`,`Proxied_user`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User proxy privileges' + +mysql.server_cost +CREATE TABLE `server_cost` ( + `cost_name` varchar(64) NOT NULL, + `cost_value` float DEFAULT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `comment` varchar(1024) DEFAULT NULL, + PRIMARY KEY (`cost_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 + +mysql.servers +CREATE TABLE `servers` ( + `Server_name` char(64) NOT NULL DEFAULT '', + `Host` char(64) NOT NULL DEFAULT '', + `Db` char(64) NOT NULL DEFAULT '', + `Username` char(64) NOT NULL DEFAULT '', + `Password` char(64) NOT NULL DEFAULT '', + `Port` int(4) NOT NULL DEFAULT '0', + `Socket` char(64) NOT NULL DEFAULT '', + `Wrapper` char(64) NOT NULL DEFAULT '', + `Owner` char(64) NOT NULL DEFAULT '', + PRIMARY KEY (`Server_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='MySQL Foreign Servers table' + +mysql.tables_priv +CREATE TABLE `tables_priv` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '', + `Grantor` char(93) COLLATE utf8_bin NOT NULL DEFAULT '', + `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '', + `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', + PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`), + KEY `Grantor` (`Grantor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table privileges' + +mysql.time_zone +CREATE TABLE `time_zone` ( + `Time_zone_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Use_leap_seconds` enum('Y','N') NOT NULL DEFAULT 'N', + PRIMARY KEY (`Time_zone_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zones' + +mysql.time_zone_leap_second +CREATE TABLE `time_zone_leap_second` ( + `Transition_time` bigint(20) NOT NULL, + `Correction` int(11) NOT NULL, + PRIMARY KEY (`Transition_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Leap seconds information for time zones' + +mysql.time_zone_name +CREATE TABLE `time_zone_name` ( + `Name` char(64) NOT NULL, + `Time_zone_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`Name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone names' + +mysql.time_zone_transition +CREATE TABLE `time_zone_transition` ( + `Time_zone_id` int(10) unsigned NOT NULL, + `Transition_time` bigint(20) NOT NULL, + `Transition_type_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`Time_zone_id`,`Transition_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone transitions' + +mysql.time_zone_transition_type +CREATE TABLE `time_zone_transition_type` ( + `Time_zone_id` int(10) unsigned NOT NULL, + `Transition_type_id` int(10) unsigned NOT NULL, + `Offset` int(11) NOT NULL DEFAULT '0', + `Is_DST` tinyint(3) unsigned NOT NULL DEFAULT '0', + `Abbreviation` char(8) NOT NULL DEFAULT '', + PRIMARY KEY (`Time_zone_id`,`Transition_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Time zone transition types' + +mysql.user +CREATE TABLE `user` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', + `ssl_cipher` blob NOT NULL, + `x509_issuer` blob NOT NULL, + `x509_subject` blob NOT NULL, + `max_questions` int(11) unsigned NOT NULL DEFAULT '0', + `max_updates` int(11) unsigned NOT NULL DEFAULT '0', + `max_connections` int(11) unsigned NOT NULL DEFAULT '0', + `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0', + `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password', + `authentication_string` text COLLATE utf8_bin, + `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `password_last_changed` timestamp NULL DEFAULT NULL, + `password_lifetime` smallint(5) unsigned DEFAULT NULL, + `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' + +percona_test.checksums +CREATE TABLE `checksums` ( + `db_tbl` varchar(128) NOT NULL, + `checksum` int(10) unsigned NOT NULL, + PRIMARY KEY (`db_tbl`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 + +percona_test.load_data +CREATE TABLE `load_data` ( + `i` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 + +percona_test.sentinel +CREATE TABLE `sentinel` ( + `id` int(11) NOT NULL, + `ping` varchar(64) NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 + +sakila.actor +CREATE TABLE `actor` ( + `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `first_name` varchar(45) NOT NULL, + `last_name` varchar(45) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`actor_id`), + KEY `idx_actor_last_name` (`last_name`) +) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8 + +sakila.address +CREATE TABLE `address` ( + `address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `address` varchar(50) NOT NULL, + `address2` varchar(50) DEFAULT NULL, + `district` varchar(20) NOT NULL, + `city_id` smallint(5) unsigned NOT NULL, + `postal_code` varchar(10) DEFAULT NULL, + `phone` varchar(20) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`address_id`), + KEY `idx_fk_city_id` (`city_id`), + CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8 + +sakila.category +CREATE TABLE `category` ( + `category_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(25) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`category_id`) +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 + +sakila.city +CREATE TABLE `city` ( + `city_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `city` varchar(50) NOT NULL, + `country_id` smallint(5) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`city_id`), + KEY `idx_fk_country_id` (`country_id`), + CONSTRAINT `fk_city_country` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=601 DEFAULT CHARSET=utf8 + +sakila.country +CREATE TABLE `country` ( + `country_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `country` varchar(50) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`country_id`) +) ENGINE=InnoDB AUTO_INCREMENT=110 DEFAULT CHARSET=utf8 + +sakila.customer +CREATE TABLE `customer` ( + `customer_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `store_id` tinyint(3) unsigned NOT NULL, + `first_name` varchar(45) NOT NULL, + `last_name` varchar(45) NOT NULL, + `email` varchar(50) DEFAULT NULL, + `address_id` smallint(5) unsigned NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '1', + `create_date` datetime NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`customer_id`), + KEY `idx_fk_store_id` (`store_id`), + KEY `idx_fk_address_id` (`address_id`), + KEY `idx_last_name` (`last_name`), + CONSTRAINT `fk_customer_address` FOREIGN KEY (`address_id`) REFERENCES `address` (`address_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_customer_store` FOREIGN KEY (`store_id`) REFERENCES `store` (`store_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=600 DEFAULT CHARSET=utf8 + +sakila.film +CREATE TABLE `film` ( + `film_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) NOT NULL, + `description` text, + `release_year` year(4) DEFAULT NULL, + `language_id` tinyint(3) unsigned NOT NULL, + `original_language_id` tinyint(3) unsigned DEFAULT NULL, + `rental_duration` tinyint(3) unsigned NOT NULL DEFAULT '3', + `rental_rate` decimal(4,2) NOT NULL DEFAULT '4.99', + `length` smallint(5) unsigned DEFAULT NULL, + `replacement_cost` decimal(5,2) NOT NULL DEFAULT '19.99', + `rating` enum('G','PG','PG-13','R','NC-17') DEFAULT 'G', + `special_features` set('Trailers','Commentaries','Deleted Scenes','Behind the Scenes') DEFAULT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`film_id`), + KEY `idx_title` (`title`), + KEY `idx_fk_language_id` (`language_id`), + KEY `idx_fk_original_language_id` (`original_language_id`), + CONSTRAINT `fk_film_language` FOREIGN KEY (`language_id`) REFERENCES `language` (`language_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_film_language_original` FOREIGN KEY (`original_language_id`) REFERENCES `language` (`language_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8 + +sakila.film_actor +CREATE TABLE `film_actor` ( + `actor_id` smallint(5) unsigned NOT NULL, + `film_id` smallint(5) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`actor_id`,`film_id`), + KEY `idx_fk_film_id` (`film_id`), + CONSTRAINT `fk_film_actor_actor` FOREIGN KEY (`actor_id`) REFERENCES `actor` (`actor_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_film_actor_film` FOREIGN KEY (`film_id`) REFERENCES `film` (`film_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 + +sakila.film_category +CREATE TABLE `film_category` ( + `film_id` smallint(5) unsigned NOT NULL, + `category_id` tinyint(3) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`film_id`,`category_id`), + KEY `fk_film_category_category` (`category_id`), + CONSTRAINT `fk_film_category_category` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_film_category_film` FOREIGN KEY (`film_id`) REFERENCES `film` (`film_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 + +sakila.film_text +CREATE TABLE `film_text` ( + `film_id` smallint(6) NOT NULL, + `title` varchar(255) NOT NULL, + `description` text, + PRIMARY KEY (`film_id`), + FULLTEXT KEY `idx_title_description` (`title`,`description`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 + +sakila.inventory +CREATE TABLE `inventory` ( + `inventory_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `film_id` smallint(5) unsigned NOT NULL, + `store_id` tinyint(3) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`inventory_id`), + KEY `idx_fk_film_id` (`film_id`), + KEY `idx_store_id_film_id` (`store_id`,`film_id`), + CONSTRAINT `fk_inventory_film` FOREIGN KEY (`film_id`) REFERENCES `film` (`film_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_inventory_store` FOREIGN KEY (`store_id`) REFERENCES `store` (`store_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=4582 DEFAULT CHARSET=utf8 + +sakila.language +CREATE TABLE `language` ( + `language_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `name` char(20) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`language_id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 + +sakila.payment +CREATE TABLE `payment` ( + `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `customer_id` smallint(5) unsigned NOT NULL, + `staff_id` tinyint(3) unsigned NOT NULL, + `rental_id` int(11) DEFAULT NULL, + `amount` decimal(5,2) NOT NULL, + `payment_date` datetime NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`payment_id`), + KEY `idx_fk_staff_id` (`staff_id`), + KEY `idx_fk_customer_id` (`customer_id`), + KEY `fk_payment_rental` (`rental_id`), + CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8 + +sakila.rental +CREATE TABLE `rental` ( + `rental_id` int(11) NOT NULL AUTO_INCREMENT, + `rental_date` datetime NOT NULL, + `inventory_id` mediumint(8) unsigned NOT NULL, + `customer_id` smallint(5) unsigned NOT NULL, + `return_date` datetime DEFAULT NULL, + `staff_id` tinyint(3) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`rental_id`), + UNIQUE KEY `rental_date` (`rental_date`,`inventory_id`,`customer_id`), + KEY `idx_fk_inventory_id` (`inventory_id`), + KEY `idx_fk_customer_id` (`customer_id`), + KEY `idx_fk_staff_id` (`staff_id`), + CONSTRAINT `fk_rental_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_rental_inventory` FOREIGN KEY (`inventory_id`) REFERENCES `inventory` (`inventory_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_rental_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8 + +sakila.staff +CREATE TABLE `staff` ( + `staff_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `first_name` varchar(45) NOT NULL, + `last_name` varchar(45) NOT NULL, + `address_id` smallint(5) unsigned NOT NULL, + `picture` blob, + `email` varchar(50) DEFAULT NULL, + `store_id` tinyint(3) unsigned NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '1', + `username` varchar(16) NOT NULL, + `password` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`staff_id`), + KEY `idx_fk_store_id` (`store_id`), + KEY `idx_fk_address_id` (`address_id`), + CONSTRAINT `fk_staff_address` FOREIGN KEY (`address_id`) REFERENCES `address` (`address_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_staff_store` FOREIGN KEY (`store_id`) REFERENCES `store` (`store_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 + +sakila.store +CREATE TABLE `store` ( + `store_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `manager_staff_id` tinyint(3) unsigned NOT NULL, + `address_id` smallint(5) unsigned NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`store_id`), + UNIQUE KEY `idx_unique_manager` (`manager_staff_id`), + KEY `idx_fk_address_id` (`address_id`), + CONSTRAINT `fk_store_address` FOREIGN KEY (`address_id`) REFERENCES `address` (`address_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_store_staff` FOREIGN KEY (`manager_staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 + diff --git a/t/lib/samples/SchemaIterator/mysql-user-ddl-5.7.txt b/t/lib/samples/SchemaIterator/mysql-user-ddl-5.7.txt new file mode 100644 index 00000000..7db5f668 --- /dev/null +++ b/t/lib/samples/SchemaIterator/mysql-user-ddl-5.7.txt @@ -0,0 +1,50 @@ +mysql.user +CREATE TABLE `user` ( + `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', + `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', + `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', + `ssl_cipher` blob NOT NULL, + `x509_issuer` blob NOT NULL, + `x509_subject` blob NOT NULL, + `max_questions` int(11) unsigned NOT NULL DEFAULT '0', + `max_updates` int(11) unsigned NOT NULL DEFAULT '0', + `max_connections` int(11) unsigned NOT NULL DEFAULT '0', + `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0', + `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password', + `authentication_string` text COLLATE utf8_bin, + `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + `password_last_changed` timestamp NULL DEFAULT NULL, + `password_lifetime` smallint(5) unsigned DEFAULT NULL, + `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', + PRIMARY KEY (`Host`,`User`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' + diff --git a/t/lib/samples/issue_941.sql b/t/lib/samples/issue_941.sql index 17bd587f..52a74a93 100644 --- a/t/lib/samples/issue_941.sql +++ b/t/lib/samples/issue_941.sql @@ -1,3 +1,6 @@ +-- For MySQL 5.7+ +set sql_mode='ALLOW_INVALID_DATES'; + drop database if exists issue_941; create database issue_941; use issue_941; diff --git a/t/pt-archiver/file.t b/t/pt-archiver/file.t index 121ca890..310ed476 100644 --- a/t/pt-archiver/file.t +++ b/t/pt-archiver/file.t @@ -115,6 +115,25 @@ like( "..but an unknown charset fails" ); +local $SIG{__WARN__} = undef; + +$sb->load_file('master', 't/pt-archiver/samples/table2.sql'); +`rm -f archive.test.table_2`; +$output = output( + sub { pt_archiver::main(qw(--where 1=1 --output-format=csv), "--source", "D=test,t=table_2,F=$cnf", "--file", 'archive.%D.%t') }, +); +$output = `cat archive.test.table_2`; +is($output, < 'all'; +use English qw(-no_match_vars); +use Test::More; + +use PerconaTest; +use Sandbox; +require "$trunk/bin/pt-archiver"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +my $dbh = $sb->get_dbh_for('master'); + +if ( !$dbh ) { + plan skip_all => 'Cannot connect to sandbox master'; +} +else { + plan tests => 3; +} + +my $output; + +# ############################################################################# +# Issue 1152: mk-archiver columns option resulting in null archived table data +# ############################################################################# +$sb->load_file('master', 't/pt-archiver/samples/pt-143.sql'); + +my $original_rows = $dbh->selectall_arrayref('select * from test.stats_r'); +my $exit_status; + +$output = output( + sub { $exit_status = pt_archiver::main( + '--source', 'h=127.1,P=12345,D=test,t=stats_r,u=msandbox,p=msandbox', + '--dest', 'D=test,t=stats_s', + qw(--where 1=1 --purge)) + }, +); + +is ( + $exit_status, + 0, + "PT-143 exit status OK", +); + +my $archived_rows = $dbh->selectall_arrayref('select * from test.stats_s'); + +is_deeply( + $original_rows, + $archived_rows, + "PT-143 Archived rows match original rows" +); + +$dbh->do('DROP DATABASE test'); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +exit; diff --git a/t/pt-archiver/samples/pt-143.sql b/t/pt-archiver/samples/pt-143.sql new file mode 100644 index 00000000..a8246789 --- /dev/null +++ b/t/pt-archiver/samples/pt-143.sql @@ -0,0 +1,33 @@ +DROP SCHEMA IF EXISTS test; +CREATE SCHEMA test; + +CREATE TABLE test.`stats_r` ( +`id` int(10) unsigned NOT NULL, +`end` datetime NOT NULL, +`start` datetime NOT NULL, +`sum_value` float DEFAULT NULL, +`user_id` varchar(100) NOT NULL DEFAULT '', +`interval` int(10) unsigned NOT NULL DEFAULT '0', +`mean` float DEFAULT NULL, +`max` float DEFAULT NULL, +`min` float DEFAULT NULL, +PRIMARY KEY (`id`,`start`,`end`,`user_id`(13),`interval`), +KEY `cid_start_end` (`user_id`(13),`start`,`end`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +CREATE TABLE test.stats_s LIKE test.stats_r; + +INSERT INTO `test`.`stats_r` +(`id`,`end`,`start`,`sum_value`,`user_id`,`interval`,`mean`,`max`,`min`) +VALUES +(1,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(2,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(3,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(4,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(5,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(6,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(7,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(8,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(9,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1), +(10,now() + INTERVAL 1 hour, NOW(), 1,1,1,1,1,1); + diff --git a/t/pt-archiver/samples/table2.sql b/t/pt-archiver/samples/table2.sql new file mode 100644 index 00000000..4f51b21f --- /dev/null +++ b/t/pt-archiver/samples/table2.sql @@ -0,0 +1,19 @@ +CREATE SCHEMA IF NOT EXISTS test; +use test; +drop table if exists table_2; + +create table table_2( + a int not null primary key, + b int, + c int not null, + d varchar(50), + key(b) +) engine=innodb; + +insert into table_2 values + (1, 2, 3, 4), + (2, null, 3, 4), + (3, 2, 3, "\t"), + (4, 2, 3, "\n"), + (5, 2, 3, "Zapp \"Brannigan"); + diff --git a/t/pt-mext/pt-mext.t b/t/pt-mext/pt-mext.t index ccb0e05c..4d228aad 100644 --- a/t/pt-mext/pt-mext.t +++ b/t/pt-mext/pt-mext.t @@ -40,6 +40,14 @@ ok( "mext-002 -r" ) or diag($test_diff); +ok( + no_diff( + "$cmd -- cat $sample/pt-130-in.txt", + "t/pt-mext/samples/pt-130-out.txt", + ), + "having rsa key", +) or diag($test_diff); + # ############################################################################# # Done. # ############################################################################# diff --git a/t/pt-mext/samples/pt-130-in.txt b/t/pt-mext/samples/pt-130-in.txt new file mode 100755 index 00000000..df195ccd --- /dev/null +++ b/t/pt-mext/samples/pt-130-in.txt @@ -0,0 +1,10739 @@ ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3409964 | +| Bytes_sent | 42529191 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 33 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 0 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 0 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 2 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 29 | +| Created_tmp_disk_tables | 10 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 67 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 399 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 49678 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 48389 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 252 | +| Innodb_buffer_pool_bytes_data | 4128768 | +| Innodb_buffer_pool_pages_dirty | 0 | +| Innodb_buffer_pool_bytes_dirty | 0 | +| Innodb_buffer_pool_pages_flushed | 1312 | +| Innodb_buffer_pool_pages_free | 764 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543053 | +| Innodb_buffer_pool_reads | 836 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 237962 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13713408 | +| Innodb_data_reads | 837 | +| Innodb_data_writes | 2026 | +| Innodb_data_written | 48287744 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 690 | +| Innodb_pages_read | 836 | +| Innodb_pages_written | 1134 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46292 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 4 | +| Max_used_connections_time | 2017-04-21 14:57:31 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 140 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 198 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 33 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 426 | +| Questions | 423 | +| Select_full_join | 0 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 13 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 3 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 118 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 44 | +| Table_open_cache_misses | 198 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 1 | +| Threads_connected | 3 | +| Threads_created | 4 | +| Threads_running | 3 | +| Uptime | 546 | +| Uptime_since_flush_status | 546 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3414655 | +| Bytes_sent | 42555645 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 51 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 1 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 3 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 39 | +| Created_tmp_disk_tables | 12 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 82 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 407 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 51546 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 48874 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 0 | +| Innodb_buffer_pool_bytes_dirty | 0 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543095 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238001 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46295 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 4 | +| Max_used_connections_time | 2017-04-21 14:57:31 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 143 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 201 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 49 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 460 | +| Questions | 457 | +| Select_full_join | 5 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 22 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 7 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 122 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 45 | +| Table_open_cache_misses | 201 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 2 | +| Threads_connected | 2 | +| Threads_created | 4 | +| Threads_running | 2 | +| Uptime | 547 | +| Uptime_since_flush_status | 547 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3418999 | +| Bytes_sent | 42575373 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 66 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 2 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 4 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 48 | +| Created_tmp_disk_tables | 14 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 96 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 413 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 52260 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 49227 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543138 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238040 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46298 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 4 | +| Max_used_connections_time | 2017-04-21 14:57:31 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 145 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 203 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 63 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 488 | +| Questions | 485 | +| Select_full_join | 10 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 29 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 11 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 125 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 46 | +| Table_open_cache_misses | 203 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 2 | +| Threads_connected | 2 | +| Threads_created | 4 | +| Threads_running | 2 | +| Uptime | 548 | +| Uptime_since_flush_status | 548 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3423343 | +| Bytes_sent | 42595063 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 81 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 3 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 5 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 57 | +| Created_tmp_disk_tables | 16 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 110 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 419 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 52974 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 49580 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543181 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238079 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46301 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 145 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 203 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 77 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 516 | +| Questions | 513 | +| Select_full_join | 15 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 36 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 15 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 128 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 49 | +| Table_open_cache_misses | 203 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 549 | +| Uptime_since_flush_status | 549 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3427687 | +| Bytes_sent | 42614754 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 96 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 4 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 6 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 66 | +| Created_tmp_disk_tables | 18 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 124 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 425 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 53688 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 49933 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543224 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238118 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46304 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 145 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 203 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 91 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 544 | +| Questions | 541 | +| Select_full_join | 20 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 43 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 19 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 131 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 52 | +| Table_open_cache_misses | 203 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 550 | +| Uptime_since_flush_status | 550 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3432031 | +| Bytes_sent | 42634488 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 111 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 5 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 7 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 75 | +| Created_tmp_disk_tables | 20 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 138 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 431 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 54402 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 50286 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543267 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238157 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46307 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 147 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 205 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 105 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 572 | +| Questions | 569 | +| Select_full_join | 25 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 50 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 23 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 134 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 53 | +| Table_open_cache_misses | 205 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 551 | +| Uptime_since_flush_status | 551 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3436375 | +| Bytes_sent | 42654259 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 126 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 6 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 8 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 84 | +| Created_tmp_disk_tables | 22 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 152 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 437 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 55116 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 50639 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543310 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238196 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46310 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 149 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 207 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 119 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 600 | +| Questions | 597 | +| Select_full_join | 30 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 57 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 27 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 137 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 54 | +| Table_open_cache_misses | 207 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 552 | +| Uptime_since_flush_status | 552 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3440719 | +| Bytes_sent | 42674131 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 141 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 7 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 9 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 93 | +| Created_tmp_disk_tables | 24 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 166 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 443 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 55830 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 50992 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543353 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238235 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46314 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 151 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 209 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 133 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 628 | +| Questions | 625 | +| Select_full_join | 35 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 64 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 31 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 140 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 55 | +| Table_open_cache_misses | 209 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 553 | +| Uptime_since_flush_status | 553 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3445063 | +| Bytes_sent | 42694497 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 156 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 8 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 10 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 102 | +| Created_tmp_disk_tables | 26 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 180 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 449 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 56544 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 51345 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543396 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238274 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46317 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 5 | +| Max_used_connections_time | 2017-04-21 14:57:34 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 151 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 209 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 147 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 656 | +| Questions | 653 | +| Select_full_join | 40 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 71 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 35 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 143 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 58 | +| Table_open_cache_misses | 209 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 3 | +| Threads_connected | 2 | +| Threads_created | 5 | +| Threads_running | 2 | +| Uptime | 554 | +| Uptime_since_flush_status | 554 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3449407 | +| Bytes_sent | 42714317 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 171 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 9 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 11 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 111 | +| Created_tmp_disk_tables | 28 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 194 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 455 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 57258 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 51698 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543439 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238313 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46320 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 153 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 211 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 161 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 684 | +| Questions | 681 | +| Select_full_join | 45 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 78 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 39 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 146 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 59 | +| Table_open_cache_misses | 211 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 555 | +| Uptime_since_flush_status | 555 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3453751 | +| Bytes_sent | 42734120 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 186 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 10 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 12 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 120 | +| Created_tmp_disk_tables | 30 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 208 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 461 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 57972 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 52051 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543482 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238352 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46323 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 153 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 211 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 175 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 712 | +| Questions | 709 | +| Select_full_join | 50 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 85 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 43 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 149 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 62 | +| Table_open_cache_misses | 211 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 556 | +| Uptime_since_flush_status | 556 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3458095 | +| Bytes_sent | 42753817 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 201 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 11 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 13 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 129 | +| Created_tmp_disk_tables | 32 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 222 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 467 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 58686 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 52404 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543525 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238391 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46326 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 155 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 213 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 189 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 740 | +| Questions | 737 | +| Select_full_join | 55 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 92 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 47 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 152 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 63 | +| Table_open_cache_misses | 213 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 557 | +| Uptime_since_flush_status | 557 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3462439 | +| Bytes_sent | 42773558 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 216 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 12 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 14 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 138 | +| Created_tmp_disk_tables | 34 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 236 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 473 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 59400 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 52757 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543568 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238430 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46329 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 155 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 213 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 201 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 768 | +| Questions | 765 | +| Select_full_join | 60 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 99 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 51 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 155 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 66 | +| Table_open_cache_misses | 213 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 558 | +| Uptime_since_flush_status | 558 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3466783 | +| Bytes_sent | 42793299 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 231 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 13 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 15 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 147 | +| Created_tmp_disk_tables | 36 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 250 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 479 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 60114 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 53110 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543611 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238469 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46332 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 155 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 213 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 215 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 796 | +| Questions | 793 | +| Select_full_join | 65 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 106 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 55 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 158 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 69 | +| Table_open_cache_misses | 213 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 559 | +| Uptime_since_flush_status | 559 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3471127 | +| Bytes_sent | 42813996 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 246 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 14 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 16 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 156 | +| Created_tmp_disk_tables | 38 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 264 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 485 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 60828 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 53463 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543654 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238508 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46335 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 157 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 215 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 228 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 824 | +| Questions | 821 | +| Select_full_join | 70 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 113 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 59 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 161 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 70 | +| Table_open_cache_misses | 215 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 560 | +| Uptime_since_flush_status | 560 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3475471 | +| Bytes_sent | 42833694 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 261 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 15 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 17 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 165 | +| Created_tmp_disk_tables | 40 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 278 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 491 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 61542 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 53816 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543697 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238547 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46338 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 242 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 852 | +| Questions | 849 | +| Select_full_join | 75 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 120 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 63 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 164 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 71 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 561 | +| Uptime_since_flush_status | 561 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3479815 | +| Bytes_sent | 42853480 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 276 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 16 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 18 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 174 | +| Created_tmp_disk_tables | 42 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 292 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 497 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 62256 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 54169 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543740 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238586 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46341 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 256 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 880 | +| Questions | 877 | +| Select_full_join | 80 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 127 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 67 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 167 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 74 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 562 | +| Uptime_since_flush_status | 562 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3484159 | +| Bytes_sent | 42873178 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 291 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 17 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 19 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 183 | +| Created_tmp_disk_tables | 44 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 306 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 503 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 62970 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 54522 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543783 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238625 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46344 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 270 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 908 | +| Questions | 905 | +| Select_full_join | 85 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 134 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 71 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 170 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 77 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 563 | +| Uptime_since_flush_status | 563 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3488503 | +| Bytes_sent | 42892876 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 306 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 18 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 20 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 192 | +| Created_tmp_disk_tables | 46 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 320 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 509 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 63684 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 54875 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543826 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238664 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46347 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 284 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 936 | +| Questions | 933 | +| Select_full_join | 90 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 141 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 75 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 173 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 80 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 564 | +| Uptime_since_flush_status | 564 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3492847 | +| Bytes_sent | 42912662 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 321 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 19 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 21 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 201 | +| Created_tmp_disk_tables | 48 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 334 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 515 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 64398 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 55228 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543869 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238703 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46350 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 298 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 964 | +| Questions | 961 | +| Select_full_join | 95 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 148 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 79 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 176 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 83 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 565 | +| Uptime_since_flush_status | 565 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3497191 | +| Bytes_sent | 42932559 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 336 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 20 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 22 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 210 | +| Created_tmp_disk_tables | 50 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 348 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 521 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 65112 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 55581 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543912 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238742 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46353 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 312 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 992 | +| Questions | 989 | +| Select_full_join | 100 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 155 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 83 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 179 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 86 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 566 | +| Uptime_since_flush_status | 566 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3501535 | +| Bytes_sent | 42952258 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 351 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 21 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 23 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 219 | +| Created_tmp_disk_tables | 52 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 362 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 527 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 65826 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 55934 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543955 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238781 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46356 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 326 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1020 | +| Questions | 1017 | +| Select_full_join | 105 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 162 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 87 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 182 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 89 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 567 | +| Uptime_since_flush_status | 567 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3505879 | +| Bytes_sent | 42972034 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 366 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 22 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 24 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 228 | +| Created_tmp_disk_tables | 54 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 376 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 533 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 66540 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 56287 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 543998 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238820 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46359 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 340 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1048 | +| Questions | 1045 | +| Select_full_join | 110 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 169 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 91 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 185 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 92 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 568 | +| Uptime_since_flush_status | 568 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3510223 | +| Bytes_sent | 42991810 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 381 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 23 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 25 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 237 | +| Created_tmp_disk_tables | 56 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 390 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 539 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 67254 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 56640 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544041 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238859 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46362 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 159 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 217 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 354 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1076 | +| Questions | 1073 | +| Select_full_join | 115 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 176 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 95 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 188 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 95 | +| Table_open_cache_misses | 217 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 569 | +| Uptime_since_flush_status | 569 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3514567 | +| Bytes_sent | 43011511 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 396 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 24 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 26 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 246 | +| Created_tmp_disk_tables | 58 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 404 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 545 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 67968 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 56993 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544084 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238898 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46365 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 368 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1104 | +| Questions | 1101 | +| Select_full_join | 120 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 183 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 99 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 191 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 96 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 570 | +| Uptime_since_flush_status | 570 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3518911 | +| Bytes_sent | 43031886 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 411 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 25 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 27 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 255 | +| Created_tmp_disk_tables | 60 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 418 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 551 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 68682 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 57346 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544127 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238937 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46368 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 381 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1132 | +| Questions | 1129 | +| Select_full_join | 125 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 190 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 103 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 194 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 99 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 571 | +| Uptime_since_flush_status | 571 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3523255 | +| Bytes_sent | 43051712 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 426 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 26 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 28 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 264 | +| Created_tmp_disk_tables | 62 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 432 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 557 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 69396 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 57699 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544170 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 238976 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46371 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 395 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1160 | +| Questions | 1157 | +| Select_full_join | 130 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 197 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 107 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 197 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 102 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 572 | +| Uptime_since_flush_status | 572 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3527599 | +| Bytes_sent | 43071415 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 441 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 27 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 29 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 273 | +| Created_tmp_disk_tables | 64 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 446 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 563 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 70110 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 58052 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544213 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 239015 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46374 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 409 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1188 | +| Questions | 1185 | +| Select_full_join | 135 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 204 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 111 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 200 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 105 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 573 | +| Uptime_since_flush_status | 573 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3531943 | +| Bytes_sent | 43091118 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 456 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 28 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 30 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 282 | +| Created_tmp_disk_tables | 66 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 460 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 569 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 70824 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 58405 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544256 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 239054 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46377 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 423 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1216 | +| Questions | 1213 | +| Select_full_join | 140 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 211 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 115 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 203 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 108 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 574 | +| Uptime_since_flush_status | 574 | ++-----------------------------------------------+------------------------------------+ + ++-----------------------------------------------+------------------------------------+ +| Variable_name | Value | ++-----------------------------------------------+------------------------------------+ +| Aborted_clients | 0 | +| Aborted_connects | 0 | +| Binlog_cache_disk_use | 10 | +| Binlog_cache_use | 20 | +| Binlog_stmt_cache_disk_use | 1 | +| Binlog_stmt_cache_use | 128 | +| Bytes_received | 3536287 | +| Bytes_sent | 43111020 | +| Com_admin_commands | 3 | +| Com_assign_to_keycache | 0 | +| Com_alter_db | 0 | +| Com_alter_db_upgrade | 0 | +| Com_alter_event | 0 | +| Com_alter_function | 0 | +| Com_alter_instance | 0 | +| Com_alter_procedure | 0 | +| Com_alter_server | 0 | +| Com_alter_table | 32 | +| Com_alter_tablespace | 0 | +| Com_alter_user | 0 | +| Com_analyze | 1 | +| Com_begin | 0 | +| Com_binlog | 0 | +| Com_call_procedure | 0 | +| Com_change_db | 2 | +| Com_change_master | 0 | +| Com_change_repl_filter | 0 | +| Com_check | 0 | +| Com_checksum | 1 | +| Com_commit | 1 | +| Com_create_db | 3 | +| Com_create_event | 0 | +| Com_create_function | 0 | +| Com_create_index | 0 | +| Com_create_procedure | 0 | +| Com_create_server | 0 | +| Com_create_table | 50 | +| Com_create_trigger | 3 | +| Com_create_udf | 0 | +| Com_create_user | 0 | +| Com_create_view | 7 | +| Com_dealloc_sql | 0 | +| Com_delete | 0 | +| Com_delete_multi | 0 | +| Com_do | 0 | +| Com_drop_db | 1 | +| Com_drop_event | 0 | +| Com_drop_function | 0 | +| Com_drop_index | 0 | +| Com_drop_procedure | 0 | +| Com_drop_server | 0 | +| Com_drop_table | 29 | +| Com_drop_trigger | 0 | +| Com_drop_user | 0 | +| Com_drop_view | 0 | +| Com_empty_query | 0 | +| Com_execute_sql | 0 | +| Com_explain_other | 0 | +| Com_flush | 0 | +| Com_get_diagnostics | 0 | +| Com_grant | 0 | +| Com_ha_close | 0 | +| Com_ha_open | 0 | +| Com_ha_read | 0 | +| Com_help | 0 | +| Com_insert | 35 | +| Com_insert_select | 0 | +| Com_install_plugin | 0 | +| Com_kill | 0 | +| Com_load | 1 | +| Com_lock_tables | 16 | +| Com_optimize | 0 | +| Com_preload_keys | 0 | +| Com_prepare_sql | 0 | +| Com_purge | 0 | +| Com_purge_before_date | 0 | +| Com_release_savepoint | 0 | +| Com_rename_table | 0 | +| Com_rename_user | 0 | +| Com_repair | 0 | +| Com_replace | 1 | +| Com_replace_select | 0 | +| Com_reset | 0 | +| Com_resignal | 0 | +| Com_revoke | 0 | +| Com_revoke_all | 0 | +| Com_rollback | 1 | +| Com_rollback_to_savepoint | 0 | +| Com_savepoint | 0 | +| Com_select | 471 | +| Com_set_option | 155 | +| Com_signal | 0 | +| Com_show_binlog_events | 0 | +| Com_show_binlogs | 0 | +| Com_show_charsets | 0 | +| Com_show_collations | 0 | +| Com_show_create_db | 0 | +| Com_show_create_event | 0 | +| Com_show_create_func | 0 | +| Com_show_create_proc | 0 | +| Com_show_create_table | 0 | +| Com_show_create_trigger | 0 | +| Com_show_databases | 0 | +| Com_show_engine_logs | 0 | +| Com_show_engine_mutex | 1 | +| Com_show_engine_status | 2 | +| Com_show_events | 0 | +| Com_show_errors | 0 | +| Com_show_fields | 0 | +| Com_show_function_code | 0 | +| Com_show_function_status | 0 | +| Com_show_grants | 0 | +| Com_show_keys | 0 | +| Com_show_master_status | 0 | +| Com_show_open_tables | 1 | +| Com_show_plugins | 0 | +| Com_show_privileges | 0 | +| Com_show_procedure_code | 0 | +| Com_show_procedure_status | 0 | +| Com_show_processlist | 29 | +| Com_show_profile | 0 | +| Com_show_profiles | 0 | +| Com_show_relaylog_events | 0 | +| Com_show_slave_hosts | 0 | +| Com_show_slave_status | 0 | +| Com_show_status | 31 | +| Com_show_storage_engines | 0 | +| Com_show_table_status | 0 | +| Com_show_tables | 2 | +| Com_show_triggers | 0 | +| Com_show_variables | 1 | +| Com_show_warnings | 0 | +| Com_show_create_user | 0 | +| Com_shutdown | 0 | +| Com_slave_start | 0 | +| Com_slave_stop | 0 | +| Com_group_replication_start | 0 | +| Com_group_replication_stop | 0 | +| Com_stmt_execute | 0 | +| Com_stmt_close | 0 | +| Com_stmt_fetch | 0 | +| Com_stmt_prepare | 0 | +| Com_stmt_reset | 0 | +| Com_stmt_send_long_data | 0 | +| Com_truncate | 0 | +| Com_uninstall_plugin | 0 | +| Com_unlock_tables | 16 | +| Com_update | 1 | +| Com_update_multi | 0 | +| Com_xa_commit | 0 | +| Com_xa_end | 0 | +| Com_xa_prepare | 0 | +| Com_xa_recover | 0 | +| Com_xa_rollback | 0 | +| Com_xa_start | 0 | +| Com_stmt_reprepare | 0 | +| Connection_errors_accept | 0 | +| Connection_errors_internal | 0 | +| Connection_errors_max_connections | 0 | +| Connection_errors_peer_address | 0 | +| Connection_errors_select | 0 | +| Connection_errors_tcpwrap | 0 | +| Connections | 291 | +| Created_tmp_disk_tables | 68 | +| Created_tmp_files | 8 | +| Created_tmp_tables | 474 | +| Delayed_errors | 0 | +| Delayed_insert_threads | 0 | +| Delayed_writes | 0 | +| Flush_commands | 1 | +| Handler_commit | 141 | +| Handler_delete | 0 | +| Handler_discover | 0 | +| Handler_external_lock | 575 | +| Handler_mrr_init | 0 | +| Handler_prepare | 74 | +| Handler_read_first | 32 | +| Handler_read_key | 30 | +| Handler_read_last | 0 | +| Handler_read_next | 1 | +| Handler_read_prev | 0 | +| Handler_read_rnd | 385 | +| Handler_read_rnd_next | 71538 | +| Handler_rollback | 29 | +| Handler_savepoint | 0 | +| Handler_savepoint_rollback | 0 | +| Handler_update | 0 | +| Handler_write | 58758 | +| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | +| Innodb_buffer_pool_load_status | Loading of buffer pool not started | +| Innodb_buffer_pool_resize_status | | +| Innodb_buffer_pool_pages_data | 255 | +| Innodb_buffer_pool_bytes_data | 4177920 | +| Innodb_buffer_pool_pages_dirty | 3 | +| Innodb_buffer_pool_bytes_dirty | 49152 | +| Innodb_buffer_pool_pages_flushed | 1315 | +| Innodb_buffer_pool_pages_free | 761 | +| Innodb_buffer_pool_pages_misc | 8 | +| Innodb_buffer_pool_pages_total | 1024 | +| Innodb_buffer_pool_read_ahead_rnd | 0 | +| Innodb_buffer_pool_read_ahead | 0 | +| Innodb_buffer_pool_read_ahead_evicted | 0 | +| Innodb_buffer_pool_read_requests | 544299 | +| Innodb_buffer_pool_reads | 838 | +| Innodb_buffer_pool_wait_free | 0 | +| Innodb_buffer_pool_write_requests | 239093 | +| Innodb_data_fsyncs | 719 | +| Innodb_data_pending_fsyncs | 0 | +| Innodb_data_pending_reads | 0 | +| Innodb_data_pending_writes | 0 | +| Innodb_data_read | 13746176 | +| Innodb_data_reads | 839 | +| Innodb_data_writes | 2029 | +| Innodb_data_written | 48336896 | +| Innodb_dblwr_pages_written | 1099 | +| Innodb_dblwr_writes | 33 | +| Innodb_log_waits | 0 | +| Innodb_log_write_requests | 17189 | +| Innodb_log_writes | 254 | +| Innodb_os_log_fsyncs | 276 | +| Innodb_os_log_pending_fsyncs | 0 | +| Innodb_os_log_pending_writes | 0 | +| Innodb_os_log_written | 8758272 | +| Innodb_page_size | 16384 | +| Innodb_pages_created | 691 | +| Innodb_pages_read | 838 | +| Innodb_pages_written | 1137 | +| Innodb_row_lock_current_waits | 0 | +| Innodb_row_lock_time | 0 | +| Innodb_row_lock_time_avg | 0 | +| Innodb_row_lock_time_max | 0 | +| Innodb_row_lock_waits | 0 | +| Innodb_rows_deleted | 0 | +| Innodb_rows_inserted | 46381 | +| Innodb_rows_read | 46274 | +| Innodb_rows_updated | 0 | +| Innodb_num_open_files | 41 | +| Innodb_truncated_status_writes | 0 | +| Innodb_available_undo_logs | 128 | +| Key_blocks_not_flushed | 0 | +| Key_blocks_unused | 13396 | +| Key_blocks_used | 9 | +| Key_read_requests | 1877 | +| Key_reads | 3 | +| Key_write_requests | 1014 | +| Key_writes | 9 | +| Locked_connects | 0 | +| Max_execution_time_exceeded | 0 | +| Max_execution_time_set | 0 | +| Max_execution_time_set_failed | 0 | +| Max_used_connections | 6 | +| Max_used_connections_time | 2017-04-21 14:57:40 | +| Not_flushed_delayed_rows | 0 | +| Ongoing_anonymous_transaction_count | 0 | +| Open_files | 32 | +| Open_streams | 0 | +| Open_table_definitions | 132 | +| Open_tables | 161 | +| Opened_files | 470 | +| Opened_table_definitions | 223 | +| Opened_tables | 219 | +| Performance_schema_accounts_lost | 0 | +| Performance_schema_cond_classes_lost | 0 | +| Performance_schema_cond_instances_lost | 0 | +| Performance_schema_digest_lost | 0 | +| Performance_schema_file_classes_lost | 0 | +| Performance_schema_file_handles_lost | 0 | +| Performance_schema_file_instances_lost | 0 | +| Performance_schema_hosts_lost | 0 | +| Performance_schema_index_stat_lost | 0 | +| Performance_schema_locker_lost | 0 | +| Performance_schema_memory_classes_lost | 0 | +| Performance_schema_metadata_lock_lost | 0 | +| Performance_schema_mutex_classes_lost | 0 | +| Performance_schema_mutex_instances_lost | 0 | +| Performance_schema_nested_statement_lost | 0 | +| Performance_schema_prepared_statements_lost | 0 | +| Performance_schema_program_lost | 0 | +| Performance_schema_rwlock_classes_lost | 0 | +| Performance_schema_rwlock_instances_lost | 0 | +| Performance_schema_session_connect_attrs_lost | 0 | +| Performance_schema_socket_classes_lost | 0 | +| Performance_schema_socket_instances_lost | 0 | +| Performance_schema_stage_classes_lost | 0 | +| Performance_schema_statement_classes_lost | 0 | +| Performance_schema_table_handles_lost | 0 | +| Performance_schema_table_instances_lost | 0 | +| Performance_schema_table_lock_stat_lost | 0 | +| Performance_schema_thread_classes_lost | 0 | +| Performance_schema_thread_instances_lost | 0 | +| Performance_schema_users_lost | 0 | +| Prepared_stmt_count | 0 | +| Qcache_free_blocks | 1 | +| Qcache_free_memory | 1031832 | +| Qcache_hits | 0 | +| Qcache_inserts | 0 | +| Qcache_lowmem_prunes | 0 | +| Qcache_not_cached | 436 | +| Qcache_queries_in_cache | 0 | +| Qcache_total_blocks | 1 | +| Queries | 1244 | +| Questions | 1241 | +| Select_full_join | 145 | +| Select_full_range_join | 0 | +| Select_range | 0 | +| Select_range_check | 0 | +| Select_scan | 218 | +| Slave_open_temp_tables | 0 | +| Slow_launch_threads | 0 | +| Slow_queries | 0 | +| Sort_merge_passes | 0 | +| Sort_range | 0 | +| Sort_rows | 385 | +| Sort_scan | 119 | +| Ssl_accept_renegotiates | 0 | +| Ssl_accepts | 0 | +| Ssl_callback_cache_hits | 0 | +| Ssl_cipher | | +| Ssl_cipher_list | | +| Ssl_client_connects | 0 | +| Ssl_connect_renegotiates | 0 | +| Ssl_ctx_verify_depth | 0 | +| Ssl_ctx_verify_mode | 0 | +| Ssl_default_timeout | 0 | +| Ssl_finished_accepts | 0 | +| Ssl_finished_connects | 0 | +| Ssl_server_not_after | | +| Ssl_server_not_before | | +| Ssl_session_cache_hits | 0 | +| Ssl_session_cache_misses | 0 | +| Ssl_session_cache_mode | NONE | +| Ssl_session_cache_overflows | 0 | +| Ssl_session_cache_size | 0 | +| Ssl_session_cache_timeouts | 0 | +| Ssl_sessions_reused | 0 | +| Ssl_used_session_cache_entries | 0 | +| Ssl_verify_depth | 0 | +| Ssl_verify_mode | 0 | +| Ssl_version | | +| Table_locks_immediate | 206 | +| Table_locks_waited | 0 | +| Table_open_cache_hits | 111 | +| Table_open_cache_misses | 219 | +| Table_open_cache_overflows | 0 | +| Tc_log_max_pages_used | 0 | +| Tc_log_page_size | 0 | +| Tc_log_page_waits | 0 | +| Threads_cached | 4 | +| Threads_connected | 2 | +| Threads_created | 6 | +| Threads_running | 2 | +| Uptime | 575 | +| Uptime_since_flush_status | 575 | ++-----------------------------------------------+------------------------------------+ diff --git a/t/pt-mext/samples/pt-130-out.txt b/t/pt-mext/samples/pt-130-out.txt new file mode 100644 index 00000000..da34ac0a --- /dev/null +++ b/t/pt-mext/samples/pt-130-out.txt @@ -0,0 +1,353 @@ +Aborted_clients 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Aborted_connects 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Binlog_cache_disk_use 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 +Binlog_cache_use 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +Binlog_stmt_cache_disk_use 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Binlog_stmt_cache_use 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 +Bytes_received 3409964 3414655 3418999 3423343 3427687 3432031 3436375 3440719 3445063 3449407 3453751 3458095 3462439 3466783 3471127 3475471 3479815 3484159 3488503 3492847 3497191 3501535 3505879 3510223 3514567 3518911 3523255 3527599 3531943 +Bytes_sent 42529191 42555645 42575373 42595063 42614754 42634488 42654259 42674131 42694497 42714317 42734120 42753817 42773558 42793299 42813996 42833694 42853480 42873178 42892876 42912662 42932559 42952258 42972034 42991810 43011511 43031886 43051712 43071415 43091118 +Com_admin_commands 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +Com_alter_db 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_db_upgrade 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_event 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_function 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_instance 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_procedure 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_server 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_table 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 +Com_alter_tablespace 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_alter_user 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_analyze 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_assign_to_keycache 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_begin 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_binlog 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_call_procedure 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_change_db 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +Com_change_master 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_change_repl_filter 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_check 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_checksum 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_commit 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_create_db 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +Com_create_event 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_function 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_index 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_procedure 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_server 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_table 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 +Com_create_trigger 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +Com_create_udf 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_user 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_create_view 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 +Com_dealloc_sql 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_delete 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_delete_multi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_do 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_db 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_drop_event 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_function 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_index 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_procedure 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_server 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_table 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 +Com_drop_trigger 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_user 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_drop_view 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_empty_query 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_execute_sql 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_explain_other 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_flush 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_get_diagnostics 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_grant 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_group_replication_start 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_group_replication_stop 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_ha_close 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_ha_open 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_ha_read 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_help 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_insert 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +Com_insert_select 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_install_plugin 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_kill 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_load 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_lock_tables 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 +Com_optimize 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_preload_keys 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_prepare_sql 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_purge 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_purge_before_date 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_release_savepoint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_rename_table 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_rename_user 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_repair 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_replace 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_replace_select 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_resignal 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_revoke 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_revoke_all 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_rollback 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_rollback_to_savepoint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_savepoint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_select 33 51 66 81 96 111 126 141 156 171 186 201 216 231 246 261 276 291 306 321 336 351 366 381 396 411 426 441 456 +Com_set_option 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 155 +Com_show_binlog_events 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_binlogs 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_charsets 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_collations 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_db 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_event 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_func 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_proc 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_table 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_trigger 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_create_user 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_databases 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_engine_logs 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_engine_mutex 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_show_engine_status 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +Com_show_errors 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_events 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_fields 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_function_code 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_function_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_grants 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_keys 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_master_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_open_tables 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_show_plugins 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_privileges 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_procedure_code 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_procedure_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_processlist 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 +Com_show_profile 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_profiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_relaylog_events 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_slave_hosts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_slave_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_status 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 +Com_show_storage_engines 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_tables 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +Com_show_table_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_triggers 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_show_variables 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_show_warnings 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_shutdown 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_signal 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_slave_start 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_slave_stop 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_close 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_execute 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_fetch 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_prepare 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_reprepare 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_reset 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_stmt_send_long_data 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_truncate 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_uninstall_plugin 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_unlock_tables 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 +Com_update 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Com_update_multi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_commit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_end 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_prepare 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_recover 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_rollback 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Com_xa_start 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_accept 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_internal 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_max_connections 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_peer_address 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_select 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connection_errors_tcpwrap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Connections 29 39 48 57 66 75 84 93 102 111 120 129 138 147 156 165 174 183 192 201 210 219 228 237 246 255 264 273 282 +Created_tmp_disk_tables 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 +Created_tmp_files 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +Created_tmp_tables 67 82 96 110 124 138 152 166 180 194 208 222 236 250 264 278 292 306 320 334 348 362 376 390 404 418 432 446 460 +Delayed_errors 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Delayed_insert_threads 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Delayed_writes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Flush_commands 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Handler_commit 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 141 +Handler_delete 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_discover 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_external_lock 399 407 413 419 425 431 437 443 449 455 461 467 473 479 485 491 497 503 509 515 521 527 533 539 545 551 557 563 569 +Handler_mrr_init 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_prepare 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 +Handler_read_first 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 +Handler_read_key 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 +Handler_read_last 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_read_next 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Handler_read_prev 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_read_rnd 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 +Handler_read_rnd_next 49678 51546 52260 52974 53688 54402 55116 55830 56544 57258 57972 58686 59400 60114 60828 61542 62256 62970 63684 64398 65112 65826 66540 67254 67968 68682 69396 70110 70824 +Handler_rollback 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 +Handler_savepoint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_savepoint_rollback 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_update 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Handler_write 48389 48874 49227 49580 49933 50286 50639 50992 51345 51698 52051 52404 52757 53110 53463 53816 54169 54522 54875 55228 55581 55934 56287 56640 56993 57346 57699 58052 58405 +Innodb_available_undo_logs 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 +Innodb_buffer_pool_bytes_data 4128768 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 4177920 +Innodb_buffer_pool_bytes_dirty 0 0 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 49152 +Innodb_buffer_pool_dump_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_load_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_pages_data 252 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 +Innodb_buffer_pool_pages_dirty 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +Innodb_buffer_pool_pages_flushed 1312 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 1315 +Innodb_buffer_pool_pages_free 764 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 761 +Innodb_buffer_pool_pages_misc 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +Innodb_buffer_pool_pages_total 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 +Innodb_buffer_pool_read_ahead 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_read_ahead_evicted 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_read_ahead_rnd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_read_requests 543053 543095 543138 543181 543224 543267 543310 543353 543396 543439 543482 543525 543568 543611 543654 543697 543740 543783 543826 543869 543912 543955 543998 544041 544084 544127 544170 544213 544256 +Innodb_buffer_pool_reads 836 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 +Innodb_buffer_pool_resize_status 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_wait_free 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_buffer_pool_write_requests 237962 238001 238040 238079 238118 238157 238196 238235 238274 238313 238352 238391 238430 238469 238508 238547 238586 238625 238664 238703 238742 238781 238820 238859 238898 238937 238976 239015 239054 +Innodb_data_fsyncs 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 719 +Innodb_data_pending_fsyncs 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_data_pending_reads 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_data_pending_writes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_data_read 13713408 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 13746176 +Innodb_data_reads 837 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 +Innodb_data_writes 2026 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 2029 +Innodb_data_written 48287744 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 48336896 +Innodb_dblwr_pages_written 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 1099 +Innodb_dblwr_writes 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 +Innodb_log_waits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_log_write_requests 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 17189 +Innodb_log_writes 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +Innodb_num_open_files 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 +Innodb_os_log_fsyncs 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 276 +Innodb_os_log_pending_fsyncs 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_os_log_pending_writes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_os_log_written 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 8758272 +Innodb_pages_created 690 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 691 +Innodb_page_size 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 16384 +Innodb_pages_read 836 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 838 +Innodb_pages_written 1134 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 1137 +Innodb_row_lock_current_waits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_row_lock_time 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_row_lock_time_avg 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_row_lock_time_max 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_row_lock_waits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_rows_deleted 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_rows_inserted 46292 46295 46298 46301 46304 46307 46310 46314 46317 46320 46323 46326 46329 46332 46335 46338 46341 46344 46347 46350 46353 46356 46359 46362 46365 46368 46371 46374 46377 +Innodb_rows_read 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 46274 +Innodb_rows_updated 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Innodb_truncated_status_writes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Key_blocks_not_flushed 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Key_blocks_unused 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 13396 +Key_blocks_used 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 +Key_read_requests 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 1877 +Key_reads 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +Key_write_requests 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 +Key_writes 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 +Locked_connects 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Max_execution_time_exceeded 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Max_execution_time_set 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Max_execution_time_set_failed 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Max_used_connections 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 +Max_used_connections_time 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 14 2017 +Not_flushed_delayed_rows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ongoing_anonymous_transaction_count 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Opened_files 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 470 +Opened_table_definitions 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 +Opened_tables 198 201 203 203 203 205 207 209 209 211 211 213 213 213 215 217 217 217 217 217 217 217 217 217 219 219 219 219 219 +Open_files 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 +Open_streams 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Open_table_definitions 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 +Open_tables 140 143 145 145 145 147 149 151 151 153 153 155 155 155 157 159 159 159 159 159 159 159 159 159 161 161 161 161 161 +Performance_schema_accounts_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_cond_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_cond_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_digest_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_file_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_file_handles_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_file_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_hosts_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_index_stat_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_locker_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_memory_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_metadata_lock_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_mutex_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_mutex_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_nested_statement_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_prepared_statements_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_program_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_rwlock_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_rwlock_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_session_connect_attrs_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_socket_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_socket_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_stage_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_statement_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_table_handles_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_table_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_table_lock_stat_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_thread_classes_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_thread_instances_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Performance_schema_users_lost 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Prepared_stmt_count 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Qcache_free_blocks 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Qcache_free_memory 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 1031832 +Qcache_hits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Qcache_inserts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Qcache_lowmem_prunes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Qcache_not_cached 33 49 63 77 91 105 119 133 147 161 175 189 201 215 228 242 256 270 284 298 312 326 340 354 368 381 395 409 423 +Qcache_queries_in_cache 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Qcache_total_blocks 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +Queries 426 460 488 516 544 572 600 628 656 684 712 740 768 796 824 852 880 908 936 964 992 1020 1048 1076 1104 1132 1160 1188 1216 +Questions 423 457 485 513 541 569 597 625 653 681 709 737 765 793 821 849 877 905 933 961 989 1017 1045 1073 1101 1129 1157 1185 1213 +Select_full_join 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 +Select_full_range_join 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Select_range 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Select_range_check 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Select_scan 13 22 29 36 43 50 57 64 71 78 85 92 99 106 113 120 127 134 141 148 155 162 169 176 183 190 197 204 211 +Slave_open_temp_tables 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Slow_launch_threads 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Slow_queries 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Sort_merge_passes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Sort_range 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Sort_rows 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 385 +Sort_scan 3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99 103 107 111 115 +Ssl_accept_renegotiates 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_accepts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_callback_cache_hits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_cipher 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_cipher_list 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_client_connects 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_connect_renegotiates 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_ctx_verify_depth 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_ctx_verify_mode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_default_timeout 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_finished_accepts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_finished_connects 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_server_not_after 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_server_not_before 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_hits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_misses 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_mode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_overflows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_size 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_session_cache_timeouts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_sessions_reused 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_used_session_cache_entries 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_verify_depth 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_verify_mode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ssl_version 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Table_locks_immediate 118 122 125 128 131 134 137 140 143 146 149 152 155 158 161 164 167 170 173 176 179 182 185 188 191 194 197 200 203 +Table_locks_waited 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Table_open_cache_hits 44 45 46 49 52 53 54 55 58 59 62 63 66 69 70 71 74 77 80 83 86 89 92 95 96 99 102 105 108 +Table_open_cache_misses 198 201 203 203 203 205 207 209 209 211 211 213 213 213 215 217 217 217 217 217 217 217 217 217 219 219 219 219 219 +Table_open_cache_overflows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Tc_log_max_pages_used 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Tc_log_page_size 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Tc_log_page_waits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Threads_cached 1 2 2 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 +Threads_connected 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +Threads_created 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 +Threads_running 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +Uptime 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 +Uptime_since_flush_status 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 diff --git a/t/pt-online-schema-change/bugs.t b/t/pt-online-schema-change/bugs.t index 5f93d6d6..3b072c8a 100644 --- a/t/pt-online-schema-change/bugs.t +++ b/t/pt-online-schema-change/bugs.t @@ -445,6 +445,31 @@ $output = output( # clear databases with their foreign keys $sb->load_file('master', "$sample/bug-1315130_cleanup.sql"); +# ############################################################################# +# Issue 1315130 +# Failed to detect child tables in other schema, and falsely identified +# child tables in own schema +# ############################################################################# + +$sb->load_file('master', "$sample/bug-1315130_cleanup.sql"); +$sb->load_file('master', "$sample/bug-1315130.sql"); + +$output = output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=bug_1315130_a,t=parent_table", + '--dry-run', + '--alter', "add column c varchar(16)", + '--alter-foreign-keys-method', 'auto', '--only-same-schema-fks'), + }, +); + +like( + $output, + qr/Child tables:\s*`bug_1315130_a`\.`child_table_in_same_schema` \(approx\. 1 rows\)[^`]*?Will/s, + "Ignore child tables in other schemas.", +); +# clear databases with their foreign keys +$sb->load_file('master', "$sample/bug-1315130_cleanup.sql"); + # ############################################################################# # Issue 1340728 @@ -603,6 +628,78 @@ is( $master_dbh->do("DROP DATABASE IF EXISTS test"); + + + +$sb->load_file('master', "$sample/bug-1613915.sql"); +$output = output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=o1", + '--execute', + '--alter', "ADD COLUMN c INT COMMENT 'change \"plus\" more than one word'", + '--chunk-size', '10', '--no-check-alter', + ), + }, +); + +like( + $output, + qr/Successfully altered/s, + "recognize comments", +); + +$rows = $master_dbh->selectrow_arrayref( + "SELECT COUNT(*) FROM test.o1"); +is( + $rows->[0], + 100, + "recognize comments fields count" +) or diag(Dumper($rows)); + +$rows = $master_dbh->selectrow_arrayref("SHOW CREATE TABLE test.o1"); +like( + $rows->[1], + qr/COMMENT 'change "plus" more than one word'/, + "recognize comments", +); + +$master_dbh->do("DROP DATABASE IF EXISTS test"); + +# Test for --skip-check-slave-lag +# Use the same files from previous test because for this test we are going to +# run a nonop so, any file will work +$master_dbh->do("DROP DATABASE IF EXISTS test"); + +$sb->load_file('master', "$sample/bug-1613915.sql"); +$output = output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=o1", + '--execute', + '--alter', "ENGINE=INNODB", + '--skip-check-slave-lag', "h=127.0.0.1,P=".$sb->port_for('slave1'), + ), + }, +); + +my $skipping_str = "Skipping.*".$sb->port_for('slave1'); +like( + $output, + qr/$skipping_str/s, + "--skip-check-slave-lag", +); + +# Use the same data than the previous test +$master_dbh->do("DROP DATABASE IF EXISTS test"); + +$sb->load_file('master', "$sample/bug-1613915.sql"); +$output = output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=o1", + '--execute', + '--alter', "ADD COLUMN c INT", + '--chunk-size', '10', + '--skip-check-slave-lag', "h=127.0.0.1,P=".$sb->port_for('slave1'), + ), + }, +); + # ############################################################################# # Done. # ############################################################################# diff --git a/t/pt-online-schema-change/issue-1638293.t b/t/pt-online-schema-change/issue-1638293.t index 81c28de1..dfd58853 100644 --- a/t/pt-online-schema-change/issue-1638293.t +++ b/t/pt-online-schema-change/issue-1638293.t @@ -22,6 +22,10 @@ require "$trunk/bin/pt-online-schema-change"; my $dp = new DSNParser(opts=>$dsn_opts); my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +if ( !$sb->is_cluster_mode ) { + plan skip_all => 'Only for PXC', +} + my ($master_dbh, $master_dsn) = $sb->start_sandbox( server => 'cmaster', type => 'master', diff --git a/t/pt-online-schema-change/long_fk_constraints.t b/t/pt-online-schema-change/long_fk_constraints.t new file mode 100644 index 00000000..1ef52ed8 --- /dev/null +++ b/t/pt-online-schema-change/long_fk_constraints.t @@ -0,0 +1,75 @@ +#!/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 Data::Dumper; +use PerconaTest; +use Sandbox; + +require "$trunk/bin/pt-online-schema-change"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +my $master_dbh = $sb->get_dbh_for('master'); + +if ( !$master_dbh ) { + plan skip_all => 'Cannot connect to sandbox master'; +} + +# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic +# so we need to specify --set-vars innodb_lock_wait_timeout-3 else the +# tool will die. +my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox'; +my @args = (qw(--set-vars innodb_lock_wait_timeout=3 --alter-foreign-keys-method rebuild_constraints)); +my $output; +my $exit_status; +my $sample = "t/pt-online-schema-change/samples/"; + +# ############################################################################ +# https://bugs.launchpad.net/percona-toolkit/+bug/1215587 +# Adding _ to constraints can create issues with constraint name length +# ############################################################################ + +$sb->load_file('master', "$sample/long_fk_constraints.sql"); + +# run once: we expect constraint names to be prefixed with one underscore +# if they havre't one, and to remove 2 if they have 2 +($output, $exit_status) = full_output( + sub { pt_online_schema_change::main(@args, + "$master_dsn,D=bug1215587,t=Table1", + "--alter", "ENGINE=InnoDB", + qw(--execute)) }, +); + +warn $output; + +my $constraints = $master_dbh->selectall_arrayref("SELECT TABLE_NAME, CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE table_schema='bug1215587' and (TABLE_NAME='Table1' OR TABLE_NAME='Table2') and CONSTRAINT_NAME LIKE '%fkey%' ORDER BY TABLE_NAME, CONSTRAINT_NAME"); + +warn Data::Dumper::Dumper($constraints); + +is_deeply( + $constraints, + [ + [ 'Table1', '__fkey1a' ], + [ 'Table1', '__fkey_SALES_RECURRING_PROFILE_CUSTOMER_CUSTOMER_ENTITY_ENTITY_I' ], + [ 'Table2', '_fkey2a' ], + [ 'Table2', '__fkey2b' ] + ], + "First run adds or removes underscore from constraint names, accordingly" +); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($master_dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +done_testing; diff --git a/t/pt-online-schema-change/no_drop_no_swap.t b/t/pt-online-schema-change/no_drop_no_swap.t index 41ee60d8..ebf19c08 100644 --- a/t/pt-online-schema-change/no_drop_no_swap.t +++ b/t/pt-online-schema-change/no_drop_no_swap.t @@ -68,6 +68,27 @@ is_deeply( "no swap-tables, drop-triggers, drop-new-table: tables" ) or diag(Dumper($tables), $output); +# ############################################################################# +# --no-swap-tables --no-drop-triggers implies --no-drop-new-table +# ############################################################################# +$sb->load_file('master', "$sample/basic_no_fks_innodb.sql"); + +$output = output( + sub { pt_online_schema_change::main( + "$master_dsn,D=pt_osc,t=t", + '--alter', 'ADD COLUMN d INT', + qw(--execute --no-swap-tables --no-drop-triggers)) + }, + stderr => 1, +); + +$tables = $dbh1->selectall_arrayref("SHOW TABLES FROM pt_osc"); +is_deeply( + $tables, + [ ['_t_new'], ['t'] ], + "no swap-tables, --no-drop-triggers implies --no-drop-new-table" +) or diag(Dumper($tables), $output); + # ############################################################################# # Done. # ############################################################################# diff --git a/t/pt-online-schema-change/pt-116.t b/t/pt-online-schema-change/pt-116.t new file mode 100644 index 00000000..e355730b --- /dev/null +++ b/t/pt-online-schema-change/pt-116.t @@ -0,0 +1,140 @@ +#!/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 Data::Dumper; +use PerconaTest; +use Sandbox; +use SqlModes; +use File::Temp qw/ tempdir /; + +plan tests => 8; + +require "$trunk/bin/pt-online-schema-change"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); + +my $master_dbh = $sb->get_dbh_for('master'); +my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox'; + +if ( !$master_dbh ) { + plan skip_all => 'Cannot connect to sandbox master'; +} + +# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic +# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the +# tool will die. +my @args = (qw(--set-vars innodb_lock_wait_timeout=3)); +my $output; +my $exit_status; +my $sample = "t/pt-online-schema-change/samples/"; + +$sb->load_file('master', "$sample/pt-116.sql"); + +my $dir = tempdir( CLEANUP => 1 ); +($output, $exit_status) = full_output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=t1", + '--execute', + '--alter', "ADD UNIQUE INDEX unique_1 (notunique)", + '--chunk-size', '1', + ), + }, + stderr => 1, +); + +like( + $output, + qr/It seems like/s, + "Need to specify use-insert-ignore", +); + +($output, $exit_status) = full_output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=t1", + '--execute', + '--alter', "ADD UNIQUE INDEX unique_1 (notunique)", + '--chunk-size', '1', + '--nouse-insert-ignore', + ), + }, + stderr => 1, +); + +like( + $output, + qr/Error copying rows from/s, + "Error adding unique index not using insert ignore", +); + +isnt( + $exit_status, + 0, + "Got error adding unique index (exit status != 0)", +); + +# Check no data was deleted from the original table +my $rows = $master_dbh->selectrow_arrayref( + "SELECT COUNT(*) FROM `test`.`t1`"); +is( + $rows->[0], + 3, + "ALTER ADD UNIQUE key on a field having duplicated values" +) or diag(Dumper($rows)); + + +# # This test looks weird but since we added use-insert-ignore, we know in this particular +# # case, having the testing dataset with repeated values for the field on which we are +# # adding a unique will lose data. +# # It is not the intention of this test to lose data, but we need to test the INSERT statement +# # was created as expected. +($output, $exit_status) = full_output( + sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=t1", + '--execute', + '--alter', "ADD UNIQUE INDEX unique_1 (notunique)", + '--chunk-size', '1', + '--use-insert-ignore', + ), + }, + stderr => 1, +); + + +like( + $output, + qr/Successfully altered/s, + "Error adding unique index not using insert ignore", +); + +is( + $exit_status, + 0, + "Added unique index and some rows got lost (exit status = 0)", +); + +# Check no data was deleted from the original table +$rows = $master_dbh->selectrow_arrayref( + "SELECT COUNT(*) FROM `test`.`t1`"); +is( + $rows->[0], + 2, + "Added unique index and some rows got lost (row count = original - 1)", +) or diag(Dumper($rows)); + +$master_dbh->do("DROP DATABASE IF EXISTS test"); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($master_dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +done_testing; diff --git a/t/pt-online-schema-change/samples/long_fk_constraints.sql b/t/pt-online-schema-change/samples/long_fk_constraints.sql new file mode 100644 index 00000000..cbc5811d --- /dev/null +++ b/t/pt-online-schema-change/samples/long_fk_constraints.sql @@ -0,0 +1,28 @@ +/* ----- Create two test tables with FKs for scenario 1 and 2: ----- */ +drop database if exists bug1215587; +CREATE DATABASE bug1215587; +USE bug1215587; + +CREATE TABLE IF NOT EXISTS `Table1` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `T2ID` smallint unsigned DEFAULT NULL, + PRIMARY KEY (`ID`), + KEY `tagIndex` (`T2ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `Table2` ( + `ID` smallint unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +ALTER TABLE `Table1` + ADD CONSTRAINT `_fkey1a` FOREIGN KEY (`T2ID`) REFERENCES `Table2` (`ID`) ON DELETE NO ACTION; + +ALTER TABLE `Table1` + ADD CONSTRAINT `_fkey_SALES_RECURRING_PROFILE_CUSTOMER_CUSTOMER_ENTITY_ENTITY_ID` FOREIGN KEY (`T2ID`) REFERENCES `Table2` (`ID`) ON DELETE NO ACTION; + +ALTER TABLE `Table2` + ADD CONSTRAINT `fkey2a` FOREIGN KEY (`ID`) REFERENCES `Table1` (`T2ID`) ON DELETE NO ACTION; + +ALTER TABLE `Table2` + ADD CONSTRAINT `_fkey2b` FOREIGN KEY (`ID`) REFERENCES `Table1` (`T2ID`) ON DELETE NO ACTION; diff --git a/t/pt-online-schema-change/samples/pt-116.sql b/t/pt-online-schema-change/samples/pt-116.sql new file mode 100644 index 00000000..1843266f --- /dev/null +++ b/t/pt-online-schema-change/samples/pt-116.sql @@ -0,0 +1,10 @@ +CREATE SCHEMA IF NOT EXISTS test; + +DROP TABLE IF EXISTS test.t1; + +CREATE TABLE test.t1 ( + id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + notunique VARCHAR(200) NOT NULL +); + +INSERT INTO test.t1(notunique) VALUES('test01'),('test01'),('test02'); diff --git a/t/pt-query-digest/history.t b/t/pt-query-digest/history.t index ee845aff..46f33b1e 100644 --- a/t/pt-query-digest/history.t +++ b/t/pt-query-digest/history.t @@ -74,75 +74,77 @@ FORMAT(rows_examined_pct_95, 6) AS rows_examined_pct_95, rows_sent_max, FORMAT(query_time_median, 6) AS query_time_median, lock_time_sum FROM test.query_review_history', { Slice => {} } ); -my $expected = [ { lock_time_median => '0', - lock_time_stddev => '0', - query_time_sum => '0.000036', - checksum => '11676753765851784517', - rows_examined_stddev => '0.000000', - ts_cnt => '3', - sample => 'SELECT col FROM foo_tbl', - rows_examined_median => '0.000000', - rows_sent_min => '0', - rows_examined_min => '0', - rows_sent_sum => '0', - query_time_min => '0.000012', - query_time_pct_95 => '0.000012', - rows_examined_sum => '0', - rows_sent_stddev => '0.000000', - rows_sent_pct_95 => '0.000000', - query_time_max => '0.000012', - rows_examined_max => '0', - query_time_stddev => '0.000000', - rows_sent_median => '0', - lock_time_pct_95 => '0.000000', - ts_min => '2007-12-18 11:48:27', - lock_time_min => '0.000000', - lock_time_max => '0', - ts_max => '2007-12-18 11:49:30', - rows_examined_pct_95 => '0.000000', - rows_sent_max => '0', - query_time_median => '0.000012', - lock_time_sum => '0' - }, - { lock_time_median => '0', - lock_time_stddev => '0', - query_time_sum => '0.000036', - checksum => '15334040482108055940', - rows_examined_stddev => '0.000000', - ts_cnt => '3', - sample => 'SELECT col FROM bar_tbl', - rows_examined_median => '0.000000', - rows_sent_min => '0', - rows_examined_min => '0', - rows_sent_sum => '0', - query_time_min => '0.000012', - query_time_pct_95 => '0.000012', - rows_examined_sum => '0', - rows_sent_stddev => '0.000000', - rows_sent_pct_95 => '0.000000', - query_time_max => '0.000012', - rows_examined_max => '0', - query_time_stddev => '0.000000', - rows_sent_median => '0', - lock_time_pct_95 => '0.000000', - ts_min => '2007-12-18 11:48:57', - lock_time_min => '0.000000', - lock_time_max => '0', - ts_max => '2007-12-18 11:49:07', - rows_examined_pct_95 => '0.000000', - rows_sent_max => '0', - query_time_median => '0.000012', - lock_time_sum => '0' - } - ]; + my $expected = [ + { + checksum => '11676753765851785216.00000000', + lock_time_max => '0.00000000', + lock_time_median => '0.00000000', + lock_time_min => '0.00000000', + lock_time_pct_95 => '0.00000000', + lock_time_stddev => '0.00000000', + lock_time_sum => '0.00000000', + query_time_max => '0.00001200', + query_time_median => '0.00001200', + query_time_min => '0.00001200', + query_time_pct_95 => '0.00001200', + query_time_stddev => '0.00000000', + query_time_sum => '0.00003600', + rows_examined_max => '0.00000000', + rows_examined_median => '0.00000000', + rows_examined_min => '0.00000000', + rows_examined_pct_95 => '0.00000000', + rows_examined_stddev => '0.00000000', + rows_examined_sum => '0.00000000', + rows_sent_max => '0.00000000', + rows_sent_median => '0.00000000', + rows_sent_min => '0.00000000', + rows_sent_pct_95 => '0.00000000', + rows_sent_stddev => '0.00000000', + rows_sent_sum => '0.00000000', + sample => 'SELECT col FROM foo_tbl', + ts_cnt => '3.00000000', + ts_max => '2007-12-18 11:49:30', + ts_min => '2007-12-18 11:48:27' + }, + { + checksum => '15334040482108055552.00000000', + lock_time_max => '0.00000000', + lock_time_median => '0.00000000', + lock_time_min => '0.00000000', + lock_time_pct_95 => '0.00000000', + lock_time_stddev => '0.00000000', + lock_time_sum => '0.00000000', + query_time_max => '0.00001200', + query_time_median => '0.00001200', + query_time_min => '0.00001200', + query_time_pct_95 => '0.00001200', + query_time_stddev => '0.00000000', + query_time_sum => '0.00003600', + rows_examined_max => '0.00000000', + rows_examined_median => '0.00000000', + rows_examined_min => '0.00000000', + rows_examined_pct_95 => '0.00000000', + rows_examined_stddev => '0.00000000', + rows_examined_sum => '0.00000000', + rows_sent_max => '0.00000000', + rows_sent_median => '0.00000000', + rows_sent_min => '0.00000000', + rows_sent_pct_95 => '0.00000000', + rows_sent_stddev => '0.00000000', + rows_sent_sum => '0.00000000', + sample => 'SELECT col FROM bar_tbl', + ts_cnt => '3.00000000', + ts_max => '2007-12-18 11:49:07', + ts_min => '2007-12-18 11:48:57' + } + ]; normalize_numbers($res); -normalize_numbers($expected); is_deeply( $res, $expected, - 'Adds/updates queries to query review history table' + 'Adds/updates queries to query review history table', ); diff --git a/t/pt-query-digest/json.t b/t/pt-query-digest/json.t index d9712075..a469f471 100644 --- a/t/pt-query-digest/json.t +++ b/t/pt-query-digest/json.t @@ -23,6 +23,10 @@ my @args = qw(--output json); my $sample = "$trunk/t/lib/samples"; my $results = "t/pt-query-digest/samples/json"; +my $escaped_trunk = $trunk; +$escaped_trunk =~ s/\//\\\\\//g; + +#1 ok( no_diff( sub { pt_query_digest::main(@args, "$sample/slowlogs/empty") }, @@ -31,20 +35,23 @@ ok( 'json output for empty log' ) or diag($test_diff); +#2 ok( no_diff( sub { pt_query_digest::main(@args, "$sample/slowlogs/slow002.txt") }, "$results/slow002.txt", - sed => [ qq/'s!$trunk!TRUNK!'/ ], + sed => [ q/'s!"name":".*slow002.txt"!"name":"slow002.txt"!'/ ], ), 'json output for slow002' ) or diag($test_diff); + +#3 ok( no_diff( sub { pt_query_digest::main(qw(--no-vertical-format), @args, "$sample/slowlogs/slow002.txt") }, "$results/slow002_no_vertical.txt", - sed => [ qq/'s!$trunk!TRUNK!'/ ], + sed => [ q/'s!"name":".*slow002.txt"!"name":"slow002.txt"!'/ ], ), 'json output for slow002 with --no-vertical-format' ) or diag($test_diff); @@ -54,7 +61,7 @@ ok( sub { pt_query_digest::main(qw(--output json-anon), "$sample/slowlogs/slow002.txt") }, "$results/slow002-anon.txt", - sed => [ qq/'s!$trunk!TRUNK!'/ ], + sed => [ q/'s!"name":".*slow002.txt"!"name":"slow002.txt"!'/ ], ), 'json-anon output for slow002' ) or diag($test_diff); @@ -63,7 +70,7 @@ ok( sub { pt_query_digest::main(qw(--output json-anon --no-vertical-format), "$sample/slowlogs/slow002.txt") }, "$results/slow002-anon_no_vertical.txt", - sed => [ qq/'s!$trunk!TRUNK!'/ ], + sed => [ q/'s!"name":".*slow002.txt"!"name":"slow002.txt"!'/ ], ), 'json-anon output for slow002 with --no-vertical-format' ) or diag($test_diff); @@ -75,7 +82,7 @@ ok( sub { pt_query_digest::main(qw(--type tcpdump --limit 10 --watch-server 127.0.0.1:12345), @args, "$sample/tcpdump/tcpdump021.txt") }, "$results/tcpdump021.txt", - sed => [ qq/'s!$trunk!TRUNK!'/ ], + sed => [ q/'s!"name":".*tcpdump021.txt"!"name":"tcpdump021.txt"!'/ ], ), 'json output for for tcpdump021', ) or diag($test_diff); @@ -91,7 +98,7 @@ ok( qw(--output json)) }, "t/pt-query-digest/samples/slow059_report02.txt", - "sed" => [q{-e 's/"name" : ".*/"name" : "slow059.txt"/'}], + sed => [ q/'s!"name":".*slow059.txt"!"name":"slow059.txt"!'/ ], ), 'json output for slow059' ) or diag($test_diff); diff --git a/t/pt-query-digest/review.t b/t/pt-query-digest/review.t index df10af54..f9a282d4 100644 --- a/t/pt-query-digest/review.t +++ b/t/pt-query-digest/review.t @@ -55,6 +55,7 @@ $output = run_with("slow006.txt", qw(--create-review-table), my ($table) = $dbh->selectrow_array( "show tables from test like 'query_review'"); +# 1 is($table, 'query_review', '--create-review-table'); $output = run_with("slow006.txt", @@ -62,29 +63,32 @@ $output = run_with("slow006.txt", my $res = $dbh->selectall_arrayref( 'SELECT * FROM test.query_review', { Slice => {} } ); -my $expected = [ { checksum => '11676753765851784517', - reviewed_by => undef, - reviewed_on => undef, - last_seen => '2007-12-18 11:49:30', - first_seen => '2007-12-18 11:48:27', - sample => 'SELECT col FROM foo_tbl', - fingerprint => 'select col from foo_tbl', - comments => undef, - }, - { checksum => '15334040482108055940', - reviewed_by => undef, - reviewed_on => undef, - last_seen => '2007-12-18 11:49:07', - first_seen => '2007-12-18 11:48:57', - sample => 'SELECT col FROM bar_tbl', - fingerprint => 'select col from bar_tbl', - comments => undef, - }, - ]; +my $expected = [ + { + checksum => '11676753765851785216.00000000', + comments => undef, + fingerprint => 'select col from foo_tbl', + first_seen => '2007-12-18 11:48:27', + last_seen => '2007-12-18 11:49:30', + reviewed_by => undef, + reviewed_on => undef, + sample => 'SELECT col FROM foo_tbl' + }, + { + checksum => '15334040482108055552.00000000', + comments => undef, + fingerprint => 'select col from bar_tbl', + first_seen => '2007-12-18 11:48:57', + last_seen => '2007-12-18 11:49:07', + reviewed_by => undef, + reviewed_on => undef, + sample => 'SELECT col FROM bar_tbl' + } +]; normalize_numbers($res); -normalize_numbers($expected); +# 2 is_deeply( $res, $expected, @@ -138,22 +142,25 @@ ok( # Make sure that when we run with all-0 timestamps they don't show up in the # output because they are useless of course (issue 202). -# Since some sql_modes don't allow '0000-00-00' dates, to keep this test valid -# we simply remove them for a moment and then restore. -my $modes = new SqlModes($dbh); -$modes->del(qw(STRICT_TRANS_TABLES STRICT_ALL_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE)); - -my $currmodes = $modes->get_modes_string(); - -$dbh->do("update test.query_review set first_seen='0000-00-00 00:00:00', " - . " last_seen='0000-00-00 00:00:00'"); -$output = run_with("slow022.txt", - '--review', "$dsn,D=test,t=query_review"); -unlike($output, qr/last_seen/, 'no last_seen when 0000 timestamp'); -unlike($output, qr/first_seen/, 'no first_seen when 0000 timestamp'); -unlike($output, qr/0000-00-00 00:00:00/, 'no 0000-00-00 00:00:00 timestamp'); - -$modes->restore_original_modes(); +SKIP: { + skip "MySQL 5.7 doesn't allow '0000-00-00' dates" if ($sandbox_version ge '5.7'); + # Since some sql_modes don't allow '0000-00-00' dates, to keep this test valid + # we simply remove them for a moment and then restore. + my $modes = new SqlModes($dbh); + $modes->del(qw(STRICT_TRANS_TABLES STRICT_ALL_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE)); + + my $currmodes = $modes->get_modes_string(); + + $dbh->do("update test.query_review set first_seen='0000-00-00 00:00:00', " + . " last_seen='0000-00-00 00:00:00'"); + $output = run_with("slow022.txt", + '--review', "$dsn,D=test,t=query_review"); + unlike($output, qr/last_seen/, 'no last_seen when 0000 timestamp'); + unlike($output, qr/first_seen/, 'no first_seen when 0000 timestamp'); + unlike($output, qr/0000-00-00 00:00:00/, 'no 0000-00-00 00:00:00 timestamp'); + + $modes->restore_original_modes(); +} # ########################################################################## # XXX The following tests will cause non-deterministic data, so run them diff --git a/t/pt-query-digest/samples/issue_1196-output-5.7.txt b/t/pt-query-digest/samples/issue_1196-output-5.7.txt index 4cd38fdd..ff7fa7f9 100644 --- a/t/pt-query-digest/samples/issue_1196-output-5.7.txt +++ b/t/pt-query-digest/samples/issue_1196-output-5.7.txt @@ -45,7 +45,7 @@ select t.a, count(*) from t join t t2 using(a) group by 1 order by 2 desc limit # key_len: NULL # ref: NULL # rows: 14 -# filtered: 100.00 +# filtered: 100 # Extra: Using temporary; Using filesort # *************************** 2. row *************************** # id: 1 @@ -58,5 +58,5 @@ select t.a, count(*) from t join t t2 using(a) group by 1 order by 2 desc limit # key_len: NULL # ref: NULL # rows: 14 -# filtered: 10.00 +# filtered: 10 # Extra: Using where; Using join buffer (Block Nested Loop) diff --git a/t/pt-query-digest/samples/json/slow002-anon.txt b/t/pt-query-digest/samples/json/slow002-anon.txt index 14399193..b50ce19d 100644 --- a/t/pt-query-digest/samples/json/slow002-anon.txt +++ b/t/pt-query-digest/samples/json/slow002-anon.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`\\G","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'\\G"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`\\G","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'\\G"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/slowlogs\/slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} +{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`\\G","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'\\G"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`\\G","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'\\G"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} diff --git a/t/pt-query-digest/samples/json/slow002-anon_no_vertical.txt b/t/pt-query-digest/samples/json/slow002-anon_no_vertical.txt index 0d3c3e5e..c5128c46 100644 --- a/t/pt-query-digest/samples/json/slow002-anon_no_vertical.txt +++ b/t/pt-query-digest/samples/json/slow002-anon_no_vertical.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/slowlogs\/slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} +{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} diff --git a/t/pt-query-digest/samples/json/slow002.txt b/t/pt-query-digest/samples/json/slow002.txt index 1b025fd4..fff396f5 100644 --- a/t/pt-query-digest/samples/json/slow002.txt +++ b/t/pt-query-digest/samples/json/slow002.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","example":{"Query_time":"0.726052","as_select":"select n.column1 = a.column1, n.word3 = a.word3 from db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) ","query":"update db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) \n set n.column1 = a.column1, n.word3 = a.word3","ts":"2007-12-18 11:48:27"},"fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`\\G","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'\\G"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`\\G","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'\\G"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/slowlogs\/slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} +{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","example":{"Query_time":"0.726052","as_select":"select n.column1 = a.column1, n.word3 = a.word3 from db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) ","query":"update db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) \n set n.column1 = a.column1, n.word3 = a.word3","ts":"2007-12-18 11:48:27"},"fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`\\G","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'\\G"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`\\G","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'\\G"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} diff --git a/t/pt-query-digest/samples/json/slow002_no_vertical.txt b/t/pt-query-digest/samples/json/slow002_no_vertical.txt index 8ef8d2f2..f355fd1f 100644 --- a/t/pt-query-digest/samples/json/slow002_no_vertical.txt +++ b/t/pt-query-digest/samples/json/slow002_no_vertical.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","example":{"Query_time":"0.726052","as_select":"select n.column1 = a.column1, n.word3 = a.word3 from db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) ","query":"update db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) \n set n.column1 = a.column1, n.word3 = a.word3","ts":"2007-12-18 11:48:27"},"fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/slowlogs\/slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} +{"classes":[{"attribute":"fingerprint","checksum":"66825DDC008FFA89","distillate":"UPDATE db?.tuningdetail_?_? db?.gonzo","example":{"Query_time":"0.726052","as_select":"select n.column1 = a.column1, n.word3 = a.word3 from db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) ","query":"update db2.tuningdetail_21_265507 n\n inner join db1.gonzo a using(gonzo) \n set n.column1 = a.column1, n.word3 = a.word3","ts":"2007-12-18 11:48:27"},"fingerprint":"update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?","histograms":{"Query_time":[0,0,0,0,0,1,0,0]},"metrics":{"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"1"},"Lock_time":{"avg":"0.000091","max":"0.000091","median":"0.000091","min":"0.000091","pct":"0.125000","pct_95":"0.000091","stddev":"0.000000","sum":"0.000091"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"129","max":"129","median":"129","min":"129","pct":"0","pct_95":"129","stddev":"0","sum":"129"},"Query_time":{"avg":"0.726052","max":"0.726052","median":"0.726052","min":"0.726052","pct":"0.125000","pct_95":"0.726052","stddev":"0.000000","sum":"0.726052"},"Rows_examined":{"avg":"62951","max":"62951","median":"62951","min":"62951","pct":"0","pct_95":"62951","stddev":"0","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"db":{"value":"db1"},"host":{"value":""},"user":{"value":"[SQL_SLAVE]"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`","status":"SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'"},{"create":"SHOW CREATE TABLE `db1`.`gonzo`","status":"SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'"}],"ts_max":"2007-12-18 11:48:27","ts_min":"2007-12-18 11:48:27"}],"global":{"files":[{"name":"slow002.txt","size":3841}],"metrics":{"Filesort":{"cnt":"0"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"1"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"17","max":"24","median":"17","min":"11","pct_95":"23","stddev":"3","sum":"107"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Lock_time":{"avg":"0.000038","max":"0.000091","median":"0.000026","min":"0.000000","pct_95":"0.000089","stddev":"0.000028","sum":"0.000304"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"62","max":"129","median":"62","min":"5","pct_95":"124","stddev":"34","sum":"502"},"Query_time":{"avg":"0.095260","max":"0.726052","median":"0.000516","min":"0.000012","pct_95":"0.705093","stddev":"0.231765","sum":"0.762080"},"Rows_examined":{"avg":"7868","max":"62951","median":"0","min":"0","pct_95":"61003","stddev":"20174","sum":"62951"},"Rows_sent":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"}},"query_count":8,"unique_query_count":7}} diff --git a/t/pt-query-digest/samples/json/tcpdump021.txt b/t/pt-query-digest/samples/json/tcpdump021.txt index c6e7a1c3..9548a1e4 100644 --- a/t/pt-query-digest/samples/json/tcpdump021.txt +++ b/t/pt-query-digest/samples/json/tcpdump021.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"AA8E9FA785927259","distillate":"SELECT d.t","example":{"Query_time":"0.000286","as_select":"SELECT i FROM d.t WHERE i=?","query":"PREPARE SELECT i FROM d.t WHERE i=?","ts":"2009-12-08 09:23:49.637394"},"fingerprint":"prepare select i from d.t where i=?","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"0"},"Query_length":{"avg":"35","max":"35","median":"35","min":"35","pct":"0","pct_95":"35","stddev":"0","sum":"35"},"Query_time":{"avg":"0.000286","max":"0.000286","median":"0.000286","min":"0.000286","pct":"0.333333","pct_95":"0.000286","stddev":"0.000000","sum":"0.000286"},"Statement_id":{"value":2},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `d`.`t`\\G","status":"SHOW TABLE STATUS FROM `d` LIKE 't'\\G"}],"ts_max":"2009-12-08 09:23:49.637394","ts_min":"2009-12-08 09:23:49.637394"},{"attribute":"fingerprint","checksum":"3F79759E7FA2F117","distillate":"SELECT d.t","example":{"Query_time":"0.000281","as_select":"SELECT i FROM d.t WHERE i=\"3\"","query":"EXECUTE SELECT i FROM d.t WHERE i=\"3\"","ts":"2009-12-08 09:23:49.637892"},"fingerprint":"execute select i from d.t where i=?","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"1"},"Query_length":{"avg":"37","max":"37","median":"37","min":"37","pct":"0","pct_95":"37","stddev":"0","sum":"37"},"Query_time":{"avg":"0.000281","max":"0.000281","median":"0.000281","min":"0.000281","pct":"0.333333","pct_95":"0.000281","stddev":"0.000000","sum":"0.000281"},"Statement_id":{"value":"2"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `d`.`t`\\G","status":"SHOW TABLE STATUS FROM `d` LIKE 't'\\G"}],"ts_max":"2009-12-08 09:23:49.637892","ts_min":"2009-12-08 09:23:49.637892"},{"attribute":"fingerprint","checksum":"AA353644DE4C4CB4","distillate":"ADMIN QUIT","example":{"Query_time":"0.000000","query":"administrator command: Quit","ts":"2009-12-08 09:23:49.638381"},"fingerprint":"administrator command: Quit","histograms":{"Query_time":[0,0,0,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"0"},"Query_length":{"avg":"27","max":"27","median":"27","min":"27","pct":"0","pct_95":"27","stddev":"0","sum":"27"},"Query_time":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"ts_max":"2009-12-08 09:23:49.638381","ts_min":"2009-12-08 09:23:49.638381"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/tcpdump\/tcpdump021.txt","size":2827}],"metrics":{"No_good_index_used":{"cnt":"0"},"No_index_used":{"cnt":"1"},"Query_length":{"avg":"33","max":"37","median":"34","min":"27","pct_95":"36","stddev":"4","sum":"99"},"Query_time":{"avg":"0.000189","max":"0.000286","median":"0.000273","min":"0.000000","pct_95":"0.000273","stddev":"0.000129","sum":"0.000567"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"}},"query_count":3,"unique_query_count":3}} +{"classes":[{"attribute":"fingerprint","checksum":"AA8E9FA785927259","distillate":"SELECT d.t","example":{"Query_time":"0.000286","as_select":"SELECT i FROM d.t WHERE i=?","query":"PREPARE SELECT i FROM d.t WHERE i=?","ts":"2009-12-08 09:23:49.637394"},"fingerprint":"prepare select i from d.t where i=?","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"0"},"Query_length":{"avg":"35","max":"35","median":"35","min":"35","pct":"0","pct_95":"35","stddev":"0","sum":"35"},"Query_time":{"avg":"0.000286","max":"0.000286","median":"0.000286","min":"0.000286","pct":"0.333333","pct_95":"0.000286","stddev":"0.000000","sum":"0.000286"},"Statement_id":{"value":2},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `d`.`t`\\G","status":"SHOW TABLE STATUS FROM `d` LIKE 't'\\G"}],"ts_max":"2009-12-08 09:23:49.637394","ts_min":"2009-12-08 09:23:49.637394"},{"attribute":"fingerprint","checksum":"3F79759E7FA2F117","distillate":"SELECT d.t","example":{"Query_time":"0.000281","as_select":"SELECT i FROM d.t WHERE i=\"3\"","query":"EXECUTE SELECT i FROM d.t WHERE i=\"3\"","ts":"2009-12-08 09:23:49.637892"},"fingerprint":"execute select i from d.t where i=?","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"1"},"Query_length":{"avg":"37","max":"37","median":"37","min":"37","pct":"0","pct_95":"37","stddev":"0","sum":"37"},"Query_time":{"avg":"0.000281","max":"0.000281","median":"0.000281","min":"0.000281","pct":"0.333333","pct_95":"0.000281","stddev":"0.000000","sum":"0.000281"},"Statement_id":{"value":"2"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `d`.`t`\\G","status":"SHOW TABLE STATUS FROM `d` LIKE 't'\\G"}],"ts_max":"2009-12-08 09:23:49.637892","ts_min":"2009-12-08 09:23:49.637892"},{"attribute":"fingerprint","checksum":"AA353644DE4C4CB4","distillate":"ADMIN QUIT","example":{"Query_time":"0.000000","query":"administrator command: Quit","ts":"2009-12-08 09:23:49.638381"},"fingerprint":"administrator command: Quit","histograms":{"Query_time":[0,0,0,0,0,0,0,0]},"metrics":{"No_good_index_used":{"yes":"0"},"No_index_used":{"yes":"0"},"Query_length":{"avg":"27","max":"27","median":"27","min":"27","pct":"0","pct_95":"27","stddev":"0","sum":"27"},"Query_time":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"host":{"value":"127.0.0.1"}},"query_count":1,"ts_max":"2009-12-08 09:23:49.638381","ts_min":"2009-12-08 09:23:49.638381"}],"global":{"files":[{"name":"tcpdump021.txt","size":2827}],"metrics":{"No_good_index_used":{"cnt":"0"},"No_index_used":{"cnt":"1"},"Query_length":{"avg":"33","max":"37","median":"34","min":"27","pct_95":"36","stddev":"4","sum":"99"},"Query_time":{"avg":"0.000189","max":"0.000286","median":"0.000273","min":"0.000000","pct_95":"0.000273","stddev":"0.000129","sum":"0.000567"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Warning_count":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"}},"query_count":3,"unique_query_count":3}} diff --git a/t/pt-query-digest/samples/slow007_explain_1-57.txt b/t/pt-query-digest/samples/slow007_explain_1-57.txt index 09850ded..f02b486e 100644 --- a/t/pt-query-digest/samples/slow007_explain_1-57.txt +++ b/t/pt-query-digest/samples/slow007_explain_1-57.txt @@ -41,5 +41,5 @@ SELECT fruit FROM trees\G # key_len: 27 # ref: NULL # rows: 1 -# filtered: 100.00 +# filtered: 100 # Extra: Using index diff --git a/t/pt-query-digest/samples/slow007_explain_2-57.txt b/t/pt-query-digest/samples/slow007_explain_2-57.txt index 8265bf7b..eee6d10d 100644 --- a/t/pt-query-digest/samples/slow007_explain_2-57.txt +++ b/t/pt-query-digest/samples/slow007_explain_2-57.txt @@ -41,5 +41,5 @@ SELECT fruit FROM trees\G # key_len: 27 # ref: NULL # rows: 3 -# filtered: 100.00 +# filtered: 100 # Extra: Using index diff --git a/t/pt-query-digest/samples/slow059_report02.txt b/t/pt-query-digest/samples/slow059_report02.txt index 7700bdd2..762fc70a 100644 --- a/t/pt-query-digest/samples/slow059_report02.txt +++ b/t/pt-query-digest/samples/slow059_report02.txt @@ -1,2 +1,2 @@ -{"classes":[{"attribute":"fingerprint","checksum":"9EA505F4786E7F15","distillate":"SELECT bar","example":{"Query_time":"0.000237","query":"SELECT foo FROM bar WHERE id=2","ts":"2013-11-28 01:05:31"},"fingerprint":"select foo from bar where id=?","histograms":{"Query_time":[0,0,2,0,0,0,0,0]},"metrics":{"Bytes_sent":{"avg":"545","max":"545","median":"545","min":"545","pct":"0","pct_95":"545","stddev":"0","sum":"1090"},"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"2","max":"2","median":"2","min":"2","pct":"0","pct_95":"2","stddev":"0","sum":"4"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_trx_id":{"value":"1A885840"},"Killed":{"yes":"0"},"Last_errno":{"value":"0"},"Lock_time":{"avg":"0.000118","max":"0.000122","median":"0.000118","min":"0.000114","pct":"0.666667","pct_95":"0.000122","stddev":"0.000006","sum":"0.000236"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"30","max":"30","median":"30","min":"30","pct":"0","pct_95":"30","stddev":"0","sum":"60"},"Query_time":{"avg":"0.000233","max":"0.000237","median":"0.000233","min":"0.000228","pct":"0.666667","pct_95":"0.000237","stddev":"0.000006","sum":"0.000465"},"Rows_examined":{"avg":"1","max":"1","median":"1","min":"1","pct":"0","pct_95":"1","stddev":"0","sum":"2"},"Rows_sent":{"avg":"1","max":"1","median":"1","min":"1","pct":"0","pct_95":"1","stddev":"0","sum":"2"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"db":{"value":"maindb"},"host":{"value":"localhost"},"rate_limit":{"value":"query:2"},"user":{"value":"user1"}},"query_count":2,"tables":[{"create":"SHOW CREATE TABLE `maindb`.`bar`\\G","status":"SHOW TABLE STATUS FROM `maindb` LIKE 'bar'\\G"}],"ts_max":"2013-11-28 01:05:31","ts_min":"2013-11-28 01:05:31"},{"attribute":"fingerprint","checksum":"D2BA209E593ABAA7","distillate":"INSERT foo","example":{"Query_time":"0.000165","query":"INSERT INTO foo VALUES (NULL, 3)","ts":"2013-11-28 01:05:31"},"fingerprint":"insert into foo values(?+)","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"Bytes_sent":{"avg":"481","max":"481","median":"481","min":"481","pct":"0","pct_95":"481","stddev":"0","sum":"481"},"Filesort":{"yes":"1"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"3","max":"3","median":"3","min":"3","pct":"0","pct_95":"3","stddev":"0","sum":"3"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_trx_id":{"value":"1A885842"},"Killed":{"yes":"0"},"Last_errno":{"value":"0"},"Lock_time":{"avg":"0.000048","max":"0.000048","median":"0.000048","min":"0.000048","pct":"0.333333","pct_95":"0.000048","stddev":"0.000000","sum":"0.000048"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"32","max":"32","median":"32","min":"32","pct":"0","pct_95":"32","stddev":"0","sum":"32"},"Query_time":{"avg":"0.000165","max":"0.000165","median":"0.000165","min":"0.000165","pct":"0.333333","pct_95":"0.000165","stddev":"0.000000","sum":"0.000165"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Rows_examined":{"avg":"10","max":"10","median":"10","min":"10","pct":"0","pct_95":"10","stddev":"0","sum":"10"},"Rows_sent":{"avg":"5","max":"5","median":"5","min":"5","pct":"0","pct_95":"5","stddev":"0","sum":"5"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"db":{"value":"maindb"},"host":{"value":"localhost"},"rate_limit":{"value":"query:2"},"user":{"value":"user1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `maindb`.`foo`\\G","status":"SHOW TABLE STATUS FROM `maindb` LIKE 'foo'\\G"}],"ts_max":"2013-11-28 01:05:31","ts_min":"2013-11-28 01:05:31"}],"global":{"files":[{"name":"\/home\/karl\/golang\/src\/github.com\/percona\/percona-toolkit\/t\/lib\/samples\/slowlogs\/slow059.txt","size":2152}],"metrics":{"Bytes_sent":{"avg":"523","max":"545","median":"537","min":"481","pct_95":"537","stddev":"32","sum":"1571"},"Filesort":{"cnt":"1"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"2","max":"3","median":"1","min":"2","pct_95":"2","stddev":"0","sum":"7"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Killed":{"cnt":"0"},"Lock_time":{"avg":"0.000095","max":"0.000122","median":"0.000114","min":"0.000048","pct_95":"0.000119","stddev":"0.000033","sum":"0.000284"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"30","max":"32","median":"28","min":"30","pct_95":"31","stddev":"1","sum":"92"},"Query_time":{"avg":"0.000210","max":"0.000237","median":"0.000225","min":"0.000165","pct_95":"0.000236","stddev":"0.000034","sum":"0.000630"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Rows_examined":{"avg":"4","max":"10","median":"0","min":"1","pct_95":"9","stddev":"4","sum":"12"},"Rows_sent":{"avg":"2","max":"5","median":"0","min":"1","pct_95":"4","stddev":"1","sum":"7"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"}},"query_count":3,"rate_limit":{"limit":2,"type":"query"},"unique_query_count":2}} +{"classes":[{"attribute":"fingerprint","checksum":"9EA505F4786E7F15","distillate":"SELECT bar","example":{"Query_time":"0.000237","query":"SELECT foo FROM bar WHERE id=2","ts":"2013-11-28 01:05:31"},"fingerprint":"select foo from bar where id=?","histograms":{"Query_time":[0,0,2,0,0,0,0,0]},"metrics":{"Bytes_sent":{"avg":"545","max":"545","median":"545","min":"545","pct":"0","pct_95":"545","stddev":"0","sum":"1090"},"Filesort":{"yes":"0"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"2","max":"2","median":"2","min":"2","pct":"0","pct_95":"2","stddev":"0","sum":"4"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.666667","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_trx_id":{"value":"1A885840"},"Killed":{"yes":"0"},"Last_errno":{"value":"0"},"Lock_time":{"avg":"0.000118","max":"0.000122","median":"0.000118","min":"0.000114","pct":"0.666667","pct_95":"0.000122","stddev":"0.000006","sum":"0.000236"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"30","max":"30","median":"30","min":"30","pct":"0","pct_95":"30","stddev":"0","sum":"60"},"Query_time":{"avg":"0.000233","max":"0.000237","median":"0.000233","min":"0.000228","pct":"0.666667","pct_95":"0.000237","stddev":"0.000006","sum":"0.000465"},"Rows_examined":{"avg":"1","max":"1","median":"1","min":"1","pct":"0","pct_95":"1","stddev":"0","sum":"2"},"Rows_sent":{"avg":"1","max":"1","median":"1","min":"1","pct":"0","pct_95":"1","stddev":"0","sum":"2"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"db":{"value":"maindb"},"host":{"value":"localhost"},"rate_limit":{"value":"query:2"},"user":{"value":"user1"}},"query_count":2,"tables":[{"create":"SHOW CREATE TABLE `maindb`.`bar`\\G","status":"SHOW TABLE STATUS FROM `maindb` LIKE 'bar'\\G"}],"ts_max":"2013-11-28 01:05:31","ts_min":"2013-11-28 01:05:31"},{"attribute":"fingerprint","checksum":"D2BA209E593ABAA7","distillate":"INSERT foo","example":{"Query_time":"0.000165","query":"INSERT INTO foo VALUES (NULL, 3)","ts":"2013-11-28 01:05:31"},"fingerprint":"insert into foo values(?+)","histograms":{"Query_time":[0,0,1,0,0,0,0,0]},"metrics":{"Bytes_sent":{"avg":"481","max":"481","median":"481","min":"481","pct":"0","pct_95":"481","stddev":"0","sum":"481"},"Filesort":{"yes":"1"},"Filesort_on_disk":{"yes":"0"},"Full_join":{"yes":"0"},"Full_scan":{"yes":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"3","max":"3","median":"3","min":"3","pct":"0","pct_95":"3","stddev":"0","sum":"3"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct":"0.333333","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_trx_id":{"value":"1A885842"},"Killed":{"yes":"0"},"Last_errno":{"value":"0"},"Lock_time":{"avg":"0.000048","max":"0.000048","median":"0.000048","min":"0.000048","pct":"0.333333","pct_95":"0.000048","stddev":"0.000000","sum":"0.000048"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"yes":"0"},"Query_length":{"avg":"32","max":"32","median":"32","min":"32","pct":"0","pct_95":"32","stddev":"0","sum":"32"},"Query_time":{"avg":"0.000165","max":"0.000165","median":"0.000165","min":"0.000165","pct":"0.333333","pct_95":"0.000165","stddev":"0.000000","sum":"0.000165"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Rows_examined":{"avg":"10","max":"10","median":"10","min":"10","pct":"0","pct_95":"10","stddev":"0","sum":"10"},"Rows_sent":{"avg":"5","max":"5","median":"5","min":"5","pct":"0","pct_95":"5","stddev":"0","sum":"5"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"yes":"0"},"Tmp_table_on_disk":{"yes":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct":"0","pct_95":"0","stddev":"0","sum":"0"},"db":{"value":"maindb"},"host":{"value":"localhost"},"rate_limit":{"value":"query:2"},"user":{"value":"user1"}},"query_count":1,"tables":[{"create":"SHOW CREATE TABLE `maindb`.`foo`\\G","status":"SHOW TABLE STATUS FROM `maindb` LIKE 'foo'\\G"}],"ts_max":"2013-11-28 01:05:31","ts_min":"2013-11-28 01:05:31"}],"global":{"files":[{"name":"slow059.txt","size":2152}],"metrics":{"Bytes_sent":{"avg":"523","max":"545","median":"537","min":"481","pct_95":"537","stddev":"32","sum":"1571"},"Filesort":{"cnt":"1"},"Filesort_on_disk":{"cnt":"0"},"Full_join":{"cnt":"0"},"Full_scan":{"cnt":"0"},"InnoDB_IO_r_bytes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_ops":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"InnoDB_IO_r_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_pages_distinct":{"avg":"2","max":"3","median":"1","min":"2","pct_95":"2","stddev":"0","sum":"7"},"InnoDB_queue_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"InnoDB_rec_lock_wait":{"avg":"0.000000","max":"0.000000","median":"0.000000","min":"0.000000","pct_95":"0.000000","stddev":"0.000000","sum":"0.000000"},"Killed":{"cnt":"0"},"Lock_time":{"avg":"0.000095","max":"0.000122","median":"0.000114","min":"0.000048","pct_95":"0.000119","stddev":"0.000033","sum":"0.000284"},"Merge_passes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"QC_Hit":{"cnt":"0"},"Query_length":{"avg":"30","max":"32","median":"28","min":"30","pct_95":"31","stddev":"1","sum":"92"},"Query_time":{"avg":"0.000210","max":"0.000237","median":"0.000225","min":"0.000165","pct_95":"0.000236","stddev":"0.000034","sum":"0.000630"},"Rows_affected":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Rows_examined":{"avg":"4","max":"10","median":"0","min":"1","pct_95":"9","stddev":"4","sum":"12"},"Rows_sent":{"avg":"2","max":"5","median":"0","min":"1","pct_95":"4","stddev":"1","sum":"7"},"Tmp_disk_tables":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_table":{"cnt":"0"},"Tmp_table_on_disk":{"cnt":"0"},"Tmp_table_sizes":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"},"Tmp_tables":{"avg":"0","max":"0","median":"0","min":"0","pct_95":"0","stddev":"0","sum":"0"}},"query_count":3,"rate_limit":{"limit":2,"type":"query"},"unique_query_count":2}} diff --git a/t/pt-show-grants/basics.t b/t/pt-show-grants/basics.t index 0ac60a70..8d954571 100644 --- a/t/pt-show-grants/basics.t +++ b/t/pt-show-grants/basics.t @@ -105,6 +105,7 @@ $modes->restore_original_modes(); my $postfix = $sandbox_version < '5.7' ? '' : '-57'; +# 11 ok( no_diff( sub { pt_show_grants::main('-F', $cnf, qw(--only sally --no-header)) }, @@ -115,6 +116,7 @@ ok( ); +# 12 ok( no_diff( sub { pt_show_grants::main('-F', $cnf, qw(--only sally --no-header), @@ -126,6 +128,7 @@ ok( ); +# 13 ok( no_diff( sub { pt_show_grants::main('-F', $cnf, qw(--only sally --no-header), @@ -139,6 +142,7 @@ ok( diag(`/tmp/12345/use -u root -e "GRANT SELECT ON sakila.city TO 'sally'\@'%'"`); +# 14 ok( no_diff( sub { pt_show_grants::main('-F', $cnf, qw(--only sally --no-header)) }, diff --git a/t/pt-show-grants/samples/column-grants-57.txt b/t/pt-show-grants/samples/column-grants-57.txt index 9980134f..59c38788 100644 --- a/t/pt-show-grants/samples/column-grants-57.txt +++ b/t/pt-show-grants/samples/column-grants-57.txt @@ -2,5 +2,5 @@ CREATE USER IF NOT EXISTS 'sally'@'%'; ALTER USER 'sally'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; GRANT INSERT (city), SELECT (city_id) ON `sakila`.`city` TO 'sally'@'%'; -GRANT SELECT (SANumber, DateCreated, PaymentStat, PckPrice) ON `test`.`t` TO 'sally'@'%'; +GRANT SELECT (DateCreated, PaymentStat, PckPrice, SANumber) ON `test`.`t` TO 'sally'@'%'; GRANT USAGE ON *.* TO 'sally'@'%'; diff --git a/t/pt-show-grants/samples/column-grants-combined-57.txt b/t/pt-show-grants/samples/column-grants-combined-57.txt index edecce0b..26964043 100644 --- a/t/pt-show-grants/samples/column-grants-combined-57.txt +++ b/t/pt-show-grants/samples/column-grants-combined-57.txt @@ -2,5 +2,5 @@ CREATE USER IF NOT EXISTS 'sally'@'%'; ALTER USER 'sally'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; GRANT INSERT (city), SELECT, SELECT (city_id) ON `sakila`.`city` TO 'sally'@'%'; -GRANT SELECT (SANumber, DateCreated, PaymentStat, PckPrice) ON `test`.`t` TO 'sally'@'%'; +GRANT SELECT (DateCreated, PaymentStat, PckPrice, SANumber) ON `test`.`t` TO 'sally'@'%'; GRANT USAGE ON *.* TO 'sally'@'%'; diff --git a/t/pt-show-grants/samples/column-grants-separate-57.txt b/t/pt-show-grants/samples/column-grants-separate-57.txt index 02bfe818..28bd8bc7 100644 --- a/t/pt-show-grants/samples/column-grants-separate-57.txt +++ b/t/pt-show-grants/samples/column-grants-separate-57.txt @@ -2,6 +2,6 @@ CREATE USER IF NOT EXISTS 'sally'@'%'; ALTER USER 'sally'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; GRANT INSERT (city) ON `sakila`.`city` TO 'sally'@'%'; -GRANT SELECT (SANumber, DateCreated, PaymentStat, PckPrice) ON `test`.`t` TO 'sally'@'%'; +GRANT SELECT (DateCreated, PaymentStat, PckPrice, SANumber) ON `test`.`t` TO 'sally'@'%'; GRANT SELECT (city_id) ON `sakila`.`city` TO 'sally'@'%'; GRANT USAGE ON *.* TO 'sally'@'%'; diff --git a/t/pt-show-grants/samples/column-grants-separate-revoke-57.txt b/t/pt-show-grants/samples/column-grants-separate-revoke-57.txt index 083ad358..5df1b802 100644 --- a/t/pt-show-grants/samples/column-grants-separate-revoke-57.txt +++ b/t/pt-show-grants/samples/column-grants-separate-revoke-57.txt @@ -1,12 +1,12 @@ -- Revoke statements for 'sally'@'%' REVOKE INSERT (city) ON `sakila`.`city` FROM 'sally'@'%'; -REVOKE SELECT (SANumber, DateCreated, PaymentStat, PckPrice) ON `test`.`t` FROM 'sally'@'%'; +REVOKE SELECT (DateCreated, PaymentStat, PckPrice, SANumber) ON `test`.`t` FROM 'sally'@'%'; REVOKE SELECT (city_id) ON `sakila`.`city` FROM 'sally'@'%'; REVOKE USAGE ON *.* FROM 'sally'@'%'; -- Grants for 'sally'@'%' CREATE USER IF NOT EXISTS 'sally'@'%'; ALTER USER 'sally'@'%' IDENTIFIED WITH 'mysql_native_password' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; GRANT INSERT (city) ON `sakila`.`city` TO 'sally'@'%'; -GRANT SELECT (SANumber, DateCreated, PaymentStat, PckPrice) ON `test`.`t` TO 'sally'@'%'; +GRANT SELECT (DateCreated, PaymentStat, PckPrice, SANumber) ON `test`.`t` TO 'sally'@'%'; GRANT SELECT (city_id) ON `sakila`.`city` TO 'sally'@'%'; GRANT USAGE ON *.* TO 'sally'@'%'; diff --git a/t/pt-stalk/pt-stalk.t b/t/pt-stalk/pt-stalk.t index 31287c2d..4f451f40 100644 --- a/t/pt-stalk/pt-stalk.t +++ b/t/pt-stalk/pt-stalk.t @@ -453,6 +453,7 @@ SKIP: { PerconaTest::kill_program(pid_file => $pid_file); $output = `cat $dest/*-ps-locks-transactions 2>/dev/null`; + like( $output, qr/ STATE: ACTIVE/, @@ -464,6 +465,67 @@ SKIP: { qr/ STATE: COMMITTED/, "MySQL 5.7 COMMITTED transactions" ); + + cleanup(); +} + +SKIP: { + + skip "Only test on mysql 5.7" if ( $sandbox_version lt '5.7' ); + + my ($master1_dbh, $master1_dsn) = $sb->start_sandbox( + server => 'chan_master1', + type => 'master', + ); + my ($master2_dbh, $master2_dsn) = $sb->start_sandbox( + server => 'chan_master2', + type => 'master', + ); + my ($slave1_dbh, $slave1_dsn) = $sb->start_sandbox( + server => 'chan_slave1', + type => 'master', + ); + my $slave1_port = $sb->port_for('chan_slave1'); + + $sb->load_file('chan_master1', "sandbox/gtid_on.sql", undef, no_wait => 1); + $sb->load_file('chan_master2', "sandbox/gtid_on.sql", undef, no_wait => 1); + $sb->load_file('chan_slave1', "sandbox/slave_channels.sql", undef, no_wait => 1); + + my $cmd = "$trunk/bin/pt-stalk --no-stalk --iterations=1 --host=127.0.0.1 --port=$slave1_port --user=msandbox " + . "--password=msandbox --sleep 0 --run-time=10 --dest $dest --log $log_file --iterations=1 " + . "--run-time=2 --pid $pid_file --defaults-file=$cnf >$log_file 2>&1"; + system($cmd); + sleep 5; + PerconaTest::kill_program(pid_file => $pid_file); + + $output = `cat $dest/*-slave-status 2>/dev/null`; + + like( + $output, + qr/FROM performance_schema.replication_connection_configuration JOIN performance_schema.replication_applier_configuration USING/, + "MySQL 5.7 SLAVE STATUS" + ); + $sb->stop_sandbox(qw(chan_master1 chan_master2 chan_slave1)); +} + +SKIP: { + skip "Only test on mysql 5.6" if ( $sandbox_version ne '5.6' ); + + my $slave1_port = $sb->port_for('slave1'); + my $cmd = "$trunk/bin/pt-stalk --no-stalk --iterations=1 --host=127.0.0.1 --port=$slave1_port --user=msandbox " + . "--password=msandbox --sleep 0 --run-time=10 --dest $dest --log $log_file --iterations=1 " + . "--run-time=2 --pid $pid_file --defaults-file=$cnf >$log_file 2>&1"; + system($cmd); + sleep 5; + PerconaTest::kill_program(pid_file => $pid_file); + + $output = `cat $dest/*-slave-status 2>/dev/null`; + + like( + $output, + qr/SHOW SLAVE STATUS/, + "MySQL 5.6 SLAVE STATUS" + ); } # ########################################################################### diff --git a/t/pt-table-checksum/basics.t b/t/pt-table-checksum/basics.t index 788fcc08..9be83a7a 100644 --- a/t/pt-table-checksum/basics.t +++ b/t/pt-table-checksum/basics.t @@ -59,7 +59,6 @@ sub reset_repl_db { $master_dbh->do("use $repl_db"); } - # ############################################################################ # Default checksum and results. The tool does not technically require any # options on well-configured systems (which the test env cannot be). With @@ -69,6 +68,7 @@ sub reset_repl_db { # in throttle.t. # ############################################################################ +# 1 ok( no_diff( sub { pt_table_checksum::main(@args) }, @@ -82,17 +82,18 @@ ok( # large that all tables will be done in a single chunk without an index. # Since this varies by default, there's no use checking the checksums # other than to ensure that there's at least one for each table. +# 2 $row = $master_dbh->selectrow_arrayref("select count(*) from percona.checksums"); my $max_chunks = $sandbox_version < '5.7' ? 60 : 100; ok( - $row->[0] > 30 && $row->[0] < $max_chunks, - 'Between 30 and 60 chunks' + $row->[0] > 25 && $row->[0] < $max_chunks, + 'Between 25 and 60 chunks' ) or diag($row->[0]); # ############################################################################ # Static chunk size (disable --chunk-time) # ############################################################################ - +# 3 ok( no_diff( sub { pt_table_checksum::main(@args, qw(--chunk-time 0)) }, @@ -106,8 +107,8 @@ $row = $master_dbh->selectrow_arrayref("select count(*) from percona.checksums") my $max_rows = $sandbox_version < '5.7' ? 90 : 100; ok( - $row->[0] >= 85 && $row->[0] <= $max_rows, - 'Between 85 and 90 chunks on master' + $row->[0] >= 75 && $row->[0] <= $max_rows, + 'Between 75 and 90 chunks on master' ) or diag($row->[0]); diff --git a/t/pt-table-checksum/bugs.t b/t/pt-table-checksum/bugs.t index 80701111..43778079 100644 --- a/t/pt-table-checksum/bugs.t +++ b/t/pt-table-checksum/bugs.t @@ -206,6 +206,22 @@ like( "Bug 1016131: ptc should skip tables where all columns are excluded" ); +# Test #12 +{ +$output = output( + sub { pt_table_checksum::main(@args, + '--skip-check-slave-lag', "h=127.0.0.1,P=".$sb->port_for('slave1'), + ), + }, +); + +my $skipping_str = "Skipping.*".$sb->port_for('slave1'); +like( + $output, + qr/$skipping_str/s, + "--skip-check-slave-lag", +); +} # ############################################################################# # Illegal division by zero at pt-table-checksum line 7950 # https://bugs.launchpad.net/percona-toolkit/+bug/1075638 @@ -319,6 +335,7 @@ diag(`/tmp/12346/stop >/dev/null`); diag(`/tmp/12346/start >/dev/null`); +# # ############################################################################# # Done. # ############################################################################# diff --git a/t/pt-table-checksum/issue_1485195.t b/t/pt-table-checksum/issue_1485195.t index 334fa73b..d8a91697 100644 --- a/t/pt-table-checksum/issue_1485195.t +++ b/t/pt-table-checksum/issue_1485195.t @@ -42,7 +42,7 @@ $output = output( is( PerconaTest::count_checksum_results($output, 'rows'), - 24, + $sandbox_version lt '5.7' ? 24 : 25, "Large BLOB/TEXT/BINARY Checksum" ); diff --git a/t/pt-table-checksum/issue_1651002.t b/t/pt-table-checksum/issue_1651002.t index 6c883762..2d21a0da 100644 --- a/t/pt-table-checksum/issue_1651002.t +++ b/t/pt-table-checksum/issue_1651002.t @@ -42,23 +42,15 @@ $sb->do_as_root("slave1", q/GRANT REPLICATION CLIENT ON *.* TO 'slave_user'@'loc $sb->do_as_root("slave1", q/GRANT ALL ON *.* TO 'slave_user'@'localhost'/); $sb->do_as_root("slave1", q/FLUSH PRIVILEGES/); -$sb->do_as_root("slave2", q/GRANT REPLICATION CLIENT ON *.* TO 'slave_user'@'localhost' IDENTIFIED BY 'slave_password'/); -$sb->do_as_root("slave2", q/GRANT ALL ON *.* TO 'slave_user'@'localhost'/); -$sb->do_as_root("slave2", q/FLUSH PRIVILEGES/); - $sb->wait_for_slaves(); -# Run these commands inside issue_1651002.sql to delete the sandbox user ONLY from master -# These command must be in the .sql file because all of them need to run in the same session -# set sql_log_bin=0; -# DROP USER 'slave_user'; -# set sql_log_bin=1; $sb->load_file('master', 't/pt-table-checksum/samples/issue_1651002.sql'); # Ensure we cannot connect to slaves using standard credentials # Since slave2 is a slave of slave1, removing the user from the slave1 will remove # the user also from slave2 -$sb->do_as_root("slave1", q/DROP USER 'msandbox'@'%'/); +$sb->do_as_root("slave1", q/RENAME USER 'msandbox'@'%' TO 'msandbox_old'@'%'/); $sb->do_as_root("slave1", q/FLUSH PRIVILEGES/); +$sb->do_as_root("slave1", q/FLUSH TABLES/); $output = output( @@ -71,19 +63,19 @@ is( "Large BLOB/TEXT/BINARY Checksum" ); -# Restore privilegs for the other test files -$sb->do_as_root("master", q/GRANT ALL PRIVILEGES ON *.* TO 'msandbox'@'%' IDENTIFIED BY 'msandbox'/); -$sb->do_as_root("master", q/FLUSH PRIVILEGES/); - -$sb->do_as_root("slave1", q/GRANT ALL PRIVILEGES ON *.* TO 'msandbox'@'%' IDENTIFIED BY 'msandbox'/); -$sb->do_as_root("slave1", q/FLUSH PRIVILEGES/); # ############################################################################# # Done. # ############################################################################# diag("Stopping the sandbox to leave a clean sandbox for the next test file"); + $sb->do_as_root("slave1", q/DROP USER 'slave_user'@'localhost'/); $sb->do_as_root("slave1", q/FLUSH PRIVILEGES/); +# Restore privilegs for the other test files +$sb->do_as_root("slave1", q/RENAME USER 'msandbox_old'@'%' TO 'msandbox'@'%'/); +$sb->do_as_root("master", q/FLUSH PRIVILEGES/); +$sb->do_as_root("master", q/FLUSH TABLES/); + $sb->wipe_clean($dbh); ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); diff --git a/t/pt-table-checksum/pt-136.t b/t/pt-table-checksum/pt-136.t new file mode 100644 index 00000000..7124c9df --- /dev/null +++ b/t/pt-table-checksum/pt-136.t @@ -0,0 +1,55 @@ +#!/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'); + +if ( !$dbh ) { + plan skip_all => 'Cannot connect to sandbox master'; +} +else { + plan tests => 2; +} + +$sb->load_file('master', 't/pt-table-checksum/samples/pt-136.sql'); +# The sandbox servers run with lock_wait_timeout=3 and it's 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 @args = ($master_dsn); +my $output; +my $exit_status; + +$output = output( + sub { $exit_status = pt_table_checksum::main(@args) }, + stderr => 1, +); + +is( + $exit_status, + 0, + "Checksum columns with mismatching collaitons", +); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +exit; diff --git a/t/pt-table-checksum/resume.t b/t/pt-table-checksum/resume.t index 7ab947c3..d45c286e 100644 --- a/t/pt-table-checksum/resume.t +++ b/t/pt-table-checksum/resume.t @@ -100,7 +100,7 @@ $output = output( is( $output, - "", + '', "Resume with nothing to do" ); @@ -267,13 +267,13 @@ is_deeply( like( $first_tbl, qr/sakila.payment$/, - "Resumed from sakila.payment" + "Resuming from sakila.payment" ); like( $output, - qr/^Resuming from sakila.payment chunk 7, timestamp 2011-10-15 13:00:28\n/, - "Resumed from sakila.payment chunk 7" + qr/^Resuming from sakila.payment chunk 7, timestamp 2011-10-15 13:00:28/s, + "Resuming from sakila.payment chunk 7" ); is( @@ -564,7 +564,7 @@ $output = output( (undef, undef, $first_tbl) = split /\n/, $output; like( $first_tbl, - qr/test.t1$/, + qr/test.t1/, "Resumed from test.t1" ); @@ -622,7 +622,7 @@ $output = output( (undef, undef, $first_tbl) = split /\n/, $output; like( $first_tbl, - qr/test.t1$/, + qr/test.t1/, "Resumed from test.t1" ); diff --git a/t/pt-table-checksum/samples/char-chunk-ascii-explain.txt b/t/pt-table-checksum/samples/char-chunk-ascii-explain.txt index 6b038e14..d497a349 100644 --- a/t/pt-table-checksum/samples/char-chunk-ascii-explain.txt +++ b/t/pt-table-checksum/samples/char-chunk-ascii-explain.txt @@ -2,7 +2,7 @@ -- test.ascii -- -REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `i`, `c`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`ascii` FORCE INDEX(`c`) WHERE ((`c` >= ?)) AND ((`c` <= ?)) /*checksum chunk*/ +REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `i`, convert(`c` using utf8mb4))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`ascii` FORCE INDEX(`c`) WHERE ((`c` >= ?)) AND ((`c` <= ?)) /*checksum chunk*/ REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `test`.`ascii` FORCE INDEX(`c`) WHERE ((`c` < ?)) ORDER BY `c` /*past lower chunk*/ diff --git a/t/pt-table-checksum/samples/chunkidx005.txt b/t/pt-table-checksum/samples/chunkidx005.txt index a6177f19..e4b0d417 100644 --- a/t/pt-table-checksum/samples/chunkidx005.txt +++ b/t/pt-table-checksum/samples/chunkidx005.txt @@ -2,7 +2,7 @@ -- sakila.city -- -REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `city_id`, `city`, `country_id`, UNIX_TIMESTAMP(`last_update`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `sakila`.`city` FORCE INDEX(`PRIMARY`) WHERE ((`city_id` >= ?)) AND ((`city_id` <= ?)) AND (country_id > 100) /*checksum chunk*/ +REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `city_id`, convert(`city` using utf8mb4), `country_id`, UNIX_TIMESTAMP(`last_update`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `sakila`.`city` FORCE INDEX(`PRIMARY`) WHERE ((`city_id` >= ?)) AND ((`city_id` <= ?)) AND (country_id > 100) /*checksum chunk*/ REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `sakila`.`city` FORCE INDEX(`PRIMARY`) WHERE ((`city_id` < ?)) AND (country_id > 100) ORDER BY `city_id` /*past lower chunk*/ diff --git a/t/pt-table-checksum/samples/default-results-5.7.txt b/t/pt-table-checksum/samples/default-results-5.7.txt index 07d21438..7e8648f4 100644 --- a/t/pt-table-checksum/samples/default-results-5.7.txt +++ b/t/pt-table-checksum/samples/default-results-5.7.txt @@ -1,20 +1,18 @@ ERRORS DIFFS ROWS SKIPPED TABLE 0 0 0 0 mysql.columns_priv 0 0 0 0 mysql.db -0 0 0 0 mysql.engine_cost +0 0 2 0 mysql.engine_cost 0 0 0 0 mysql.event 0 0 0 0 mysql.func 0 0 0 0 mysql.gtid_executed -0 0 0 0 mysql.help_category -0 0 0 0 mysql.help_keyword -0 0 0 0 mysql.help_relation -0 0 0 0 mysql.help_topic +0 0 40 0 mysql.help_category +0 0 682 0 mysql.help_keyword +0 0 1340 0 mysql.help_relation +0 0 637 0 mysql.help_topic 0 0 0 0 mysql.ndb_binlog_index -0 0 0 0 mysql.plugin -0 0 36 0 mysql.proc 0 0 0 0 mysql.procs_priv -0 0 1 0 mysql.proxies_priv -0 0 0 0 mysql.server_cost +0 0 0 0 mysql.proxies_priv +0 0 6 0 mysql.server_cost 0 0 0 0 mysql.servers 0 0 0 0 mysql.tables_priv 0 0 0 0 mysql.time_zone @@ -23,7 +21,7 @@ ERRORS DIFFS ROWS SKIPPED TABLE 0 0 0 0 mysql.time_zone_transition 0 0 0 0 mysql.time_zone_transition_type 0 0 2 0 mysql.user -0 0 19 0 percona_test.checksums +0 0 23 0 percona_test.checksums 0 0 1 0 percona_test.load_data 0 0 1 0 percona_test.sentinel 0 0 200 0 sakila.actor diff --git a/t/pt-table-checksum/samples/dot.out b/t/pt-table-checksum/samples/dot.out index 003d2880..b7df5c73 100644 --- a/t/pt-table-checksum/samples/dot.out +++ b/t/pt-table-checksum/samples/dot.out @@ -2,7 +2,7 @@ -- test.t -- -REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `no.`, `foo.bar`, CONCAT(ISNULL(`foo.bar`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` >= ?)) AND ((`no.` <= ?)) /*checksum chunk*/ +REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', convert(`no.` using utf8mb4), convert(`foo.bar` using utf8mb4), CONCAT(ISNULL(`foo.bar`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` >= ?)) AND ((`no.` <= ?)) /*checksum chunk*/ REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` < ?)) ORDER BY `no.` /*past lower chunk*/ diff --git a/t/pt-table-checksum/samples/issue_1651002.sql b/t/pt-table-checksum/samples/issue_1651002.sql index a6b9706e..a657a1a7 100644 --- a/t/pt-table-checksum/samples/issue_1651002.sql +++ b/t/pt-table-checksum/samples/issue_1651002.sql @@ -49,7 +49,3 @@ create table test4 ( insert into test3(id, name) values(15034, '51707'),(1, '001'); insert into test4(id, name) values(15034, '051707'),(1, '1'); --- set sql_log_bin=0; --- DROP USER 'slave_user'; --- set sql_log_bin=1; --- FLUSH PRIVILEGES; diff --git a/t/pt-table-checksum/samples/issue_602.sql b/t/pt-table-checksum/samples/issue_602.sql index 53eac1f9..a41d3280 100644 --- a/t/pt-table-checksum/samples/issue_602.sql +++ b/t/pt-table-checksum/samples/issue_602.sql @@ -1,3 +1,6 @@ +-- For MySQL 5.7+ +set sql_mode='ALLOW_INVALID_DATES'; + -- Issue 602: mk-table-checksum issue with invalid dates drop database if exists issue_602; create database issue_602; diff --git a/t/pt-table-checksum/samples/oversize-chunks.txt b/t/pt-table-checksum/samples/oversize-chunks.txt index 21fcb183..3888ce25 100644 --- a/t/pt-table-checksum/samples/oversize-chunks.txt +++ b/t/pt-table-checksum/samples/oversize-chunks.txt @@ -2,7 +2,7 @@ -- osc.t2 -- -REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `c`, CONCAT(ISNULL(`c`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NULL OR `c` >= ?))) AND (((? IS NULL OR `c` <= ?))) /*checksum chunk*/ +REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', convert(`c` using utf8mb4), CONCAT(ISNULL(`c`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NULL OR `c` >= ?))) AND (((? IS NULL OR `c` <= ?))) /*checksum chunk*/ REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `osc`.`t2` FORCE INDEX(`c`) WHERE ((((? IS NOT NULL AND `c` IS NULL) OR (`c` < ?)))) ORDER BY `c` /*past lower chunk*/ diff --git a/t/pt-table-checksum/samples/pt-136.sql b/t/pt-table-checksum/samples/pt-136.sql new file mode 100644 index 00000000..1c259a71 --- /dev/null +++ b/t/pt-table-checksum/samples/pt-136.sql @@ -0,0 +1,6 @@ +CREATE DATABASE db1; +USE db1; +CREATE TABLE cp1251(f1 VARCHAR(100) CHARACTER SET LATIN1, f2 VARCHAR(100) CHARACTER SET CP1251) ENGINE=InnoDB; +SET NAMES UTF8; +INSERT INTO cp1251 VALUES('Sveta', 'Света'); + diff --git a/t/pt-table-checksum/samples/static-chunk-size-results-5.7.txt b/t/pt-table-checksum/samples/static-chunk-size-results-5.7.txt index bd26725f..f6755a93 100644 --- a/t/pt-table-checksum/samples/static-chunk-size-results-5.7.txt +++ b/t/pt-table-checksum/samples/static-chunk-size-results-5.7.txt @@ -1,20 +1,18 @@ ERRORS DIFFS ROWS CHUNKS SKIPPED TABLE 0 0 0 1 0 mysql.columns_priv 0 0 0 1 0 mysql.db -0 0 0 1 0 mysql.engine_cost +0 0 2 1 0 mysql.engine_cost 0 0 0 1 0 mysql.event 0 0 0 1 0 mysql.func 0 0 0 1 0 mysql.gtid_executed -0 0 0 1 0 mysql.help_category -0 0 0 1 0 mysql.help_keyword -0 0 0 1 0 mysql.help_relation -0 0 0 1 0 mysql.help_topic +0 0 40 1 0 mysql.help_category +0 0 682 1 0 mysql.help_keyword +0 0 1340 1 0 mysql.help_relation +0 0 637 1 0 mysql.help_topic 0 0 0 1 0 mysql.ndb_binlog_index -0 0 0 1 0 mysql.plugin -0 0 36 1 0 mysql.proc 0 0 0 1 0 mysql.procs_priv -0 0 1 1 0 mysql.proxies_priv -0 0 0 1 0 mysql.server_cost +0 0 0 1 0 mysql.proxies_priv +0 0 6 1 0 mysql.server_cost 0 0 0 1 0 mysql.servers 0 0 0 1 0 mysql.tables_priv 0 0 0 1 0 mysql.time_zone @@ -23,7 +21,7 @@ ERRORS DIFFS ROWS CHUNKS SKIPPED TABLE 0 0 0 1 0 mysql.time_zone_transition 0 0 0 1 0 mysql.time_zone_transition_type 0 0 2 1 0 mysql.user -0 0 19 1 0 percona_test.checksums +0 0 23 1 0 percona_test.checksums 0 0 1 1 0 percona_test.load_data 0 0 1 1 0 percona_test.sentinel 0 0 200 1 0 sakila.actor diff --git a/t/pt-table-sync/samples/issue_22.sql b/t/pt-table-sync/samples/issue_22.sql index 7d3e5cca..f0635d8e 100644 --- a/t/pt-table-sync/samples/issue_22.sql +++ b/t/pt-table-sync/samples/issue_22.sql @@ -3,7 +3,7 @@ CREATE TABLE `messages` ( `MID` int(20) NOT NULL default '0', `TID` bigint(20) NOT NULL default '0', `AUTHOR` varchar(32) NOT NULL default '', - `DATE` datetime NOT NULL default '0000-00-00 00:00:00', + `DATE` datetime NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `INTERNAL` char(1) NOT NULL default '0', `ISOPER` char(1) NOT NULL default '0', `HEADERS` text NOT NULL, diff --git a/t/pt-upgrade/diff_warnings.t b/t/pt-upgrade/diff_warnings.t index 4675756b..55b58786 100644 --- a/t/pt-upgrade/diff_warnings.t +++ b/t/pt-upgrade/diff_warnings.t @@ -38,18 +38,18 @@ sub clear_warnings { # default 5.7 mode "STRICT_TRANS_TABLES" converts truncation warnings to errors # as this is simply a change in category of difference, we disable it for -# test to work. - +# test to work. DON'T USE GLOBAL for SqlModes otherwise it will affect the server +# globally but the current connection will remain unchanged. use SqlModes; -my $modes_host1 = new SqlModes($dbh1, global=>1); -my $modes_host2 = new SqlModes($dbh2, global=>1); +my $modes_host1 = new SqlModes($dbh1); +my $modes_host2 = new SqlModes($dbh2); + $modes_host1->del('STRICT_TRANS_TABLES'); $modes_host2->del('STRICT_TRANS_TABLES'); $dbh1->do("INSERT INTO test.t VALUES (2, '', 123456789)"); $dbh2->do("INSERT INTO test.t VALUES (3, '', 123456789)"); - my $event_exec = EventExecutor->new(); my $w1 = $event_exec->get_warnings(dbh => $dbh1); my $w2 = $event_exec->get_warnings(dbh => $dbh2); diff --git a/t/pt-upgrade/samples/001/select_results/rows b/t/pt-upgrade/samples/001/select_results/rows index 3a7d7d60..9fbf9b38 100644 --- a/t/pt-upgrade/samples/001/select_results/rows +++ b/t/pt-upgrade/samples/001/select_results/rows @@ -1,31 +1,31 @@ $rows = [ [ - '1', + 1, 'a', '2013-01-01 00:00:01' ], [ - '2', + 2, 'b', '2013-01-01 00:00:02' ], [ - '3', + 3, 'c', '2013-01-01 00:00:03' ], [ - '4', + 4, 'd', '2013-01-01 00:00:04' ], [ - '5', + 5, 'e', '2013-01-01 00:00:05' ], [ - '6', + 6, 'f', '2013-01-01 00:00:06' ] diff --git a/t/pt-upgrade/samples/002/select_missing_rows_results/rows b/t/pt-upgrade/samples/002/select_missing_rows_results/rows index 3a7d7d60..9fbf9b38 100644 --- a/t/pt-upgrade/samples/002/select_missing_rows_results/rows +++ b/t/pt-upgrade/samples/002/select_missing_rows_results/rows @@ -1,31 +1,31 @@ $rows = [ [ - '1', + 1, 'a', '2013-01-01 00:00:01' ], [ - '2', + 2, 'b', '2013-01-01 00:00:02' ], [ - '3', + 3, 'c', '2013-01-01 00:00:03' ], [ - '4', + 4, 'd', '2013-01-01 00:00:04' ], [ - '5', + 5, 'e', '2013-01-01 00:00:05' ], [ - '6', + 6, 'f', '2013-01-01 00:00:06' ] diff --git a/t/pt-upgrade/samples/003/insert_truncate_warning_results/results b/t/pt-upgrade/samples/003/insert_truncate_warning_results/results index e91a6a0f..fa2c9e14 100644 --- a/t/pt-upgrade/samples/003/insert_truncate_warning_results/results +++ b/t/pt-upgrade/samples/003/insert_truncate_warning_results/results @@ -2,7 +2,7 @@ $results = { query_time => '0', warnings => { 1265 => { - code => '1265', + code => 1265, level => 'Warning', message => 'Data truncated for column \'username\' at row 1' } diff --git a/t/pt-upgrade/samples/005/error_on_host2_results/rows b/t/pt-upgrade/samples/005/error_on_host2_results/rows index 075ddaf2..a7fe97f9 100644 --- a/t/pt-upgrade/samples/005/error_on_host2_results/rows +++ b/t/pt-upgrade/samples/005/error_on_host2_results/rows @@ -1,6 +1,6 @@ $rows = [ [ - '1' + 1 ] ]; diff --git a/t/pt-upgrade/samples/007/null_results/rows b/t/pt-upgrade/samples/007/null_results/rows index 4f8c2d09..e2c381d5 100644 --- a/t/pt-upgrade/samples/007/null_results/rows +++ b/t/pt-upgrade/samples/007/null_results/rows @@ -1,10 +1,10 @@ $rows = [ [ - '1', + 1, 'a' ], [ - '2', + 2, undef ] ]; diff --git a/t/pt-upgrade/save_results.t b/t/pt-upgrade/save_results.t index b855d977..cf1a48c4 100644 --- a/t/pt-upgrade/save_results.t +++ b/t/pt-upgrade/save_results.t @@ -82,6 +82,11 @@ while ( my $sampleno = readdir $dh ) { foreach my $file ( glob("$results_dir/*") ) { my $result = basename($file); + if ($sandbox_version ge '5.7' && "${basename}_results" eq 'insert_truncate_warning_results' && + ($result eq 'query' || $result eq 'results')) { + diag ("Skipping insert_truncate_warning_results. MySQL 5.7+ strict produces errors instead of warnings"); + next; + } ok( no_diff( "$tmpdir/$result", diff --git a/util/build-packages b/util/build-packages index 9adcd78a..be56159c 100755 --- a/util/build-packages +++ b/util/build-packages @@ -133,7 +133,7 @@ update_version() { cd $BRANCH/bin for tool_file in *; do if [ $tool_file != "govendor" ]; then - sed -i'.bak' -e "s/^$tool_file [0-9]\.[0-9]\+/$tool_file $VERSION/" $tool_file + sed -i'.bak' -e "s/^$tool_file [0-9]\.[0-9][^ ]\+/$tool_file $VERSION/" $tool_file if [ $? -ne 0 ]; then die "Error updating version in $tool_file" fi @@ -342,6 +342,7 @@ prep_release_dir() { cd $RELEASE_DIR mkdir -p $PKG $PKG/bin $PKG/docs $PKG/lib ) + update_manifest for file in `cat MANIFEST`; do cp $file $RELEASE_DIR/$PKG/$file done