Simplify MySQL version checks.
This commit is contained in:
parent
a49c091457
commit
46bdd402f4
1 changed files with 20 additions and 14 deletions
|
@ -431,15 +431,21 @@ sub validate_tuner_version {
|
||||||
my ($mysqlvermajor,$mysqlverminor);
|
my ($mysqlvermajor,$mysqlverminor);
|
||||||
sub validate_mysql_version {
|
sub validate_mysql_version {
|
||||||
($mysqlvermajor,$mysqlverminor) = $myvar{'version'} =~ /(\d)\.(\d)/;
|
($mysqlvermajor,$mysqlverminor) = $myvar{'version'} =~ /(\d)\.(\d)/;
|
||||||
if ($mysqlvermajor < 5) {
|
if (!mysql_version_ge(5)) {
|
||||||
badprint "Your MySQL version ".$myvar{'version'}." is EOL software! Upgrade soon!\n";
|
badprint "Your MySQL version ".$myvar{'version'}." is EOL software! Upgrade soon!\n";
|
||||||
} elsif ($mysqlvermajor == 5) {
|
} elsif (mysql_version_ge(6)) {
|
||||||
goodprint "Currently running supported MySQL version ".$myvar{'version'}."\n";
|
|
||||||
} else {
|
|
||||||
badprint "Currently running unsupported MySQL version ".$myvar{'version'}."\n";
|
badprint "Currently running unsupported MySQL version ".$myvar{'version'}."\n";
|
||||||
|
} else {
|
||||||
|
goodprint "Currently running supported MySQL version ".$myvar{'version'}."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Checks if MySQL version is greater than equal to (major, minor)
|
||||||
|
sub mysql_version_ge {
|
||||||
|
my ($maj, $min) = @_;
|
||||||
|
return $mysqlvermajor > $maj || ($mysqlvermajor == $maj && $mysqlverminor >= ($min || 0));
|
||||||
|
}
|
||||||
|
|
||||||
# Checks for 32-bit boxes with more than 2GB of RAM
|
# Checks for 32-bit boxes with more than 2GB of RAM
|
||||||
my ($arch);
|
my ($arch);
|
||||||
sub check_architecture {
|
sub check_architecture {
|
||||||
|
@ -481,7 +487,7 @@ sub check_storage_engines {
|
||||||
$engines .= (defined $myvar{'have_isam'} && $myvar{'have_isam'} eq "YES")? greenwrap "+ISAM " : redwrap "-ISAM " ;
|
$engines .= (defined $myvar{'have_isam'} && $myvar{'have_isam'} eq "YES")? greenwrap "+ISAM " : redwrap "-ISAM " ;
|
||||||
$engines .= (defined $myvar{'have_ndbcluster'} && $myvar{'have_ndbcluster'} eq "YES")? greenwrap "+NDBCluster " : redwrap "-NDBCluster " ;
|
$engines .= (defined $myvar{'have_ndbcluster'} && $myvar{'have_ndbcluster'} eq "YES")? greenwrap "+NDBCluster " : redwrap "-NDBCluster " ;
|
||||||
print "$engines\n";
|
print "$engines\n";
|
||||||
if ($mysqlvermajor >= 5) {
|
if (mysql_version_ge(5)) {
|
||||||
# MySQL 5 servers can have table sizes calculated quickly from information schema
|
# MySQL 5 servers can have table sizes calculated quickly from information schema
|
||||||
my @templist = `mysql $mysqllogin -Bse "SELECT ENGINE,SUM(DATA_LENGTH),COUNT(ENGINE) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql') AND ENGINE IS NOT NULL GROUP BY ENGINE ORDER BY ENGINE ASC;"`;
|
my @templist = `mysql $mysqllogin -Bse "SELECT ENGINE,SUM(DATA_LENGTH),COUNT(ENGINE) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql') AND ENGINE IS NOT NULL GROUP BY ENGINE ORDER BY ENGINE ASC;"`;
|
||||||
foreach my $line (@templist) {
|
foreach my $line (@templist) {
|
||||||
|
@ -502,7 +508,7 @@ sub check_storage_engines {
|
||||||
chomp($db);
|
chomp($db);
|
||||||
if ($db eq "information_schema") { next; }
|
if ($db eq "information_schema") { next; }
|
||||||
my @ixs = (1, 6, 9);
|
my @ixs = (1, 6, 9);
|
||||||
if ($mysqlvermajor == 3 || ($mysqlvermajor == 4 && $mysqlverminor == 0)) {
|
if (!mysql_version_ge(4, 1)) {
|
||||||
# MySQL 3.23/4.0 keeps Data_Length in the 5th (0-based) column
|
# MySQL 3.23/4.0 keeps Data_Length in the 5th (0-based) column
|
||||||
@ixs = (1, 5, 8);
|
@ixs = (1, 5, 8);
|
||||||
}
|
}
|
||||||
|
@ -556,7 +562,7 @@ sub calculations {
|
||||||
exit 0;
|
exit 0;
|
||||||
}
|
}
|
||||||
# Per-thread memory
|
# Per-thread memory
|
||||||
if ($mysqlvermajor > 3) {
|
if (mysql_version_ge(4)) {
|
||||||
$mycalc{'per_thread_buffers'} = $myvar{'read_buffer_size'} + $myvar{'read_rnd_buffer_size'} + $myvar{'sort_buffer_size'} + $myvar{'thread_stack'} + $myvar{'join_buffer_size'};
|
$mycalc{'per_thread_buffers'} = $myvar{'read_buffer_size'} + $myvar{'read_rnd_buffer_size'} + $myvar{'sort_buffer_size'} + $myvar{'thread_stack'} + $myvar{'join_buffer_size'};
|
||||||
} else {
|
} else {
|
||||||
$mycalc{'per_thread_buffers'} = $myvar{'record_buffer'} + $myvar{'record_rnd_buffer'} + $myvar{'sort_buffer'} + $myvar{'thread_stack'} + $myvar{'join_buffer_size'};
|
$mycalc{'per_thread_buffers'} = $myvar{'record_buffer'} + $myvar{'record_rnd_buffer'} + $myvar{'sort_buffer'} + $myvar{'thread_stack'} + $myvar{'join_buffer_size'};
|
||||||
|
@ -585,7 +591,7 @@ sub calculations {
|
||||||
$mycalc{'pct_connections_used'} = ($mycalc{'pct_connections_used'} > 100) ? 100 : $mycalc{'pct_connections_used'} ;
|
$mycalc{'pct_connections_used'} = ($mycalc{'pct_connections_used'} > 100) ? 100 : $mycalc{'pct_connections_used'} ;
|
||||||
|
|
||||||
# Key buffers
|
# Key buffers
|
||||||
if ($mysqlvermajor > 3 && !($mysqlvermajor == 4 && $mysqlverminor == 0)) {
|
if (mysql_version_ge(4, 1)) {
|
||||||
$mycalc{'pct_key_buffer_used'} = sprintf("%.1f",(1 - (($mystat{'Key_blocks_unused'} * $myvar{'key_cache_block_size'}) / $myvar{'key_buffer_size'})) * 100);
|
$mycalc{'pct_key_buffer_used'} = sprintf("%.1f",(1 - (($mystat{'Key_blocks_unused'} * $myvar{'key_cache_block_size'}) / $myvar{'key_buffer_size'})) * 100);
|
||||||
}
|
}
|
||||||
if ($mystat{'Key_read_requests'} > 0) {
|
if ($mystat{'Key_read_requests'} > 0) {
|
||||||
|
@ -593,11 +599,11 @@ sub calculations {
|
||||||
} else {
|
} else {
|
||||||
$mycalc{'pct_keys_from_mem'} = 0;
|
$mycalc{'pct_keys_from_mem'} = 0;
|
||||||
}
|
}
|
||||||
if ($doremote eq 0 and $mysqlvermajor < 5) {
|
if ($doremote eq 0 and !mysql_version_ge(5)) {
|
||||||
my $size = 0;
|
my $size = 0;
|
||||||
$size += (split)[0] for `find $myvar{'datadir'} -name "*.MYI" 2>&1 | xargs du -L $duflags 2>&1`;
|
$size += (split)[0] for `find $myvar{'datadir'} -name "*.MYI" 2>&1 | xargs du -L $duflags 2>&1`;
|
||||||
$mycalc{'total_myisam_indexes'} = $size;
|
$mycalc{'total_myisam_indexes'} = $size;
|
||||||
} elsif ($mysqlvermajor >= 5) {
|
} elsif (mysql_version_ge(5)) {
|
||||||
$mycalc{'total_myisam_indexes'} = `mysql $mysqllogin -Bse "SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'MyISAM';"`;
|
$mycalc{'total_myisam_indexes'} = `mysql $mysqllogin -Bse "SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'MyISAM';"`;
|
||||||
}
|
}
|
||||||
if (defined $mycalc{'total_myisam_indexes'} and $mycalc{'total_myisam_indexes'} == 0) {
|
if (defined $mycalc{'total_myisam_indexes'} and $mycalc{'total_myisam_indexes'} == 0) {
|
||||||
|
@ -607,7 +613,7 @@ sub calculations {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Query cache
|
# Query cache
|
||||||
if ($mysqlvermajor > 3) {
|
if (mysql_version_ge(4)) {
|
||||||
$mycalc{'query_cache_efficiency'} = sprintf("%.1f",($mystat{'Qcache_hits'} / ($mystat{'Com_select'} + $mystat{'Qcache_hits'})) * 100);
|
$mycalc{'query_cache_efficiency'} = sprintf("%.1f",($mystat{'Qcache_hits'} / ($mystat{'Com_select'} + $mystat{'Qcache_hits'})) * 100);
|
||||||
if ($myvar{'query_cache_size'}) {
|
if ($myvar{'query_cache_size'}) {
|
||||||
$mycalc{'pct_query_cache_used'} = sprintf("%.1f",100 - ($mystat{'Qcache_free_memory'} / $myvar{'query_cache_size'}) * 100);
|
$mycalc{'pct_query_cache_used'} = sprintf("%.1f",100 - ($mystat{'Qcache_free_memory'} / $myvar{'query_cache_size'}) * 100);
|
||||||
|
@ -754,7 +760,7 @@ sub mysql_stats {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Query cache
|
# Query cache
|
||||||
if ($mysqlvermajor < 4) {
|
if (!mysql_version_ge(4)) {
|
||||||
# MySQL versions < 4.01 don't support query caching
|
# MySQL versions < 4.01 don't support query caching
|
||||||
push(@generalrec,"Upgrade MySQL to version 4+ to utilize query caching");
|
push(@generalrec,"Upgrade MySQL to version 4+ to utilize query caching");
|
||||||
} elsif ($myvar{'query_cache_size'} < 1) {
|
} elsif ($myvar{'query_cache_size'} < 1) {
|
||||||
|
@ -842,7 +848,7 @@ sub mysql_stats {
|
||||||
if ($mystat{'Open_tables'} > 0) {
|
if ($mystat{'Open_tables'} > 0) {
|
||||||
if ($mycalc{'table_cache_hit_rate'} < 20) {
|
if ($mycalc{'table_cache_hit_rate'} < 20) {
|
||||||
badprint "Table cache hit rate: $mycalc{'table_cache_hit_rate'}% (".hr_num($mystat{'Open_tables'})." open / ".hr_num($mystat{'Opened_tables'})." opened)\n";
|
badprint "Table cache hit rate: $mycalc{'table_cache_hit_rate'}% (".hr_num($mystat{'Open_tables'})." open / ".hr_num($mystat{'Opened_tables'})." opened)\n";
|
||||||
if ($mysqlvermajor eq 6 || ($mysqlvermajor eq 5 && $mysqlverminor ge 1)) {
|
if (mysql_version_ge(5, 1)) {
|
||||||
push(@adjvars,"table_cache (> ".$myvar{'table_open_cache'}.")");
|
push(@adjvars,"table_cache (> ".$myvar{'table_open_cache'}.")");
|
||||||
} else {
|
} else {
|
||||||
push(@adjvars,"table_cache (> ".$myvar{'table_cache'}.")");
|
push(@adjvars,"table_cache (> ".$myvar{'table_cache'}.")");
|
||||||
|
@ -874,7 +880,7 @@ sub mysql_stats {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Performance options
|
# Performance options
|
||||||
if ($mysqlvermajor == 3 || ($mysqlvermajor == 4 && $mysqlverminor == 0)) {
|
if (!mysql_version_ge(4, 1)) {
|
||||||
push(@generalrec,"Upgrade to MySQL 4.1+ to use concurrent MyISAM inserts");
|
push(@generalrec,"Upgrade to MySQL 4.1+ to use concurrent MyISAM inserts");
|
||||||
} elsif ($myvar{'concurrent_insert'} eq "OFF") {
|
} elsif ($myvar{'concurrent_insert'} eq "OFF") {
|
||||||
push(@generalrec,"Enable concurrent_insert by setting it to 'ON'");
|
push(@generalrec,"Enable concurrent_insert by setting it to 'ON'");
|
||||||
|
|
Loading…
Reference in a new issue