Aria/MyISAM cleanup
Include calculation of Aria index size based of *.MAI files. Use find -0 | xargs -0 to allow for space containing names. Quote datadir in find in case it had spaces. Use xargs -r (GNU extension) (supported Linux, FreeBSD, OpenBSD, NetBSD, not Solaris, not OSX) to not run if there's no files that match. This prevents it running the total of the current directory if there are no M[YA]I files. A total size of 0 for Aria or MyISAM indexes isn't a problem because: * MySQL-5.[567] used MyISAM system tables which have indexes, so 0 wasn't possible (except for remote user without mysql.* access). * 0 size of index is equally likely to be 0 tables of this type (e.g. MySQL-8.0, or MariaDB-10.4+ (Aria default, not MyISAM)). Setting total_aria_indexes=1 when it was previously 0 is misleading. Aria was never called AriaDB despite the apparent convention in other storage engines so use just Aria, or Aria Storage Engine in messages. Differentiate between Aria not available and disabled in report.
This commit is contained in:
parent
9a9ff555ee
commit
99e5c83779
1 changed files with 26 additions and 44 deletions
|
@ -403,7 +403,7 @@ sub pretty_uptime {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Retrieves the memory installed on this machine
|
# Retrieves the memory installed on this machine
|
||||||
my ( $physical_memory, $swap_memory, $duflags );
|
my ( $physical_memory, $swap_memory, $duflags, $xargsflags );
|
||||||
|
|
||||||
sub memerror {
|
sub memerror {
|
||||||
badprint
|
badprint
|
||||||
|
@ -414,6 +414,7 @@ sub memerror {
|
||||||
sub os_setup {
|
sub os_setup {
|
||||||
my $os = `uname`;
|
my $os = `uname`;
|
||||||
$duflags = ( $os =~ /Linux/ ) ? '-b' : '';
|
$duflags = ( $os =~ /Linux/ ) ? '-b' : '';
|
||||||
|
$xargsflags = ( $os =~ /Darwin|SunOS/ ) ? '' : '-r';
|
||||||
if ( $opt{'forcemem'} > 0 ) {
|
if ( $opt{'forcemem'} > 0 ) {
|
||||||
$physical_memory = $opt{'forcemem'} * 1048576;
|
$physical_memory = $opt{'forcemem'} * 1048576;
|
||||||
infoprint "Assuming $opt{'forcemem'} MB of physical memory";
|
infoprint "Assuming $opt{'forcemem'} MB of physical memory";
|
||||||
|
@ -2562,9 +2563,12 @@ sub calculations {
|
||||||
my $size = 0;
|
my $size = 0;
|
||||||
$size += (split)[0]
|
$size += (split)[0]
|
||||||
for
|
for
|
||||||
`find $myvar{'datadir'} -name "*.MYI" 2>&1 | xargs du -L $duflags 2>&1`;
|
`find "$myvar{'datadir'}" -name "*.MYI" -print0 2>&1 | xargs $xargsflags -0 du -L $duflags 2>&1`;
|
||||||
$mycalc{'total_myisam_indexes'} = $size;
|
$mycalc{'total_myisam_indexes'} = $size;
|
||||||
$mycalc{'total_aria_indexes'} = 0;
|
$size = 0 + (split)[0]
|
||||||
|
for
|
||||||
|
`find "$myvar{'datadir'}" -name "*.MAI" -print0 2>&1 | xargs $xargsflags -0 du -L $duflags 2>&1`;
|
||||||
|
$mycalc{'total_aria_indexes'} = $size;
|
||||||
}
|
}
|
||||||
elsif ( mysql_version_ge(5) ) {
|
elsif ( mysql_version_ge(5) ) {
|
||||||
$mycalc{'total_myisam_indexes'} = select_one
|
$mycalc{'total_myisam_indexes'} = select_one
|
||||||
|
@ -2572,20 +2576,10 @@ sub calculations {
|
||||||
$mycalc{'total_aria_indexes'} = select_one
|
$mycalc{'total_aria_indexes'} = select_one
|
||||||
"SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'Aria';";
|
"SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'Aria';";
|
||||||
}
|
}
|
||||||
if ( defined $mycalc{'total_myisam_indexes'}
|
if ( defined $mycalc{'total_myisam_indexes'} ) {
|
||||||
and $mycalc{'total_myisam_indexes'} == 0 )
|
|
||||||
{
|
|
||||||
$mycalc{'total_myisam_indexes'} = "fail";
|
|
||||||
}
|
|
||||||
elsif ( defined $mycalc{'total_myisam_indexes'} ) {
|
|
||||||
chomp( $mycalc{'total_myisam_indexes'} );
|
chomp( $mycalc{'total_myisam_indexes'} );
|
||||||
}
|
}
|
||||||
if ( defined $mycalc{'total_aria_indexes'}
|
if ( defined $mycalc{'total_aria_indexes'} ) {
|
||||||
and $mycalc{'total_aria_indexes'} == 0 )
|
|
||||||
{
|
|
||||||
$mycalc{'total_aria_indexes'} = 1;
|
|
||||||
}
|
|
||||||
elsif ( defined $mycalc{'total_aria_indexes'} ) {
|
|
||||||
chomp( $mycalc{'total_aria_indexes'} );
|
chomp( $mycalc{'total_aria_indexes'} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3390,19 +3384,11 @@ sub mysql_myisam {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Key buffer
|
# Key buffer
|
||||||
if ( !defined( $mycalc{'total_myisam_indexes'} ) and $doremote == 1 ) {
|
if ( !defined( $mycalc{'total_myisam_indexes'} ) ) {
|
||||||
push( @generalrec,
|
push( @generalrec,
|
||||||
"Unable to calculate MyISAM indexes on remote MySQL server < 5.0.0"
|
"Unable to calculate MyISAM index size on MySQL server < 5.0.0"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
elsif ( $mycalc{'total_myisam_indexes'} =~ /^fail$/ ) {
|
|
||||||
badprint
|
|
||||||
"Cannot calculate MyISAM index size - re-run script as root user";
|
|
||||||
}
|
|
||||||
elsif ( $mycalc{'total_myisam_indexes'} == "0" ) {
|
|
||||||
badprint
|
|
||||||
"None of your MyISAM tables are indexed - add indexes immediately";
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
if ( $myvar{'key_buffer_size'} < $mycalc{'total_myisam_indexes'}
|
if ( $myvar{'key_buffer_size'} < $mycalc{'total_myisam_indexes'}
|
||||||
&& $mycalc{'pct_keys_from_mem'} < 95 )
|
&& $mycalc{'pct_keys_from_mem'} < 95 )
|
||||||
|
@ -5032,31 +5018,27 @@ sub mysqsl_pfs {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Recommendations for Ariadb
|
# Recommendations for Aria Engine
|
||||||
sub mariadb_ariadb {
|
sub mariadb_aria {
|
||||||
subheaderprint "AriaDB Metrics";
|
subheaderprint "Aria Metrics";
|
||||||
|
|
||||||
# AriaDB
|
# Aria
|
||||||
unless ( defined $myvar{'have_aria'}
|
if ( ! defined $myvar{'have_aria'} )
|
||||||
and $myvar{'have_aria'} eq "YES" )
|
|
||||||
{
|
{
|
||||||
infoprint "AriaDB is disabled.";
|
infoprint "Aria Storage Engine not available.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
infoprint "AriaDB is enabled.";
|
if ( $myvar{'have_aria'} ne "YES" )
|
||||||
|
{
|
||||||
|
infoprint "Aria Storage Engine is disabled.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
infoprint "Aria Storage Engine is enabled.";
|
||||||
|
|
||||||
# Aria pagecache
|
# Aria pagecache
|
||||||
if ( !defined( $mycalc{'total_aria_indexes'} ) and $doremote == 1 ) {
|
if ( !defined( $mycalc{'total_aria_indexes'} ) ) {
|
||||||
push( @generalrec,
|
push( @generalrec,
|
||||||
"Unable to calculate Aria indexes on remote MySQL server < 5.0.0" );
|
"Unable to calculate Aria index size on MySQL server" );
|
||||||
}
|
|
||||||
elsif ( $mycalc{'total_aria_indexes'} =~ /^fail$/ ) {
|
|
||||||
badprint
|
|
||||||
"Cannot calculate Aria index size - re-run script as root user";
|
|
||||||
}
|
|
||||||
elsif ( $mycalc{'total_aria_indexes'} == "0" ) {
|
|
||||||
badprint
|
|
||||||
"None of your Aria tables are indexed - add indexes immediately";
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (
|
if (
|
||||||
|
@ -6389,7 +6371,7 @@ mysqsl_pfs; # Print Performance schema info
|
||||||
mariadb_threadpool; # Print MariaDB ThreadPool stats
|
mariadb_threadpool; # Print MariaDB ThreadPool stats
|
||||||
mysql_myisam; # Print MyISAM stats
|
mysql_myisam; # Print MyISAM stats
|
||||||
mysql_innodb; # Print InnoDB stats
|
mysql_innodb; # Print InnoDB stats
|
||||||
mariadb_ariadb; # Print MariaDB AriaDB stats
|
mariadb_aria; # Print MariaDB Aria stats
|
||||||
mariadb_tokudb; # Print MariaDB Tokudb stats
|
mariadb_tokudb; # Print MariaDB Tokudb stats
|
||||||
mariadb_xtradb; # Print MariaDB XtraDB stats
|
mariadb_xtradb; # Print MariaDB XtraDB stats
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue