- MySQLTuner steps
- Get login information steps
- System checks
- Server version checks
- MySQL Storage engine general information
- Security checks
- CVE checks
- Database information
- Index information
- Connections information
- Server information
- Sort, join and temp table information
- Global buffer information
- Query cache checks
- Slow queries checks
- Replication checks
- InnoDB information
- ARIADB information
- MYISAM information
- GALERA information
- TOKUDB information
- ThreadPool information
- Header Print
- Get login information
- Set up some OS variables
- Toss variables/status into hashes
- Get information about the tuning connexion
- Check current MySQL version
- Suggest 64-bit upgrade
- Show enabled storage engines
- Show informations about databases (option: --dbstat)
- Show informations about indexes (option: --idxstat)
- Display some security recommendations
- Calculate everything we need
- Print the server stats
- Print MyISAM stats
- Print InnoDB stats
- Print AriaDB stats
- Print replication info
- Make recommendations based on stats
- Close reportfile if needed
- Dump result if debug is on
- Is a login possible?
- Force socket?
- Remote connection?
- Specifying available RAM is required
- Got user/pass on command line?
- mysql-quickbackup credentials available?
- Plesk credentials available?
- DirectAdmin credentials available?
- Debian maintenance account credentials available?
- Just try a login
- If working, and .my.cnf isn't there, WARNING
- If working, and .my.cnf is there, okay
- Prompt for creds on the console
- 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 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)
- EOL MySQL version check
- Currently MySQL < 5.1 are EOF considerated.
- Using 5.5+ version of MySQL for performance issue (asynchronous IO).
- Get storage engine counts/stats
- Check for DB engines that are enabled but unused
- Look for fragmented tables
- Look for auto-increments near capacity
- Look for table with autoincrement with value near max capacity
- Is anonymous user present?
- Users without passwords
- Users w/username as password
- 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)
- option: --cvefile
- Check if your MariaDB or MySQL version contains CVE bulletins.
- Per database information
* Tables number
- Rows number
- Total size
- Data size
- Percentage of data size
- Index size
- Percentage of index size
- Collation number
- Check that there is only one collation for all table in a database
- Check that there is only one collation for ll table columns in a database
- Check that there is only one storage engine per user database
- Top 10 worth selectivity index
- Per index information
- Index Cardinality
- Index Selectivity
- Misc information about index definition
- Misc information about index size
- Highest usage of available connections
- Percentage of used connections (<85%)
- Percentage of aborted connections (<3%)
- Uptime: If MySQL started within last 24 hours
- Bytes received and sent
- Number of connections
- Percentage between reads and writes
- Is binary log activated ?
- Is GTID mode activated ?
- Max memory temporary table size allowed.
- Percentage of sort using temporary table (<10%)
- Number of join performed without using indexes (<250)
- Percentage of temporary table written on disk(<25%)
- Thread cache (=4)
- Table cache hit ratio(>2°%)
- Percentage of open file and open file limit(<85%)
- Percentage of table locks (<95%)
- Percentage of binlog cache lock (<90%)
- Key Buffer
- Max Tmp Table
- Per Thread Buffer
- Read Buffer
- Read RND Buffer
- Sort Buffer
- Thread stack
- Join Buffer
- Binlog Cache Buffers size if activated
- Is Query cache activated ?
- Query Cache Buffers
- Query Cache DISABLED, ALL REQUEST or ON DEMAND
- Query Cache Size
- Query cache hit ratio (cache efficienty)
- Get total RAM/swap
- Is there enought memory for max connections reached by MySQL ?
- Is there enought memory for max connections allowed by MySQL ?
- Max percentage of memory used(<85%)
- Percentage of Slow queries (<5%)
- Is server replication configuarted as slave ?
- SQL replacation thread running ?
- IO replacation thread running ?
- Replication lag in seconds
- Is Slave configuratedd in read only ?
- InnoDB Buffer Pool Size
- If possible, innodb_buffer_pool_size should be greater data and index size for Innodb Table
- Innodb_buffer_pool_size should around 75 to 80 % of the available system memory.
- InnoDB Buffer Pool Instances
- 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 uUsage
- If more than 20% of InnoDB buffer pool is not used, MySQLTuner raise an alert.
- InnoDB Read effiency
- Ratio of read without locks
- InnoDB Write effiency
- Ratio of write without locks
- InnoDB Log Waits
- Checks that no lock is used on Innodb Log.
- Is Aria indexes size is greater than page cache size ?
- Page cache read hit ratio (>95%)
- Page cache write hit ratio (>95%)
- Key buffer usage (>90%)
- Is MyISAM indexes size is greater than key buffer size ?
- Key buffer read hit ratio (>95%)
- Key buffer write hit ratio (>95%)
- wsrep_ready cluster is ready
- wsrep_connected node is connected to other nodes
- wsrep_cluster_status PRIMARY /NON PRIMARY.
- PRIMARY : Coherent cluster
- NO PRIMARY : cluster gets several states
- wsrep_ local_state_comment: Node state
- SYNCED (uptodate),
- DONOR(sending information to another node)
- Joiner(Try to reach cluster group)
- SYNCED state able to read/write
- wsrep_cluster_conf_id configuration level must be identical in all nodes
- wsrep_last_commited committed level must be identical in all nodes
- tokudb_cache_size
- tokudb_directio
- tokudb_empty_scan
- tokudb_read_block_size
- tokudb_commit_sync
- tokudb_checkpointing_period
- tokudb_block_size
- tokudb_cleaner_iterations
- tokudb_fanout
- thread_pool_size between 16 to 36 for Innodb usage
- thread_pool_size between 4 to 8 for MyIsam usage