From eea101019e3db09d331b19957bb033097973c084 Mon Sep 17 00:00:00 2001 From: Ricardo Velhote Date: Wed, 13 Apr 2016 14:39:40 +0100 Subject: [PATCH 1/7] Detect Ubuntu correctly when checking for OS Release --- mysqltuner.pl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mysqltuner.pl b/mysqltuner.pl index 5d43784..8e43a9e 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -1107,6 +1107,15 @@ sub get_other_process_memory { } sub get_os_release { + if( -f "/etc/lsb-release") { + my @info_release = get_file_contents "/etc/lsb-release"; + remove_cr @info_release; + my $os_relase = $info_release[3]; + $os_relase =~ s/.*="//; + $os_relase =~ s/"$//; + return $os_relase; + } + if( -f "/etc/system-release") { my @info_release = get_file_contents "/etc/system-release"; remove_cr @info_release; From 67c80de3da43d285e7a73e09994fbcf6dfe601da Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 19:27:14 +0200 Subject: [PATCH 2/7] Add a Code of Conduct from http://contributor-covenant.org/ --- CODE_OF_CONDUCT.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c2b34e6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,14 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion. + +Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) + From 0ffe9507b660e35d76fbe86be5539f4dfb822523 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 22:42:59 +0200 Subject: [PATCH 3/7] #187 #183 removing unitialized variables code #184 adding merge between show global variables and show global variables #184 update RPM template' --- build/mysqltuner.spec.tpl | 2 +- mysqltuner.pl | 72 +++++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/build/mysqltuner.spec.tpl b/build/mysqltuner.spec.tpl index 1fde663..22c4027 100644 --- a/build/mysqltuner.spec.tpl +++ b/build/mysqltuner.spec.tpl @@ -46,6 +46,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/* %changelog -* Thu Jan 5 2015 Jean-Marie RENOUARD %VERSION%-1 +* Thu Apr 14 20145 Jean-Marie RENOUARD %VERSION%-1 - Initial RPM release diff --git a/mysqltuner.pl b/mysqltuner.pl index 8e43a9e..af33278 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -157,7 +157,7 @@ sub usage { . " --debug Print debug information\n" . " --dbstat Print database information\n" . " --idxstat Print index information\n" - . "--sysstat Print system information\n" + . " --sysstat Print system information\n" . " --bannedports Ports banned separated by comma(,)\n" . " --maxportallowed Number of ports opened allowed on this hosts\n" . " --cvefile CVE File for vulnerability checks\n" @@ -933,31 +933,40 @@ sub get_tuning_info { # Populates all of the variable and status hashes my ( %mystat, %myvar, $dummyselect, %myrepl, %myslaves ); -sub get_all_vars { +sub arr2hash { + my $href=shift; + my $harr=shift; + my $sep=shift; + $sep='\s' unless defined($sep); + foreach my $line (@$harr) { + $line =~ /([a-zA-Z_]*)\s*$sep\s*(.*)/; + $$href{$1} = $2; + debugprint "V: $1 = $2"; + } +} +sub get_all_vars { # We need to initiate at least one query so that our data is useable $dummyselect = select_one "SELECT VERSION()"; debugprint "VERSION: " . $dummyselect . ""; $result{'MySQL Client'}{'Version'} = $dummyselect; - my @mysqlvarlist = select_array "SHOW /*!50000 GLOBAL */ VARIABLES"; - foreach my $line (@mysqlvarlist) { - $line =~ /([a-zA-Z_]*)\s*(.*)/; - $myvar{$1} = $2; - $result{'Variables'}{$1} = $2; - debugprint "V: $1 = $2"; - } - my @mysqlstatlist = select_array "SHOW /*!50000 GLOBAL */ STATUS"; - foreach my $line (@mysqlstatlist) { - $line =~ /([a-zA-Z_]*)\s*(.*)/; - $mystat{$1} = $2; - $result{'Status'}{$1} = $2; - debugprint "S: $1 = $2"; - } + + my @mysqlvarlist = select_array ("SHOW GLOBAL VARIABLES"); + push (@mysqlvarlist, select_array ("SHOW VARIABLES")); + arr2hash(\%myvar, \@mysqlvarlist); + $result{'Variables'}=%myvar; + + my @mysqlstatlist = select_array ("SHOW GLOBAL STATUS"); + push (@mysqlstatlist, select_array ("SHOW STATUS")); + arr2hash(\%mystat, \@mysqlstatlist); + $result{'Status'}=%mystat; + $myvar{'have_galera'} = "NO"; if ( defined($myvar{'wsrep_provider_options'}) && $myvar{'wsrep_provider_options'} ne "") { $myvar{'have_galera'} = "YES"; - debugprint "Galera options: ". $myvar{'wsrep_provider_options'}; + debugprint "Galera options: ". $myvar{'wsrep_provider_options'}; } + # Workaround for MySQL bug #59393 wrt. ignore-builtin-innodb if ( ( $myvar{'ignore_builtin_innodb'} || "" ) eq "ON" ) { $myvar{'have_innodb'} = "NO"; @@ -990,16 +999,9 @@ sub get_all_vars { } } debugprint Dumper(@mysqlenginelist); - my @mysqlslave = select_array "SHOW SLAVE STATUS\\G"; - - foreach my $line (@mysqlslave) { - if ( $line =~ /\s*(.*):\s*(.*)/ ) { - debugprint "$1 => $2"; - $myrepl{"$1"} = $2; - $result{'Replication'}{'Status'}{$1} = $2; - } - } - + my @mysqlslave = select_array("SHOW SLAVE STATUS\\G"); + arr2hash(\%myrepl, \@mysqlslave, ':'); + $result{'Replication'}{'Status'}=%myrepl; my @mysqlslaves = select_array "SHOW SLAVE HOSTS"; my @lineitems = (); foreach my $line (@mysqlslaves) { @@ -1138,9 +1140,7 @@ sub get_os_release { $os_relase =~ s/\s+\\n.*//; return $os_relase; } - return "Unknown OS release"; - } sub get_fs_info() { @@ -1178,6 +1178,20 @@ sub get_fs_info() { } } +sub merge_hash +{ + my $h1=shift; + my $h2=shift; + my %result={}; + foreach my $substanceref ( $h1, $h2 ) { + while ( my ($k, $v) = each %$substanceref) { + next if (exists $result{$k}); + $result{$k} = $v; + } + } + return \%result; +} + sub is_virtual_machine() { my $isVm = `grep -Ec '^flags.*\ hypervisor\ ' /proc/cpuinfo`; return ( $isVm == 0 ? 0 : 1 ); From ba584c91ccd1116980b86f70012ff8ee8c8c4281 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 22:49:21 +0200 Subject: [PATCH 4/7] Update version #183 --- mysqltuner.pl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mysqltuner.pl b/mysqltuner.pl index af33278..58d0612 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# mysqltuner.pl - Version 1.6.9 +# mysqltuner.pl - Version 1.6.10 # High Performance MySQL Tuning Script # Copyright (C) 2006-2016 Major Hayden - major@mhtx.net # @@ -51,7 +51,7 @@ use Data::Dumper; $Data::Dumper::Pair = " : "; # Set up a few variables for use in the script -my $tunerversion = "1.6.9"; +my $tunerversion = "1.6.10"; my ( @adjvars, @generalrec ); # Set defaults @@ -966,7 +966,7 @@ sub get_all_vars { $myvar{'have_galera'} = "YES"; debugprint "Galera options: ". $myvar{'wsrep_provider_options'}; } - + # Workaround for MySQL bug #59393 wrt. ignore-builtin-innodb if ( ( $myvar{'ignore_builtin_innodb'} || "" ) eq "ON" ) { $myvar{'have_innodb'} = "NO"; @@ -3845,7 +3845,7 @@ __END__ =head1 NAME - MySQLTuner 1.6.8 - MySQL High Performance Tuning Script + MySQLTuner 1.6.10 - MySQL High Performance Tuning Script =head1 IMPORTANT USAGE GUIDELINES From d09cb777739bec7ee86be83baf7af883d0116a06 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 22:50:13 +0200 Subject: [PATCH 5/7] Update usage file --- USAGE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/USAGE.md b/USAGE.md index c5fbc92..8742623 100644 --- a/USAGE.md +++ b/USAGE.md @@ -1,6 +1,6 @@ # NAME - MySQLTuner 1.6.8 - MySQL High Performance Tuning Script + MySQLTuner 1.6.10 - MySQL High Performance Tuning Script # IMPORTANT USAGE GUIDELINES @@ -39,6 +39,7 @@ You must provide the remote server's total memory when connecting to other serve --debug Print debug information --dbstat Print database information --idxstat Print index information + --sysstat Print system information --bannedports Ports banned separated by comma(,) --maxportallowed Number of ports opened allowed on this hosts --cvefile CVE File for vulnerability checks From 81100f3bba095b27f43c9edaa8286d7388a55d91 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 22:52:13 +0200 Subject: [PATCH 6/7] Last fix on template --- build/mysqltuner.spec.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/mysqltuner.spec.tpl b/build/mysqltuner.spec.tpl index 22c4027..e4cfcb8 100644 --- a/build/mysqltuner.spec.tpl +++ b/build/mysqltuner.spec.tpl @@ -46,6 +46,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/* %changelog -* Thu Apr 14 20145 Jean-Marie RENOUARD %VERSION%-1 +* Thu Apr 14 2016 Jean-Marie RENOUARD %VERSION%-1 - Initial RPM release From 66a57af80b13a0141c424b0e1bc606200ba68fb6 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2016 23:11:18 +0200 Subject: [PATCH 7/7] #182 using abs value for result --- mysqltuner.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysqltuner.pl b/mysqltuner.pl index 58d0612..8ad63de 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -3341,8 +3341,8 @@ sub mysql_innodb { && $mycalc{'pct_write_efficiency'} < 90 ) { badprint "InnoDB Write Log efficiency: " - . $mycalc{'pct_write_efficiency'} . "% (" - . ( $mystat{'Innodb_log_write_requests'} - + . abs($mycalc{'pct_write_efficiency'}) . "% (" + . abs( $mystat{'Innodb_log_write_requests'} - $mystat{'Innodb_log_writes'} ) . " hits/ " . $mystat{'Innodb_log_write_requests'}