From b5d1650f5955f2e3d3ee15f0513e92612b473a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20=27Pessoft=27=20Kol=C3=ADnek?= Date: Sat, 9 Sep 2017 13:22:30 +0200 Subject: [PATCH] add general recommendation for innodb log file changes add information to INTERNALS.md about innodb log file to buffer pool ratio fix buffer pool typos in comments fix code formatting a bit --- INTERNALS.md | 30 ++++++++++++++++-------------- mysqltuner.pl | 32 +++++++++++++++++--------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/INTERNALS.md b/INTERNALS.md index 722aa56..fe46977 100644 --- a/INTERNALS.md +++ b/INTERNALS.md @@ -72,7 +72,7 @@ ## MySQLTuner system checks * 32-bit w/>2GB RAM check * Check number of opened ports (warning if more than 9 ports opened) -* Check 80, 8080, 443 and 8443 ports if warning are raised if there are opened +* Check 80, 8080, 443 and 8443 ports if warning are raised if there are opened * Check if some banned ports are not opened (option --bannedports separated by comma) * Check if non kernel and user process except mysqld are not using more than 15% of total physical memory) * Check vm.swapiness @@ -103,7 +103,7 @@ * Users w/o host restriction * Weak password check (possibly using cracklib later?) * Using basic_passwords.txt as password database -* Password list checks can be avoid (option: --skippassword) +* Password list checks can be avoid (option: --skippassword) ## MySQLTuner CVE vulnerabilities detection @@ -131,7 +131,7 @@ * Per index information * Index Cardinality * Index Selectivity - * Misc information about index definition + * Misc information about index definition * Misc information about index size ## MySQLTuner Connections information @@ -180,7 +180,7 @@ * Query Cache DISABLED, ALL REQUEST or ON DEMAND * Query Cache Size * Query cache hit ratio (cache efficienty) - + ## MySQLTuner memory checks * Get total RAM/swap @@ -209,8 +209,10 @@ * MySQL needs 1 instanes per 1Go of Buffer Pool * innodb_buffer_pool instances = round(innodb_buffer_pool_size / 1Go) * innodb_buffer_pool instances must be equals or lower than 64 -* InnoDB Buffer Pool Usage +* InnoDB Buffer Pool Usage * If more than 20% of InnoDB buffer pool is not used, MySQLTuner raise an alert. +* InnoDB Buffer Pool Log Size + * InnoDB total log file size should be 25% of innodb_buffer_pool_size * InnoDB Read effiency * Ratio of read without locks * InnoDB Write effiency @@ -225,7 +227,7 @@ * Is Aria indexes size is greater than page cache size ? * Page cache read hit ratio (>95%) * Page cache write hit ratio (>95%) - + ## MySQLTuner MYISAM information @@ -264,13 +266,13 @@ ## MySQLTuner TokuDB information -* tokudb_cache_size -* tokudb_directio +* tokudb_cache_size +* tokudb_directio * tokudb_empty_scan * tokudb_read_block_size * tokudb_commit_sync * tokudb_checkpointing_period -* tokudb_block_size +* tokudb_block_size * tokudb_cleaner_iterations * tokudb_fanout @@ -289,7 +291,7 @@ ## MySQLTuner RocksDb information * Nothing for the moment - + ## MySQLTuner Thread pool information * thread_pool_size between 16 to 36 for Innodb usage @@ -352,9 +354,9 @@ * Event per wait total latency * Event per wait read latency * Event per wait write latency -* TOP 15 most read indexes +* TOP 15 most read indexes * TOP 15 most modified indexes -* TOP 15 high select latency index +* TOP 15 high select latency index * TOP 15 high insert latency index * TOP 15 high update latency index * TOP 15 high delete latency index @@ -383,7 +385,7 @@ * TOP 15 merge queries with sort * TOP 15 average sort merges queries with sort * TOP 15 scans queries with sort -* TOP 15 range queries with sort +* TOP 15 range queries with sort * Top 20 queries with temp table * Last 50 queries with temp table * TOP 15 total latency queries with temp table @@ -393,4 +395,4 @@ * TOP 15 class events by total latency * TOP 30 events by total latency * TOP 15 class events by max latency -* TOP 30 events by max latency \ No newline at end of file +* TOP 30 events by max latency diff --git a/mysqltuner.pl b/mysqltuner.pl index 84bbb8f..b14f699 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -2645,7 +2645,7 @@ sub mysql_stats { if ( defined $myvar{'query_cache_type'} ) { infoprint "Query Cache Buffers"; - infoprint " +-- Query Cache: " + infoprint " +-- Query Cache: " . $myvar{'query_cache_type'} . " - " . ( $myvar{'query_cache_type'} eq 0 | @@ -5382,7 +5382,7 @@ sub mysql_innodb { . $myvar{'innodb_thread_concurrency'}; } - # InnoDB Buffer Pull Size + # InnoDB Buffer Pool Size if ( $myvar{'innodb_file_per_table'} eq "ON" ) { goodprint "InnoDB File per table is activated"; } @@ -5391,7 +5391,7 @@ sub mysql_innodb { push( @adjvars, "innodb_file_per_table=ON" ); } - # InnoDB Buffer Pull Size + # InnoDB Buffer Pool Size if ( $myvar{'innodb_buffer_pool_size'} > $enginestats{'InnoDB'} ) { goodprint "InnoDB buffer pool / data size: " . hr_bytes( $myvar{'innodb_buffer_pool_size'} ) . "/" @@ -5416,12 +5416,15 @@ sub mysql_innodb { . hr_bytes( $myvar{'innodb_buffer_pool_size'} ) . " should be equal 25%"; push( @adjvars, - "innodb_log_file_size should be (=" - . hr_bytes_rnd( - $myvar{'innodb_buffer_pool_size'} / - $myvar{'innodb_log_files_in_group'} / 4 - ) - . ") if possible, so InnoDB total log files size equals to 25% of buffer pool size." + "innodb_log_file_size should be (=" + . hr_bytes_rnd( + $myvar{'innodb_buffer_pool_size'} / + $myvar{'innodb_log_files_in_group'} / 4 + ) + . ") if possible, so InnoDB total log files size equals to 25% of buffer pool size." + ); + push( @generalrec, +"Read this before changing innodb_log_file_size and/or innodb_log_files_in_group: http://bit.ly/2wgkDvS" ); } else { @@ -5432,7 +5435,7 @@ sub mysql_innodb { . " should be equal 25%"; } - # InnoDB Buffer Pull Instances (MySQL 5.6.6+) + # InnoDB Buffer Pool Instances (MySQL 5.6.6+) if ( defined( $myvar{'innodb_buffer_pool_instances'} ) ) { # Bad Value if > 64 @@ -5442,12 +5445,12 @@ sub mysql_innodb { push( @adjvars, "innodb_buffer_pool_instances (<= 64)" ); } - # InnoDB Buffer Pull Size > 1Go + # InnoDB Buffer Pool Size > 1Go if ( $myvar{'innodb_buffer_pool_size'} > 1024 * 1024 * 1024 ) { -# InnoDB Buffer Pull Size / 1Go = InnoDB Buffer Pull Instances limited to 64 max. +# InnoDB Buffer Pool Size / 1Go = InnoDB Buffer Pool Instances limited to 64 max. - # InnoDB Buffer Pull Size > 64Go + # InnoDB Buffer Pool Size > 64Go my $max_innodb_buffer_pool_instances = int( $myvar{'innodb_buffer_pool_size'} / ( 1024 * 1024 * 1024 ) ); $max_innodb_buffer_pool_instances = 64 @@ -5468,7 +5471,7 @@ sub mysql_innodb { . $myvar{'innodb_buffer_pool_instances'} . ""; } - # InnoDB Buffer Pull Size < 1Go + # InnoDB Buffer Pool Size < 1Go } else { if ( $myvar{'innodb_buffer_pool_instances'} != 1 ) { @@ -6381,4 +6384,3 @@ along with this program. If not, see . # cperl-indent-level: 8 # perl-indent-level: 8 # End: -