Abstimmen eines MySQL-servers

Ich habe einen MySQL-server geerbt, und so habe ich mit dem Ausführen des MySQLTuner.pl-Skripts begonnen. Ich bin kein MySQL-Experte, aber ich kann sehen, dass es definitiv ein Chaos hier gibt. Ich bin nicht auf der search nach jedem einzelnen Ding, das Fixierung und Tuning zu gehen, aber ich möchte die großen, tief hängenden Frucht zu greifen.

Gesamtspeicher auf dem System ist: 512MB. Ja, ich weiß, es ist niedrig, aber das haben wir vorläufig.

Hier ist das, was das Drehbuch zu sagen hatte:

General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance MySQL started within last 24 hours - recommendations may be inaccurate Enable the slow query log to troubleshoot bad queries When making adjustments, make tmp_table_size/max_heap_table_size equal Reduce your SELECT DISTINCT queries without LIMIT clauses Increase table_cache gradually to avoid file descriptor limits Your applications are not closing MySQL connections properly Variables to adjust: query_cache_limit (> 1M, or use smaller result sets) tmp_table_size (> 16M) max_heap_table_size (> 16M) table_cache (> 64) innodb_buffer_pool_size (>= 326M) 

Für die variables, die es empfiehlt, dass ich mich anpasse, sehe ich nicht einmal die meisten von ihnen in der file mysql.cnf.

 [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] innodb_buffer_pool_size = 220M innodb_flush_log_at_trx_commit = 2 innodb_file_per_table = 1 innodb_thread_concurrency = 32 skip-locking big-tables max_connections = 50 innodb_lock_wait_timeout = 600 slave_transaction_retries = 10 innodb_table_locks = 0 innodb_additional_mem_pool_size = 20M user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking bind-address = localhost key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 4 myisam-recover = BACKUP query_cache_limit = 1M query_cache_size = 16M log_error = /var/log/mysql/error.log expire_logs_days = 10 max_binlog_size = 100M skip-locking innodb_file_per_table = 1 big-tables [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] [isamchk] key_buffer = 16M !includedir /etc/mysql/conf.d/ 

2 Solutions collect form web for “Abstimmen eines MySQL-servers”

Ein direktes Zitat aus einem aktuellen Percona Whitepaper:

"Die beiden wichtigsten Einstellungen für InnoDB sind die Pufferpoolgröße und die Größe der Protokolldatei. Fast jede andere Einstellung im server kann bei der Vorgabe verbleiben, ohne viel Schaden zu verursachen – oder zumindest sind die Vorgaben in vielen Fällen akzeptabel – aber Diese beiden Einstellungen können nicht auf ihre Standardwerte gelassen werden und sind für Produktionsserver nie akzeptabel. "

Prost

Zuerst ist die Art und Weise, wie die file my.cnf funktioniert, dass wenn eine configurationsrichtlinie nicht in der file ist, wird davon ausgegangen, dass sie der Standardwert ist. (Das heißt, wenn die my.cnf file vollständig leer ist, wären alle configurationsoptionen auf die my.cnf gesetzt.) Also, wenn du zum Beispiel auf diesen Vorschlag handeln wolltest:

 tmp_table_size (> 16M) 

… du würdest diese Zeile einfach zu deiner my.cnf file my.cnf :

 tmp_table_size 32M 

(Ich schlage vor , die MySQL-Dokumentation zu überprüfen, bevor ich zu weit von den Anregungen des Skripts abweiche, aber Sie klingen vorsichtig genug, dass Sie das schon beabsichtigten.)

Es klingt wie einige der Dinge, die Sie implementieren müssen, wird in Ihrer Anwendung sein (z. B. Sicherstellen, dass Verbindungen ordnungsgemäß geschlossen sind, Optimierungen von Abfragen usw.). Wie Sie das tun, wird sich darauf verlassen, wie diese Anwendung gebaut wird und welche Sprachbindungen Sie verwenden.

  • Umgang mit niedrigen Angreifern?
  • MySQL Redundanz für Hochverfügbarkeit über das Internet
  • Wie man eigentlich mysql Sklave verwendet, sobald der Master Failover ist oder verbrannt wurde
  • MySQL erlaubt passwortlose Logins, lass mich nichts laufen lassen
  • PHP & MySQL auf Mac OS X: Zugriff verweigert für GUI Benutzer
  • MySQL Slave Replikation zurücksetzen ohne Master Downtime (mit MyISAM)
  • MySQL (lokaler) Besitzer und permissions
  • Installation von MySQL hängt auf Ubuntu 16.04
  • MySQL Master-Master Replikation aller databaseen. Wie?
  • CentOS 7.2, PHP 5.4 - MySQL-Erweiterung fehlt
  • Auf der search nach Vergleichen von Disk I / O für einen dedizierten MySQL server
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.