MySQLTuner-perl/INTERNALS.md
Jean-Marie Renouard bc3e067454 Update INTERNALS.md
2015-08-19 12:05:49 +02:00

3 KiB

MySQLTuner Internals

MySQLTuner steps

  • 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 InnoDB stats
  • Print replication info
  • Make recommendations based on stats
  • Close reportfile if needed
  • Dump result if debug is on

MySQLTuner get login information steps

  • 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

MySQLTuner system checks

  • Get total RAM/swap
  • 32-bit w/>2GB RAM check

MySQLTuner Server version checks

  • EOL MySQL version check
  • Currently MySQL < 5.1 are EOF considerated.

MySQL Storage engine general information

  • Get storage engine counts/stats
    • Check for DB engines that are enabled but unused
    • Look for fragmented tables
    • Look for auto-increments near capacity

MySQLTuner security checks

  • 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)

MySQLTuner database information

  • Rows number
  • Total size
  • Data size
  • Percentage of data size
  • Index size
  • Percentage of index size

MySQLTuner index information

  • Top 10 worth selectivity index
  • Index Cardinality
  • Index Selectivity
  • Misc information about index definition
  • Misc information about index size

MySQLTuner Connections information

  • TODO

MySQLTuner InnoDB information

  • 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.

MySQLTuner ARIADB information

  • TODO

MySQLTuner MYISAM information

  • TODO