mysql_tuning
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| mysql_tuning [2021-10-25 12:55:44] – [Ab MySQL 8.0] manfred | mysql_tuning [2024-11-13 11:33:51] (aktuell) – [mysqltuner.pl funktioniert nicht mit PXC] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== MySQL Tuning ===== | + | ====== MySQL Tuning |
| - | siehe: [[MySQL | + | siehe auch: |
| + | * [[https:// | ||
| + | * ''> | ||
| + | * ''> | ||
| + | * '' | ||
| + | * [[::MySQL - Benchmark]] | ||
| + | * [[:: | ||
| + | * [[::MySQL Tuning]] | ||
| - | ==== Ab MySQL 8.0 ==== | + | ===== Ab MySQL 8.0 ===== |
| * [[https:// | * [[https:// | ||
| Zeile 22: | Zeile 29: | ||
| Datenverlust ist möglich, wenn sich Redo-Log-Dateien und Datendateien auf unterschiedlichen Speichergeräten befinden und ein unerwartetes Beenden auftritt, bevor Datendatei-Schreibvorgänge aus einem nicht batteriegepufferten Geräte-Cache geleert werden. Wenn Sie unterschiedliche Speichergeräte für Redo-Log-Dateien und Datendateien verwenden oder verwenden möchten und sich Ihre Datendateien auf einem Gerät mit einem nicht batteriegepufferten Cache befinden, verwenden Sie stattdessen **'' | Datenverlust ist möglich, wenn sich Redo-Log-Dateien und Datendateien auf unterschiedlichen Speichergeräten befinden und ein unerwartetes Beenden auftritt, bevor Datendatei-Schreibvorgänge aus einem nicht batteriegepufferten Geräte-Cache geleert werden. Wenn Sie unterschiedliche Speichergeräte für Redo-Log-Dateien und Datendateien verwenden oder verwenden möchten und sich Ihre Datendateien auf einem Gerät mit einem nicht batteriegepufferten Cache befinden, verwenden Sie stattdessen **'' | ||
| - | * siehe auch: | + | * **//siehe auch://** |
| * **[[https:// | * **[[https:// | ||
| * Auf Plattformen, | * Auf Plattformen, | ||
| Zeile 31: | Zeile 38: | ||
| Es sollten von der MySQL-DB nur max. 84% des RAM belegt werden. | Es sollten von der MySQL-DB nur max. 84% des RAM belegt werden. | ||
| - | innodb_buffer_pool_size + ( max_allowed_packet * max_connections ) <= 84% RAM | + | innodb_buffer_pool_size + ( max_allowed_packet * max_connections ) <= 70-84% RAM |
| beide Konfigurationen belegen so ziehmlich die gleiche Menge RAM: | beide Konfigurationen belegen so ziehmlich die gleiche Menge RAM: | ||
| Zeile 52: | Zeile 59: | ||
| - | ==== Bis MySQL 5.7 ==== | + | ===== Bis MySQL 5.7 ===== |
| * [[http:// | * [[http:// | ||
| Zeile 162: | Zeile 169: | ||
| query_cache_size= 512M | query_cache_size= 512M | ||
| query_cache_type= 1 | query_cache_type= 1 | ||
| + | |||
| Zeile 335: | Zeile 343: | ||
| [server] | [server] | ||
| sql-mode="" | sql-mode="" | ||
| + | |||
| + | |||
| + | ==== Performance Schema ==== | ||
| + | |||
| + | |||
| + | |||
| + | === getestet mit Ubuntu 14.04.5 LTS / mysqld 5.7.21 === | ||
| + | |||
| + | <file sql events_statements_history.sql> | ||
| + | SELECT * FROM performance_schema.setup_consumers; | ||
| + | |||
| + | SET GLOBAL show_compatibility_56 = ON; | ||
| + | |||
| + | SELECT left(digest_text, | ||
| + | , ROUND(SUM(timer_end-timer_start)/ | ||
| + | , ROUND(SUM(timer_wait)/ | ||
| + | , ROUND(SUM(lock_time)/ | ||
| + | , MIN(LEFT(DATE_SUB(NOW(), | ||
| + | , MAX(LEFT(DATE_SUB(NOW(), | ||
| + | , COUNT(*) as cnt | ||
| + | FROM performance_schema.events_statements_history | ||
| + | JOIN information_schema.global_status AS isgs | ||
| + | WHERE isgs.variable_name = ' | ||
| + | GROUP BY LEFT(digest_text, | ||
| + | ORDER BY tot_exec_ms DESC | ||
| + | LIMIT 10; | ||
| + | </ | ||
| + | |||
| + | <file sql events_statements_history_long.sql> | ||
| + | SELECT * FROM performance_schema.setup_consumers; | ||
| + | |||
| + | UPDATE performance_schema.setup_consumers SET enabled = 1 WHERE name = ' | ||
| + | SET GLOBAL show_compatibility_56 = ON; | ||
| + | |||
| + | SELECT left(digest_text, | ||
| + | , ROUND(SUM(timer_end-timer_start)/ | ||
| + | , ROUND(SUM(timer_wait)/ | ||
| + | , ROUND(SUM(lock_time)/ | ||
| + | , MIN(LEFT(DATE_SUB(NOW(), | ||
| + | , MAX(LEFT(DATE_SUB(NOW(), | ||
| + | , COUNT(*) as cnt | ||
| + | FROM performance_schema.events_statements_history_long | ||
| + | JOIN information_schema.global_status AS isgs | ||
| + | WHERE isgs.variable_name = ' | ||
| + | GROUP BY LEFT(digest_text, | ||
| + | ORDER BY tot_exec_ms DESC | ||
| + | LIMIT 10; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== mysqltuner.pl ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * '' | ||
| + | * [[https:// | ||
| + | |||
| + | > perl mysqltuner.pl --user root --pass geheim --host 192.168.1.1 --port 3306 | ||
| + | | ||
| + | oder | ||
| + | | ||
| + | > touch ~/.my.cnf | ||
| + | > chmod 0600 ~/.my.cnf | ||
| + | > vi ~/.my.cnf | ||
| + | > perl mysqltuner.pl --defaults-file ~/.my.cnf | ||
| + | |||
| + | für Zugriffe über das Netz, hier muß der Option '' | ||
| + | > perl mysqltuner.pl --forcemem 4096 --forceswap 4096 --user root --pass geheim --host 192.168.1.1 --port 3306 | ||
| + | |||
| + | > perl mysqltuner.pl --defaults-file ~/.my.cnf 2>&1 | tee mysqltuner_-_$(date +' | ||
| + | |||
| + | |||
| + | ==== mysqltuner.pl funktioniert nicht mit PXC ==== | ||
| + | |||
| + | <code c Der Fehler> | ||
| + | # wget http:// | ||
| + | # perl mysqltuner.pl --forcemem 8000000000 --forceswap 8000000000 --defaults-file / | ||
| + | >> | ||
| + | * Jean-Marie Renouard < | ||
| + | * Major Hayden < | ||
| + | >> | ||
| + | >> | ||
| + | |||
| + | [--] Skipped version check for MySQLTuner script | ||
| + | mysql: [ERROR] unknown option ' | ||
| + | mysql: [ERROR] unknown option ' | ||
| + | [--] Assuming 8000000000 MB of physical memory | ||
| + | [--] Assuming 8000000000 MB of swap space | ||
| + | [!!] Failed to execute: SELECT VERSION() | ||
| + | [!!] FAIL Execute SQL / return code: 1792 | ||
| + | [!!] You probably do not have enough privileges to run MySQLTuner ... | ||
| + | </ | ||
| + | |||
| + | <code c Fehler nachstellen> | ||
| + | # / | ||
| + | mysql: [ERROR] unknown option ' | ||
| + | </ | ||
| + | |||
| + | <code c Client-Ursprung ermitteln> | ||
| + | # dpkg -S mysql | grep -F bin | grep -E mysql$ | ||
| + | percona-xtradb-cluster-client-5.7: | ||
| + | </ | ||
| + | |||
| + | <code c Der Grund steht in der Hilfe> | ||
| + | # / | ||
| + | ... | ||
| + | The following options may be given as the first argument: | ||
| + | --print-defaults | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | <code c Test ist nicht befriedigend> | ||
| + | # / | ||
| + | / | ||
| + | --port=3306 --socket=/ | ||
| + | </ | ||
| Zeile 359: | Zeile 482: | ||
| | | ||
| replicate_wild_ignore_table | replicate_wild_ignore_table | ||
| + | |||
| + | |||
| + | ===== MyISAM-Tuning ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | prüfen, ob '' | ||
| + | > echo "SHOW STATUS LIKE ' | ||
| + | Wert ist sehr gut (12570.9) | ||
| + | | ||
| + | > echo "SHOW STATUS LIKE ' | ||
| + | +---------------+---------+ | ||
| + | | Variable_name | Value | | ||
| + | +---------------+---------+ | ||
| + | | Key_reads | ||
| + | +---------------+---------+ | ||
| + | +-------------------+-------------+ | ||
| + | | Variable_name | ||
| + | +-------------------+-------------+ | ||
| + | | Key_read_requests | 19943598300 | | ||
| + | +-------------------+-------------+ | ||
| + | |||
| + | // | ||
| + | |||
/home/http/wiki/data/attic/mysql_tuning.1635166544.txt · Zuletzt geändert: von manfred
