mysql_tuning
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| mysql_tuning [2024-11-13 10:50:00] – [mysqltuner.pl] manfred | mysql_tuning [2026-05-22 10:14:22] (aktuell) – [Beispiel MySQL 8.0 mit 16GB RAM] manfred | ||
|---|---|---|---|
| Zeile 57: | Zeile 57: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | |||
| + | ==== I/ | ||
| + | |||
| + | <code bash> | ||
| + | iostat -x 1 / | ||
| + | IOPS = r/s + w/s | ||
| + | |||
| + | 2209-4900 wkB/s → Write throughput | ||
| + | | ||
| + | 2200-5200 IOPS | ||
| + | |||
| + | innodb_io_capacity -> durchschnittliche IOPS des Datenträgers | ||
| + | innodb_io_capacity_max -> maximale IOPS des Datenträgers | ||
| + | |||
| + | innodb_redo_log_capacity = Schreibrate * 10 Minuten (abhängig von innodb_flush_method) = innodb_redo_log_capacity -> ca.~ 5–15% vom innodb_buffer_pool_size | ||
| + | bei O_DSYNC und O_DIRECT sollte innodb_redo_log_capacity etwas größer sein (z.B.: 32G) | ||
| + | aber bei innodb_fast_shutdown=0 kann innodb_redo_log_capacity wieder deutlich kleiner sein (z.B.: 8G) | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | ### bei O_DSYNC und O_DIRECT sollte innodb_redo_log_capacity etwas größer sein => innodb_redo_log_capacity=32G | ||
| + | ### aber wenn innodb_fast_shutdown = 0, dann kann innodb_redo_log_capacity deutlich kleiner => innodb_redo_log_capacity=8G | ||
| + | ### SET GLOBAL innodb_io_capacity=3000; | ||
| + | innodb_io_capacity | ||
| + | innodb_io_capacity_max | ||
| + | innodb_redo_log_capacity | ||
| + | innodb_buffer_pool_instances | ||
| + | join_buffer_size | ||
| + | tmp_table_size | ||
| + | max_heap_table_size | ||
| + | |||
| + | ### LRU Scan Depth bestimmt, wie weit InnoDB vorausschaut, | ||
| + | ### Zu klein: Threads warten auf freie Pages, „buffer pool free list“ wird knapp, spontane Flush-Spikes | ||
| + | ### Zu groß: hohe CPU-Last im Hintergrund, | ||
| + | ### echo "SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME IN (' | ||
| + | ### Innodb_buffer_pool_wait_free | ||
| + | ### Innodb_buffer_pool_pages_free ~ 0 (sollte mind. bei 1-5% vom Buffer Pool sein) # innodb_lru_scan_depth & innodb_io_capacity erhöhen | ||
| + | ### echo "SET GLOBAL innodb_lru_scan_depth=1024;" | ||
| + | ### Innodb_buffer_pool_pages_total = Innodb_buffer_pool_size / Innodb_page_size | ||
| + | ### max. Innodb_buffer_pool_pages_free = Innodb_buffer_pool_pages_total / 20 | ||
| + | ### min. Innodb_buffer_pool_pages_free = Innodb_buffer_pool_pages_total / 100 | ||
| + | ### max. Innodb_buffer_pool_pages_free = 4194304 / 20 = ca. 210000 freie Pages | ||
| + | ### min. Innodb_buffer_pool_pages_free = 4194304 / 100 = ca. 42000 freie Pages | ||
| + | # | ||
| + | # | ||
| + | innodb_lru_scan_depth | ||
| + | ################################################################################ | ||
| + | innodb_page_cleaners | ||
| + | innodb_flush_log_at_trx_commit | ||
| + | sync_binlog | ||
| + | innodb_doublewrite_batch_size | ||
| + | innodb_doublewrite_pages | ||
| + | ################################################################################ | ||
| + | </ | ||
| + | |||
| + | <file bash / | ||
| + | [mysqld] | ||
| + | ### https:// | ||
| + | ### 4. Configure InnoDB for Max Flushing. | ||
| + | ### SET GLOBAL innodb_fast_shutdown=0; | ||
| + | ### SHOW VARIABLES LIKE ' | ||
| + | innodb_fast_shutdown = 0 | ||
| + | # | ||
| + | innodb_max_dirty_pages_pct = 50 # damit sie schneller startet | ||
| + | # | ||
| + | innodb_max_dirty_pages_pct_lwm = 20 # damit sie schneller startet | ||
| + | innodb_change_buffering = ' | ||
| + | </ | ||
| Zeile 416: | Zeile 485: | ||
| ==== mysqltuner.pl funktioniert nicht mit PXC ==== | ==== mysqltuner.pl funktioniert nicht mit PXC ==== | ||
| - | <code c> | + | <code c Der Fehler> |
| # wget http:// | # wget http:// | ||
| # perl mysqltuner.pl --forcemem 8000000000 --forceswap 8000000000 --defaults-file / | # perl mysqltuner.pl --forcemem 8000000000 --forceswap 8000000000 --defaults-file / | ||
| Zeile 435: | Zeile 504: | ||
| </ | </ | ||
| - | <code c> | + | <code c Fehler nachstellen> |
| # / | # / | ||
| mysql: [ERROR] unknown option ' | mysql: [ERROR] unknown option ' | ||
| </ | </ | ||
| - | <code c> | + | <code c Client-Ursprung ermitteln> |
| # dpkg -S mysql | grep -F bin | grep -E mysql$ | # dpkg -S mysql | grep -F bin | grep -E mysql$ | ||
| percona-xtradb-cluster-client-5.7: | 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=/ | ||
| </ | </ | ||
/home/http/wiki/data/attic/mysql_tuning.1731495000.txt · Zuletzt geändert: von manfred
